Szybki start: konwertowanie tekstu na mowę przy użyciu interfejsu OpenAI Azure w modelach Microsoft Foundry (wersja klasyczna)

Dotyczy tylko:Portal Foundry (klasyczny). Ten artykuł nie jest dostępny w nowym portalu Foundry. Dowiedz się więcej o nowym portalu.

Uwaga

Linki w tym artykule mogą otwierać zawartość w nowej dokumentacji Microsoft Foundry, w przeciwieństwie do dokumentacji Foundry (klasycznej), którą przeglądasz obecnie.

W tym szybkim przewodniku pokazano, jak przekształcić tekst na mowę przy użyciu głosów Azure OpenAI.

Dostępne głosy to: alloy, echo, fable, onyx, nova, i shimmer. Aby uzyskać więcej informacji, zobacz dokumentację referencyjną Azure OpenAI dotyczącą zamiany tekstu na mowę.

Wymagania wstępne

Skonfigurować

Pobierz klucz i punkt końcowy

Aby pomyślnie wykonać wywołanie względem Azure OpenAI, potrzebujesz punktu końcowego (endpoint) i klucza (key).

Nazwa zmiennej Wartość
AZURE_OPENAI_ENDPOINT pl-PL: Punkt końcowy usługi można znaleźć w sekcji Keys & Endpoint podczas badania zasobu z portalu Azure. Możesz też znaleźć punkt końcowy za pośrednictwem strony Deployments w portalu Microsoft Foundry. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Tę wartość można znaleźć w Keys & Endpoint podczas przeglądania zasobu w portalu Azure. Możesz użyć KEY1 lub KEY2.

Przejdź do zasobu w portalu Azure. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ oba są potrzebne do uwierzytelniania wywołań API. Możesz użyć 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 podglądu zasobu Azure OpenAI w portalu Azure z wyróżnioną lokalizacją punktu końcowego i kluczy dostępu.

Zmienne środowiskowe

Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.

Ważne

Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w Azure Key Vault. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz API keys with Azure Key Vault (Klucze interfejsu API Azure Key Vault

Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań do usług 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

Uruchom następujące polecenie w powłoce bash. Musisz zastąpić YourDeploymentName nazwą wdrożenia wybraną podczas wdrażania modelu konwersji tekstu na mowę. 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=2025-04-01-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=2025-04-01-preview \.

Ważne

W środowisku produkcyjnym użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz ten artykuł dotyczący zabezpieczeń .

Kod źródłowy | Package (npm) | Przykłady

Wymagania wstępne

Microsoft Entra ID wymagania wstępne

W przypadku zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID należy wykonać następujące czynności:

  • Zainstaluj Azure CLI używany do uwierzytelniania bez klucza za pomocą Microsoft Entra ID.
  • Cognitive Services User Przypisz rolę do konta użytkownika. Role można przypisać w portalu Azure w obszarze Kontrolka dostępu (IAM)>Dodaj przypisanie roli.

Skonfigurować

  1. Utwórz nowy folder synthesis-quickstart i przejdź do folderu Szybki start za pomocą następującego polecenia:

    mkdir synthesis-quickstart && cd synthesis-quickstart
    
  2. Utwórz element package.json za pomocą następującego polecenia:

    npm init -y
    
  3. Zainstaluj bibliotekę klienta openAI dla języka JavaScript za pomocą następujących narzędzi:

    npm install openai
    
  4. W przypadku zalecanego uwierzytelniania bez hasła:

    npm install @azure/identity
    

Pobieranie informacji o zasobie

Musisz pobrać następujące informacje, aby uwierzytelnić aplikację przy użyciu zasobu Azure OpenAI:

Nazwa zmiennej Wartość
AZURE_OPENAI_ENDPOINT Tę wartość można znaleźć w sekcji Keys i Endpoint podczas badania zasobu w portalu Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Ta wartość będzie odpowiadać nazwie niestandardowej wybranej przy wdrażaniu modelu. Tę wartość można znaleźć w obszarze Resource Management>Model Deployments w portalu Azure.

Dowiedz się więcej na temat uwierzytelniania bez klucza i ustawiania zmiennych środowiskowych.

Ostrożność

Aby użyć zalecanego uwierzytelniania bez klucza z zestawem SDK, upewnij się, że zmienna AZURE_OPENAI_API_KEY środowiskowa nie jest ustawiona.

Tworzenie pliku mowy

  1. index.js Utwórz plik przy użyciu następującego kodu:

    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 || "Your endpoint";
    const speechFilePath = "<path to save the speech file>";
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "tts";
    const apiVersion = process.env.OPENAI_API_VERSION || "2024-08-01-preview";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://ai.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. Zaloguj się do Azure przy użyciu następującego polecenia:

    az login
    
  3. Uruchom plik JavaScript.

    node index.js
    

Kod źródłowy | Package (npm) | Przykłady

Wymagania wstępne

Microsoft Entra ID wymagania wstępne

W przypadku zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID należy wykonać następujące czynności:

  • Zainstaluj Azure CLI używany do uwierzytelniania bez klucza za pomocą Microsoft Entra ID.
  • Cognitive Services User Przypisz rolę do konta użytkownika. Role można przypisać w portalu Azure w obszarze Kontrolka dostępu (IAM)>Dodaj przypisanie roli.

Skonfigurować

  1. Utwórz nowy folder assistants-quickstart i przejdź do folderu Szybki start za pomocą następującego polecenia:

    mkdir assistants-quickstart && cd assistants-quickstart
    
  2. Utwórz element package.json za pomocą następującego polecenia:

    npm init -y
    
  3. Zaktualizuj package.json do ECMAScript za pomocą następującego polecenia:

    npm pkg set type=module
    
  4. Zainstaluj bibliotekę klienta openAI dla języka JavaScript za pomocą następujących narzędzi:

    npm install openai
    
  5. W przypadku zalecanego uwierzytelniania bez hasła:

    npm install @azure/identity
    

Pobieranie informacji o zasobie

Musisz pobrać następujące informacje, aby uwierzytelnić aplikację przy użyciu zasobu Azure OpenAI:

Nazwa zmiennej Wartość
AZURE_OPENAI_ENDPOINT Tę wartość można znaleźć w sekcji Keys i Endpoint podczas badania zasobu w portalu Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Ta wartość będzie odpowiadać nazwie niestandardowej wybranej przy wdrażaniu modelu. Tę wartość można znaleźć w obszarze Resource Management>Model Deployments w portalu Azure.

Dowiedz się więcej na temat uwierzytelniania bez klucza i ustawiania zmiennych środowiskowych.

Ostrożność

Aby użyć zalecanego uwierzytelniania bez klucza z zestawem SDK, upewnij się, że zmienna AZURE_OPENAI_API_KEY środowiskowa nie jest ustawiona.

Tworzenie pliku mowy

  1. index.ts Utwórz plik przy użyciu następującego kodu:

    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 || "Your endpoint";
    const speechFilePath = "<path to save the speech file>";
    
    // Required Azure OpenAI deployment name and API version
    const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "tts";
    const apiVersion = process.env.OPENAI_API_VERSION || "2025-04-01-preview";
    
    // keyless authentication    
    const credential = new DefaultAzureCredential();
    const scope = "https://ai.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);
    });
    
    

    Import "openai/shims/node" jest konieczne podczas uruchamiania kodu w środowisku Node.js. Gwarantuje to, że typ wyjściowy client.audio.speech.create metody jest poprawnie ustawiony na NodeJS.ReadableStream.

  2. Utwórz plik tsconfig.json do transpilacji kodu TypeScript i skopiuj następujący kod ECMAScript.

    {
        "compilerOptions": {
          "module": "NodeNext",
          "target": "ES2022", // Supports top-level await
          "moduleResolution": "NodeNext",
          "skipLibCheck": true, // Avoid type errors from node_modules
          "strict": true // Enable strict type-checking options
        },
        "include": ["*.ts"]
    }
    
  3. Transpiluj z języka TypeScript do języka JavaScript.

    tsc
    
  4. Zaloguj się do Azure przy użyciu następującego polecenia:

    az login
    
  5. Uruchom kod za pomocą następującego polecenia:

    node index.js
    

Wymagania wstępne

Microsoft Entra ID wymagania wstępne

W przypadku zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID należy wykonać następujące czynności:

  • Zainstaluj Azure CLI używany do uwierzytelniania bez klucza za pomocą Microsoft Entra ID.
  • Cognitive Services User Przypisz rolę do konta użytkownika. Role można przypisać w portalu Azure w obszarze Kontrolka dostępu (IAM)>Dodaj przypisanie roli.

Skonfigurować

  1. Utwórz nowy folder to-speech-quickstart i przejdź do folderu Szybki start za pomocą następującego polecenia:

    mkdir to-speech-quickstart && cd to-speech-quickstart
    
  2. Utwórz nową aplikację konsolową za pomocą następującego polecenia:

    dotnet new console
    
  3. Zainstaluj bibliotekę klienta OpenAI .NET za pomocą polecenia dotnet add package:

    dotnet add package Azure.AI.OpenAI
    
  4. W przypadku zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID zainstaluj pakiet Azure.Identity za pomocą:

    dotnet add package Azure.Identity
    
  5. Dla zalecanego uwierzytelniania bez klucza za pomocą Microsoft Entra ID zaloguj się do platformy Azure za pomocą następującego polecenia:

    az login
    

Pobieranie informacji o zasobie

Musisz pobrać następujące informacje, aby uwierzytelnić aplikację przy użyciu zasobu Azure OpenAI:

Nazwa zmiennej Wartość
AZURE_OPENAI_ENDPOINT Tę wartość można znaleźć w sekcji Keys i Endpoint podczas badania zasobu w portalu Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Ta wartość będzie odpowiadać nazwie niestandardowej wybranej przy wdrażaniu modelu. Tę wartość można znaleźć w obszarze Resource Management>Model Deployments w portalu Azure.

Dowiedz się więcej na temat uwierzytelniania bez klucza i ustawiania zmiennych środowiskowych.

Uruchom szybki start

Przykładowy kod w tym przewodniku szybkiego startu używa usługi Microsoft Entra ID do zalecanego uwierzytelniania bez klucza. Jeśli wolisz użyć klucza interfejsu API, możesz zastąpić DefaultAzureCredential obiekt obiektem AzureKeyCredential .

AzureOpenAIClient openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()); 

Uwaga

Przykładowe pliki audio, takie jak wikipediaOcelot.wav, można pobrać z repozytorium zestawu SDK narzędzi Azure Speech in Foundry Tools w witrynie GitHub.

Aby uruchomić quickstart, wykonaj następujące kroki:

  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";
    
    AzureOpenAIClient openAIClient = new AzureOpenAIClient(endpoint, credentials);
    AudioClient 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");
    
  2. Uruchom aplikację przy użyciu polecenia dotnet run lub przycisku uruchamiania w górnej części Visual Studio:

    dotnet run
    

Wyjście

Aplikacja wygeneruje 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 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 pracy z zamianą tekstu na mowę przy użyciu Azure OpenAI w dokumentacji referencyjnej Azure OpenAI.
  • Aby uzyskać więcej przykładów, zapoznaj się z repozytorium GitHub Azure OpenAI Samples