Udostępnij za pośrednictwem


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, , echofable, 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

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.

Zrzut ekranu przedstawiający interfejs użytkownika przeglądu zasobu usługi Azure OpenAI w witrynie Azure Portal z wyróżnioną lokalizacją punktów końcowych i kluczy dostępu.

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

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

  1. 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);
    });
    
    
  2. 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

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

  1. 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ściowych client.audio.speech.create metody jest poprawnie ustawiony na NodeJS.ReadableStreamwartość .

  2. Skompiluj aplikację za pomocą następującego polecenia:

    tsc
    
  3. Uruchom aplikację za pomocą następującego polecenia:

    node Text-to-speech.js
    

Wymagania wstępne

Tworzenie aplikacji .NET

  1. Utwórz aplikację platformy .NET przy użyciu dotnet new polecenia :

    dotnet new console -n TextToSpeech
    
  2. Przejdź do katalogu nowej aplikacji:

    cd OpenAISpeech
    
  3. 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/.

Zrzut ekranu przedstawiający interfejs użytkownika przeglądu zasobu usługi Azure OpenAI w witrynie Azure Portal z wyróżnioną lokalizacją punktów końcowych i kluczy dostępu.

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:

  1. Dodaj pakiet Azure.Identity.

    dotnet add package Azure.Identity
    
  2. 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.

  3. 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

  1. 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.

  2. 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