Краткое руководство. Преобразование текста в речь с помощью службы Azure OpenAI
В этом кратком руководстве вы используете службу Azure OpenAI для преобразования текста в речь с голосовыми голосами OpenAI.
Доступные голоса: alloy
, echo
, fable
, onyx
, , nova
и shimmer
. Дополнительные сведения см . в справочной документации по службе Azure OpenAI для преобразования текста в речь.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Ресурс Azure OpenAI, созданный в регионах центрально-северной части США или Швеции Central с
tts-1
развернутой моделью илиtts-1-hd
развернутой моделью. Дополнительные сведения см. в статье "Создание ресурса" и развертывание модели с помощью 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
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ 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 — создайте бесплатную учетную запись.
- LTS версии Node.js
- Azure CLI , используемый для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.
- Ресурс Azure OpenAI, созданный в поддерживаемом регионе (см. раздел "Доступность региона"). Дополнительные сведения см. в статье "Создание ресурса" и развертывание модели с помощью 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
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ 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 приложения будет обновлен с помощью зависимостей.
Создание файла речи
Создайте файл с именем 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); });
Выполните скрипт с помощью следующей команды:
node Text-to-speech.js
Примеры пакета исходного кода | (npm) |
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- LTS версии Node.js
- TypeScript
- Azure CLI , используемый для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.
- Ресурс Azure OpenAI, созданный в поддерживаемом регионе (см. раздел "Доступность региона"). Дополнительные сведения см. в статье "Создание ресурса" и развертывание модели с помощью Azure OpenAI.
Настройка
Получение ключа и конечной точки
Чтобы успешно выполнить вызов к 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
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Переменные среды
Создайте и назначьте переменные постоянной среды для ключа и конечной точки.
Внимание
Если вы используете ключ 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 приложения будет обновлен с помощью зависимостей.
Создание файла речи
Создайте файл с именем 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
типа метода.Создайте приложение с помощью следующей команды:
tsc
Запустите приложение, выполнив следующую команду:
node Text-to-speech.js
Необходимые компоненты
- Подписка Azure. Вы можете создать бесплатную учетную запись.
- Ресурс Azure OpenAI с моделью Whisper, развернутой в поддерживаемом регионе. Дополнительные сведения см. в статье "Создание ресурса" и развертывание модели с помощью Azure OpenAI.
- Пакет SDK для .NET 8.0
Создание приложения .NET
Создайте приложение .NET с помощью
dotnet new
команды:dotnet new console -n TextToSpeech
Перейдите в каталог нового приложения:
cd OpenAISpeech
Установите клиентская
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/
.
Проверка подлинности с помощью идентификатора Microsoft Entra
Если вы решили использовать проверку подлинности идентификатора Microsoft Entra, вам потребуется выполнить следующие действия:
Добавьте пакет
Azure.Identity
.dotnet add package Azure.Identity
Назначьте роль учетной
Cognitive Services User
записи пользователя. Это можно сделать в портал Azure ресурса OpenAI в разделе управления доступом (IAM)>Добавить назначение ролей.Войдите в Azure с помощью Visual Studio или Azure CLI.
az login
Проверка подлинности с помощью ключей
Значение ключа доступа можно найти в разделе "Ключи" и "Конечная точка" при изучении ресурса из портал Azure. Вы можете использовать KEY1
или KEY2
. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.
Обновление кода приложения
Замените содержимое
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".
Запустите приложение с помощью
dotnet run
команды или кнопки запуска в верхней части Visual Studio:dotnet run
Приложение создает звуковой файл в расположении, указанном для переменной
speechFilePath
. Воспроизводите файл на устройстве, чтобы услышать созданный звук.
Очистка ресурсов
Если вы хотите очистить и удалить ресурс Azure OpenAI, его можно удалить. Перед удалением ресурса необходимо сначала удалить все развернутые модели.
Следующие шаги
- Дополнительные сведения о работе с текстом для речи с помощью Службы Azure OpenAI см. в справочной документации по Службе OpenAI Azure.
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples