Поделиться через


Краткое руководство: Быстрый старт по преобразованию текста в речь с использованием службы Azure OpenAI

В этом кратком руководстве вы используете службу Azure OpenAI для преобразования текста в речь, используя голоса OpenAI.

Доступные голоса: alloy, echo, fable, onyx, , novaи shimmer. Дополнительные сведения см. в справочной документации по службе Azure OpenAI для преобразования текста в речь.

Предварительные условия

Настройка

Получение ключа и конечной точки

Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.

Имя переменной Значение
AZURE_OPENAI_ENDPOINT Конечную точку службы можно найти в разделе "Ключи и конечная точка" при изучении вашего ресурса в портале Azure. Кроме того, можно найти конечную точку на странице "Развертывания " на портале Azure AI Foundry. Пример конечной точки: https://docs-test-001.openai.azure.com/.
AZURE_OPENAI_API_KEY Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2.

Перейдите к своему ресурсу на портале Azure. Конечную точку и ключи можно найти в разделе Управление ресурсами. Скопируйте конечную точку и ключ доступа, так как требуется для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

Снимок экрана: пользовательский интерфейс обзора для ресурса Azure OpenAI в портале Azure с выделенными расположениями конечной точки и ключей доступа.

Переменные среды

Создайте и назначьте переменные постоянной среды для ключа и конечной точки.

Внимание

Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. Если вы используете ключ API, сохраните его безопасно в Azure Key Vault. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Создание запроса и ответа REST

В оболочке bash выполните следующую команду. Необходимо заменить YourDeploymentName на имя развертывания, которое вы выбрали при развертывании модели преобразования текста в речь. Имя развертывания не обязательно совпадает с именем модели. При вводе имени модели возникает ошибка, если вы не выбрали имя развертывания, идентичное имени базовой модели.

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

Формат первой строки команды с примером конечной точки будет выглядеть следующим образом: curl https://aoai-docs.openai.azure.com/openai/deployments/{YourDeploymentName}/audio/speech?api-version=2024-02-15-preview \.

Внимание

Для рабочей среды используйте безопасный способ хранения и доступа к учетным данным, например Azure Key Vault. Дополнительные сведения о безопасности учетных данных см. в статье о безопасности служб искусственного интеллекта Azure.

Исходный код | Пакет (npm) | Примеры

Предварительные условия

Предварительные требования для идентификатора Microsoft Entra

Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:

  • Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
  • Назначьте Cognitive Services User роль вашей учетной записи пользователя. Роли можно назначить в портале Azure в разделе Контроль доступа (IAM)>Добавить назначение ролей.

Настройка

  1. Создайте новую папку synthesis-quickstart и перейдите в папку быстрого запуска, используя следующую команду:

    mkdir synthesis-quickstart && cd synthesis-quickstart
    
  2. Создайте package.json с помощью следующей команды:

    npm init -y
    
  3. Установите клиентскую библиотеку OpenAI для JavaScript с помощью:

    npm install openai
    
  4. Для рекомендуемой аутентификации без пароля:

    npm install @azure/identity
    

Получение сведений о ресурсе

Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения:

Имя переменной Значение
AZURE_OPENAI_ENDPOINT Это значение можно найти в разделе "Ключи и конечная точка" при просмотре вашего ресурса из портала Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для своей операции при развертывании модели. Это значение можно найти в разделе Управление ресурсами>Развертывания моделей в портале Azure.
OPENAI_API_VERSION Дополнительные сведения о версиях API.

Вы можете изменить версию в коде или использовать переменную среды.

Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.

Внимание

Чтобы использовать рекомендуемую проверку подлинности без ключа с пакетом SDK, убедитесь, что AZURE_OPENAI_API_KEY переменная среды не задана.

Создание файла речи

  1. index.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 || "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://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. Войдите в Azure с помощью следующей команды:

    az login
    
  3. Запустите файл JavaScript.

    node index.js
    

Исходный код | Пакет (npm) | Примеры

Предварительные условия

Предварительные требования для идентификатора Microsoft Entra

Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:

  • Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
  • Назначьте Cognitive Services User роль вашей учетной записи пользователя. Роли можно назначить в портале Azure в разделе Контроль доступа (IAM)>Добавить назначение ролей.

Настройка

  1. Создайте новую папку assistants-quickstart и перейдите в папку быстрого запуска, используя следующую команду:

    mkdir assistants-quickstart && cd assistants-quickstart
    
  2. Создайте package.json с помощью следующей команды:

    npm init -y
    
  3. Обновите package.json до ECMAScript с помощью следующей команды:

    npm pkg set type=module
    
  4. Установите клиентскую библиотеку OpenAI для JavaScript с помощью:

    npm install openai
    
  5. Для рекомендуемой аутентификации без пароля:

    npm install @azure/identity
    

Получение сведений о ресурсе

Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения:

Имя переменной Значение
AZURE_OPENAI_ENDPOINT Это значение можно найти в разделе "Ключи и конечная точка" при просмотре вашего ресурса из портала Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для своей операции при развертывании модели. Это значение можно найти в разделе Управление ресурсами>Развертывания моделей в портале Azure.
OPENAI_API_VERSION Дополнительные сведения о версиях API.

Вы можете изменить версию в коде или использовать переменную среды.

Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.

Внимание

Чтобы использовать рекомендуемую проверку подлинности без ключа с пакетом SDK, убедитесь, что AZURE_OPENAI_API_KEY переменная среды не задана.

Создание файла речи

  1. index.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 || "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://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);
    });
    
    

    Необходим импорт "openai/shims/node", когда код выполняется в среде Node.js. Гарантирует, что выходной тип метода client.audio.speech.create правильно установлен на NodeJS.ReadableStream.

  2. tsconfig.json Создайте файл для транспиля кода TypeScript и скопируйте следующий код для 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. Транспилировать код с TypeScript на JavaScript.

    tsc
    
  4. Войдите в Azure с помощью следующей команды:

    az login
    
  5. Выполните следующую команду, чтобы запустить код:

    node index.js
    

Предварительные условия

Предварительные требования для идентификатора Microsoft Entra

Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra необходимо:

  • Установите Azure CLI, используемый для проверки подлинности без ключа с помощью идентификатора Microsoft Entra.
  • Назначьте Cognitive Services User роль вашей учетной записи пользователя. Роли можно назначить в портале Azure в разделе Контроль доступа (IAM)>Добавить назначение ролей.

Настройка

  1. Создайте новую папку to-speech-quickstart и перейдите в папку быстрого запуска, используя следующую команду:

    mkdir to-speech-quickstart && cd to-speech-quickstart
    
  2. Создайте консольное приложение со следующей командой:

    dotnet new console
    
  3. Установите клиентскую библиотеку OpenAI .NET с помощью команды dotnet add package:

    dotnet add package Azure.AI.OpenAI
    
  4. Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra установите пакет Azure.Identity с помощью:

    dotnet add package Azure.Identity
    
  5. Для рекомендуемой проверки подлинности без ключа с помощью идентификатора Microsoft Entra войдите в Azure с помощью следующей команды:

    az login
    

Получение сведений о ресурсе

Чтобы проверить подлинность приложения с помощью ресурса Azure OpenAI, необходимо получить следующие сведения:

Имя переменной Значение
AZURE_OPENAI_ENDPOINT Это значение можно найти в разделе "Ключи и конечная точка" при просмотре вашего ресурса из портала Azure.
AZURE_OPENAI_DEPLOYMENT_NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для своей операции при развертывании модели. Это значение можно найти в разделе Управление ресурсами>Развертывания моделей в портале Azure.
OPENAI_API_VERSION Дополнительные сведения о версиях API.

Вы можете изменить версию в коде или использовать переменную среды.

Дополнительные сведения о бессерверной проверке подлинности и настройке переменных среды.

Выполните быстрый старт

Пример кода в этом кратком руководстве использует идентификатор Microsoft Entra для рекомендуемой проверки подлинности без ключей. Если вы предпочитаете использовать ключ API, можно заменить объект #D0 объектом #D1.

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

Примечание.

Вы можете получить примеры аудиофайлов, например wikipediaOcelot.wav, из репозитория пакета SDK службы "Речь" azure AI на сайте GitHub.

Чтобы запустить быстрый старт, выполните следующие действия.

  1. Замените содержимое Program.cs следующим кодом и обновите заполнительные значения на собственные.

    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 = 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. Запустите приложение с помощью dotnet run команды или кнопки запуска в верхней части Visual Studio:

    dotnet run
    

Выходные данные

Приложение создаст звуковой файл в расположении, указанном для переменной speechFilePath . Воспроизводите файл на устройстве, чтобы услышать созданный звук.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.

Следующие шаги