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


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

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

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

Необходимые компоненты

Настройка

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

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

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

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

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

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

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

Внимание

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

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ 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) |

Необходимые компоненты

Настройка

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

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

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

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

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

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

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

Внимание

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

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Создание приложения Node

В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите в него. Затем выполните npm init команду, чтобы создать приложение узла с package.json файлом.

npm init

Установка клиентской библиотеки

Установите клиентские библиотеки с помощью следующих компонентов:

npm install openai @azure/identity

Файл package.json приложения будет обновлен с помощью зависимостей.

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

  1. Создайте файл с именем Text-to-speech.js и откройте его в предпочтительном редакторе кода. Скопируйте следующий код в файл 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. Выполните скрипт с помощью следующей команды:

    node Text-to-speech.js
    

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

Необходимые компоненты

Настройка

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

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

Имя переменной Значение
AZURE_OPENAI_ENDPOINT Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Кроме того, значение можно найти, выбрав Azure OpenAI Studio > Тестовая площадка > Представление кода. Пример конечной точки: https://aoai-docs.openai.azure.com/.
AZURE_OPENAI_API_KEY Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2.

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

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

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

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

Внимание

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

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Создание приложения Node

В окне консоли (например, cmd, PowerShell или Bash) создайте новый каталог для приложения и перейдите в него. Затем выполните npm init команду, чтобы создать приложение узла с package.json файлом.

npm init

Установка клиентской библиотеки

Установите клиентские библиотеки с помощью следующих компонентов:

npm install openai @azure/identity

Файл package.json приложения будет обновлен с помощью зависимостей.

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

  1. Создайте файл с именем Text-to-speech.ts и откройте его в предпочтительном редакторе кода. Скопируйте следующий код в файл 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);
    });
    
    

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

  2. Создайте приложение с помощью следующей команды:

    tsc
    
  3. Запустите приложение, выполнив следующую команду:

    node Text-to-speech.js
    

Необходимые компоненты

Создание приложения .NET

  1. Создайте приложение .NET с помощью dotnet new команды:

    dotnet new console -n TextToSpeech
    
  2. Перейдите в каталог нового приложения:

    cd OpenAISpeech
    
  3. Установите клиентская Azure.OpenAI библиотека:

    dotnet add package Azure.AI.OpenAI
    

Проверка подлинности и подключение к Azure OpenAI

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

  • Идентификатор Microsoft Entra — это рекомендуемый подход для проверки подлинности в службах Azure и более безопасный, чем альтернативные варианты на основе ключей.

  • Ключи доступа позволяют предоставить секретный ключ для подключения к ресурсу.

    Внимание

    Ключи доступа следует использовать с осторожностью. Если ключ доступа к службе потерян или случайно предоставлен в небезопасном расположении, ваша служба может стать уязвимой. Любой пользователь, имеющий ключ доступа, может авторизовать запросы к службе Azure OpenAI.

Получение конечной точки Azure OpenAI

Конечная точка службы можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти конечную точку на странице "Развертывания " в Azure AI Studio. Пример конечной точки: https://docs-test-001.openai.azure.com/.

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

Проверка подлинности с помощью идентификатора Microsoft Entra

Если вы решили использовать проверку подлинности идентификатора Microsoft Entra, вам потребуется выполнить следующие действия:

  1. Добавьте пакет Azure.Identity.

    dotnet add package Azure.Identity
    
  2. Назначьте роль учетной Cognitive Services User записи пользователя. Это можно сделать в портал Azure ресурса OpenAI в разделе управления доступом (IAM)>Добавить назначение ролей.

  3. Войдите в Azure с помощью Visual Studio или Azure CLI.az login

Проверка подлинности с помощью ключей

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

Обновление кода приложения

  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";
    
    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");
    

    Внимание

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

  2. Запустите приложение с помощью dotnet run команды или кнопки запуска в верхней части Visual Studio:

    dotnet run
    

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

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

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

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

  • Дополнительные сведения о работе с текстом для речи с помощью Службы Azure OpenAI см. в справочной документации по Службе OpenAI Azure.
  • Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples