Szybki start: zamiana tekstu na mowę za pomocą usługi Azure OpenAI Service
W tym przewodniku Szybki start użyjesz usługi Azure OpenAI Service do zamiany tekstu na mowę za pomocą głosów openAI.
Dostępne głosy to: alloy
, , echo
fable
, onyx
, nova
, i shimmer
. Aby uzyskać więcej informacji, zobacz dokumentację referencyjną usługi Azure OpenAI service dotyczącą zamiany tekstu na mowę.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Zasób usługi Azure OpenAI utworzony w regionach Północno-środkowe stany USA lub Szwecja Środkowe z wdrożonym modelem
tts-1
lubtts-1-hd
. Aby uzyskać więcej informacji, zobacz Tworzenie zasobu i wdrażanie modelu za pomocą usługi Azure OpenAI.
Konfiguruj
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w portalu usługi Azure AI Foundry. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
AZURE_OPENAI_API_KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ potrzebujesz zarówno do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1
lub KEY2
. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Tworzenie żądania REST i odpowiedzi
W powłoce bash uruchom następujące polecenie. Musisz zastąpić YourDeploymentName
ciąg nazwą wdrożenia wybraną podczas wdrażania tekstu w modelu mowy. Nazwa wdrożenia nie musi być taka sama jak nazwa modelu. Wprowadzenie nazwy modelu powoduje błąd, chyba że wybrano nazwę wdrożenia identyczną z bazową nazwą modelu.
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/YourDeploymentName/audio/speech?api-version=2024-02-15-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1-hd",
"input": "I'm excited to try text to speech.",
"voice": "alloy"
}' --output speech.mp3
Format pierwszego wiersza polecenia z przykładowym punktem końcowym będzie wyświetlany w następujący sposób curl https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \
.
Ważne
W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
Przykłady pakietu kodu źródłowego | (npm)Samples |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Wersje LTS Node.js
- Interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez hasła w lokalnym środowisku projektowym, utwórz niezbędny kontekst, logując się przy użyciu interfejsu wiersza polecenia platformy Azure.
- Zasób usługi Azure OpenAI utworzony w obsługiwanym regionie (zobacz Dostępność regionów). Aby uzyskać więcej informacji, zobacz Tworzenie zasobu i wdrażanie modelu za pomocą usługi Azure OpenAI.
Wymagania wstępne dotyczące identyfikatora entra firmy Microsoft
W przypadku zalecanego uwierzytelniania bez klucza za pomocą identyfikatora Entra firmy Microsoft należy wykonać następujące czynności:
- Zainstaluj interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez klucza za pomocą identyfikatora Entra firmy Microsoft.
Cognitive Services User
Przypisz rolę do konta użytkownika. Role można przypisać w witrynie Azure Portal w obszarze Kontrola dostępu (IAM)>Dodawanie przypisania roli.
Pobieranie informacji o zasobie
Aby uwierzytelnić aplikację przy użyciu zasobu usługi Azure OpenAI, musisz pobrać następujące informacje:
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Ta wartość będzie odpowiadać nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia modelu zarządzania>zasobami w witrynie Azure Portal. |
OPENAI_API_VERSION |
Dowiedz się więcej o wersjach interfejsu API. |
Dowiedz się więcej na temat uwierzytelniania bez klucza i ustawiania zmiennych środowiskowych.
Uwaga
Aby użyć zalecanego uwierzytelniania bez klucza z zestawem SDK, upewnij się, że zmienna AZURE_OPENAI_API_KEY
środowiskowa nie jest ustawiona.
Tworzenie aplikacji Node
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego. Następnie uruchom polecenie , npm init
aby utworzyć aplikację węzła z plikiem package.json .
npm init
Instalowanie biblioteki klienta
Zainstaluj biblioteki klienckie za pomocą następujących funkcji:
npm install openai @azure/identity
Plik package.json aplikacji zostanie zaktualizowany o zależności.
Tworzenie pliku mowy
Utwórz nowy plik o nazwie Text-to-speech.js i otwórz go w preferowanym edytorze kodu. Skopiuj następujący kod do pliku Text-to-speech.js :
const { writeFile } = require("fs/promises"); const { AzureOpenAI } = require("openai"); const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity"); require("openai/shims/node"); // You will need to set these environment variables or edit the following values const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>"; const speechFilePath = "<path to save the speech file>"; // Required Azure OpenAI deployment name and API version const deploymentName = "tts"; const apiVersion = "2024-08-01-preview"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient() { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } async function generateAudioStream( client, params ) { const response = await client.audio.speech.create(params); if (response.ok) return response.body; throw new Error(`Failed to generate audio stream: ${response.statusText}`); } export async function main() { console.log("== Text to Speech Sample =="); const client = getClient(); const streamToRead = await generateAudioStream(client, { model: deploymentName, voice: "alloy", input: "the quick brown chicken jumped over the lazy dogs", }); console.log(`Streaming response to ${speechFilePath}`); await writeFile(speechFilePath, streamToRead); console.log("Finished streaming"); } main().catch((err) => { console.error("The sample encountered an error:", err); });
Uruchom skrypt za pomocą następującego polecenia:
node Text-to-speech.js
Przykłady pakietu kodu źródłowego | (npm)Samples |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Wersje LTS Node.js
- TypeScript
- Interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez hasła w lokalnym środowisku projektowym, utwórz niezbędny kontekst, logując się przy użyciu interfejsu wiersza polecenia platformy Azure.
- Zasób usługi Azure OpenAI utworzony w obsługiwanym regionie (zobacz Dostępność regionów). Aby uzyskać więcej informacji, zobacz Tworzenie zasobu i wdrażanie modelu za pomocą usługi Azure OpenAI.
Wymagania wstępne dotyczące identyfikatora entra firmy Microsoft
W przypadku zalecanego uwierzytelniania bez klucza za pomocą identyfikatora Entra firmy Microsoft należy wykonać następujące czynności:
- Zainstaluj interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez klucza za pomocą identyfikatora Entra firmy Microsoft.
Cognitive Services User
Przypisz rolę do konta użytkownika. Role można przypisać w witrynie Azure Portal w obszarze Kontrola dostępu (IAM)>Dodawanie przypisania roli.
Pobieranie informacji o zasobie
Aby uwierzytelnić aplikację przy użyciu zasobu usługi Azure OpenAI, musisz pobrać następujące informacje:
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Ta wartość będzie odpowiadać nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia modelu zarządzania>zasobami w witrynie Azure Portal. |
OPENAI_API_VERSION |
Dowiedz się więcej o wersjach interfejsu API. |
Dowiedz się więcej na temat uwierzytelniania bez klucza i ustawiania zmiennych środowiskowych.
Uwaga
Aby użyć zalecanego uwierzytelniania bez klucza z zestawem SDK, upewnij się, że zmienna AZURE_OPENAI_API_KEY
środowiskowa nie jest ustawiona.
Tworzenie aplikacji Node
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego. Następnie uruchom polecenie , npm init
aby utworzyć aplikację węzła z plikiem package.json .
npm init
Instalowanie biblioteki klienta
Zainstaluj biblioteki klienckie za pomocą następujących funkcji:
npm install openai @azure/identity
Plik package.json aplikacji zostanie zaktualizowany o zależności.
Tworzenie pliku mowy
Utwórz nowy plik o nazwie Text-to-speech.ts i otwórz go w preferowanym edytorze kodu. Skopiuj następujący kod do pliku Text-to-speech.ts :
import { writeFile } from "fs/promises"; import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import type { SpeechCreateParams } from "openai/resources/audio/speech"; import "openai/shims/node"; // You will need to set these environment variables or edit the following values const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>"; const speechFilePath = "<path to save the speech file>"; // Required Azure OpenAI deployment name and API version const deploymentName = "tts"; const apiVersion = "2024-08-01-preview"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, apiVersion, deployment: deploymentName, }); } async function generateAudioStream( client: AzureOpenAI, params: SpeechCreateParams ): Promise<NodeJS.ReadableStream> { const response = await client.audio.speech.create(params); if (response.ok) return response.body; throw new Error(`Failed to generate audio stream: ${response.statusText}`); } export async function main() { console.log("== Text to Speech Sample =="); const client = getClient(); const streamToRead = await generateAudioStream(client, { model: deploymentName, voice: "alloy", input: "the quick brown chicken jumped over the lazy dogs", }); console.log(`Streaming response to ${speechFilePath}`); await writeFile(speechFilePath, streamToRead); console.log("Finished streaming"); } main().catch((err) => { console.error("The sample encountered an error:", err); });
Importowanie programu jest konieczne podczas uruchamiania
"openai/shims/node"
kodu w środowisku Node.js. Gwarantuje to, że typ danych wyjściowychclient.audio.speech.create
metody jest poprawnie ustawiony naNodeJS.ReadableStream
wartość .Skompiluj aplikację za pomocą następującego polecenia:
tsc
Uruchom aplikację za pomocą następującego polecenia:
node Text-to-speech.js
Wymagania wstępne
- Subskrypcja platformy Azure. Możesz utworzyć go bezpłatnie.
- Zasób usługi Azure OpenAI z modelem Whisper wdrożonym w obsługiwanym regionie. Aby uzyskać więcej informacji, zobacz Tworzenie zasobu i wdrażanie modelu za pomocą usługi Azure OpenAI.
- Zestaw .NET 8.0 SDK
Tworzenie aplikacji .NET
Utwórz aplikację platformy .NET przy użyciu
dotnet new
polecenia :dotnet new console -n TextToSpeech
Przejdź do katalogu nowej aplikacji:
cd OpenAISpeech
Zainstaluj bibliotekę
Azure.OpenAI
klienta:dotnet add package Azure.AI.OpenAI
Uwierzytelnianie i nawiązywanie połączenia z usługą Azure OpenAI
Aby wysyłać żądania do usługi Azure OpenAI, potrzebujesz punktu końcowego usługi oraz poświadczeń uwierzytelniania za pomocą jednej z następujących opcji:
Microsoft Entra ID to zalecane podejście do uwierzytelniania w usługach platformy Azure i jest bezpieczniejsze niż alternatywy oparte na kluczach.
Klucze dostępu umożliwiają podanie klucza tajnego w celu nawiązania połączenia z zasobem.
Ważne
Klucze dostępu powinny być używane ostrożnie. Jeśli klucz dostępu do usługi zostanie utracony lub przypadkowo uwidoczniony w niezabezpieczonej lokalizacji, usługa może stać się podatna na zagrożenia. Każdy, kto ma klucz dostępu, może autoryzować żądania względem usługi Azure OpenAI.
Uzyskiwanie punktu końcowego usługi Azure OpenAI
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w portalu usługi Azure AI Foundry. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/
.
Uwierzytelnianie przy użyciu identyfikatora Entra firmy Microsoft
Jeśli zdecydujesz się używać uwierzytelniania identyfikatora Entra firmy Microsoft, musisz wykonać następujące czynności:
Dodaj pakiet
Azure.Identity
.dotnet add package Azure.Identity
Cognitive Services User
Przypisz rolę do konta użytkownika. Można to zrobić w witrynie Azure Portal w zasobie OpenAI w obszarze Kontrola dostępu (IAM)>Dodawanie przypisania roli.Zaloguj się do platformy Azure przy użyciu programu Visual Studio lub interfejsu wiersza polecenia platformy Azure za pomocą polecenia
az login
.
Uwierzytelnianie przy użyciu kluczy
Wartość klucza dostępu można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz użyć wartości KEY1
lub KEY2
. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Aktualizowanie kodu aplikacji
Zastąp zawartość
program.cs
poniższym kodem i zaktualizuj wartości symboli zastępczych własnymi.using Azure; using Azure.AI.OpenAI; using Azure.Identity; // Required for Passwordless auth var endpoint = new Uri( Environment.GetEnvironmentVariable("YOUR_OPENAI_ENDPOINT") ?? throw new ArgumentNullException()); var credentials = new DefaultAzureCredential(); // Use this line for key auth // var credentials = new AzureKeyCredential( // Environment.GetEnvironmentVariable("YOUR_OPENAI_KEY") ?? throw new ArgumentNullException()); var deploymentName = "tts"; // Default deployment name, update with your own if necessary var speechFilePath = "YOUR_AUDIO_FILE_PATH"; var openAIClient = new AzureOpenAIClient(endpoint, credentials); var audioClient = openAIClient.GetAudioClient(deploymentName); var result = await audioClient.GenerateSpeechAsync( "the quick brown chicken jumped over the lazy dogs"); Console.WriteLine("Streaming response to ${speechFilePath}"); await File.WriteAllBytesAsync(speechFilePath, result.Value.ToArray()); Console.WriteLine("Finished streaming");
Ważne
W przypadku środowiska produkcyjnego przechowywanie poświadczeń i uzyskiwanie do nich dostępu przy użyciu bezpiecznej metody, takiej jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz Zabezpieczenia usług Azure AI.
Uruchom aplikację przy użyciu
dotnet run
polecenia lub przycisku Uruchom w górnej części programu Visual Studio:dotnet run
Aplikacja generuje plik audio w lokalizacji określonej dla zmiennej
speechFilePath
. Odtwórz plik na urządzeniu, aby usłyszeć wygenerowany dźwięk.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób. Przed usunięciem zasobu należy najpierw usunąć wszystkie wdrożone modele.
Następne kroki
- Dowiedz się więcej o sposobie pracy z zamianą tekstu na mowę za pomocą usługi Azure OpenAI Service w dokumentacji referencyjnej usługi Azure OpenAI Service.
- Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub przykładów usługi Azure OpenAI