Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Справочные примеры пакета документации | (NuGet) | Дополнительные примеры на GitHub
В этом руководстве вы можете использовать речь искусственного интеллекта Azure для взаимодействия с Azure OpenAI в моделях Azure AI Foundry. Текст, распознанный службой "Речь", отправляется в Azure OpenAI. Служба "Речь" синтезирует речь из текстового ответа из Azure OpenAI.
Обратитесь к микрофону, чтобы начать беседу с Azure OpenAI.
- Служба "Речь" распознает вашу речь и преобразует ее в текст (речь в текст).
- Запрос в виде текста отправляется в Azure OpenAI.
- Текст службы "Речь" для распознавания речи синтезирует ответ от Azure OpenAI к динамику по умолчанию.
Хотя в этом примере используется обратный обмен, Azure OpenAI не запоминает контекст беседы.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Создайте ресурс Microsoft Azure OpenAI в Azure AI Foundry Models на портале Azure.
- Разверните модель в ресурсе Azure OpenAI. Дополнительные сведения о развертывании модели см. в руководстве по развертыванию ресурсов Azure OpenAI.
- Получите ключ ресурса и конечную точку Azure OpenAI. После развертывания ресурса Azure OpenAI выберите "Перейти к ресурсу " для просмотра ключей и управления ими.
- Создайте ресурс AI Foundry для функции 'Речь' в портале Azure.
- Получение ключа ресурса службы "Речь" и региона. После развертывания ресурса службы "Речь" выберите Перейти к ресурсу для просмотра ключей и управления ими.
Настройка среды
Пакет SDK для службы "Речь" доступен в виде пакета NuGet и реализует .NET Standard 2.0. Вы устанавливаете пакет SDK службы "Речь" далее в этом руководстве, но сначала проверьте руководство по установке пакета SDK для получения дополнительных требований.
Настройка переменных среды
В этом примере требуются переменные среды с именем AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
и SPEECH_REGION
.
Приложение должно пройти проверку подлинности для доступа к ресурсам Azure AI Foundry. В этой статье показано, как использовать переменные среды для хранения учетных данных. Затем вы можете получить доступ к переменным среды из кода для проверки подлинности приложения. Для рабочей среды используйте более безопасный способ хранения и доступа к учетным данным.
Внимание
Мы рекомендуем использовать проверку подлинности Идентификатора Microsoft Entra с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных с приложениями, работающими в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
Чтобы задать переменные среды, откройте окно консоли и следуйте инструкциям для вашей операционной системы и среды разработки.
- Чтобы задать
AZURE_OPENAI_API_KEY
переменную среды, заменитеyour-openai-key
одним из ключей ресурса. - Чтобы задать
AZURE_OPENAI_ENDPOINT
переменную среды, заменитеyour-openai-endpoint
одним из регионов ресурса. - Чтобы задать
AZURE_OPENAI_CHAT_DEPLOYMENT
переменную среды, заменитеyour-openai-deployment-name
одним из регионов ресурса. - Чтобы задать
SPEECH_KEY
переменную среды, заменитеyour-speech-key
одним из ключей ресурса. - Чтобы задать
SPEECH_REGION
переменную среды, заменитеyour-speech-region
одним из регионов ресурса.
setx AZURE_OPENAI_API_KEY your-openai-key
setx AZURE_OPENAI_ENDPOINT your-openai-endpoint
setx AZURE_OPENAI_CHAT_DEPLOYMENT your-openai-deployment-name
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region
Примечание.
Если необходимо получить доступ только к переменной среды в текущей работающей консоли, задайте переменную set
среды вместо setx
.
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые должны считывать переменную среды, включая окно консоли. Например, если Visual Studio является редактором, перезапустите Visual Studio перед запуском примера.
Распознавание речи с микрофона
Чтобы создать новое консольное приложение, выполните указанные ниже действия.
Откройте окно командной строки в папке, в которой требуется создать проект. Выполните эту команду, чтобы создать консольное приложение с помощью .NET CLI.
dotnet new console
Команда создает файл Program.cs в каталоге проекта.
Установите пакет SDK для службы "Речь" в новом проекте с помощью CLI .NET.
dotnet add package Microsoft.CognitiveServices.Speech
Установите пакет SDK Azure OpenAI (предварительная версия) в новом проекте с помощью .NET CLI.
dotnet add package Azure.AI.OpenAI --prerelease
Замените все содержимое
Program.cs
следующим кодом:using System.Text; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio; using Azure; using Azure.AI.OpenAI; // This example requires environment variables named "AZURE_OPENAI_API_KEY", "AZURE_OPENAI_ENDPOINT" and "AZURE_OPENAI_CHAT_DEPLOYMENT" // Your endpoint should look like the following https://YOUR_OPEN_AI_RESOURCE_NAME.openai.azure.com/ string openAIKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? throw new ArgumentException("Missing AZURE_OPENAI_API_KEY"); string openAIEndpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new ArgumentException("Missing AZURE_OPENAI_ENDPOINT"); // Enter the deployment name you chose when you deployed the model. string engine = Environment.GetEnvironmentVariable("AZURE_OPENAI_CHAT_DEPLOYMENT") ?? throw new ArgumentException("Missing AZURE_OPENAI_CHAT_DEPLOYMENT"); // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY") ?? throw new ArgumentException("Missing SPEECH_KEY"); string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION") ?? throw new ArgumentException("Missing SPEECH_REGION"); // Sentence end symbols for splitting the response into sentences. List<string> sentenceSaperators = new() { ".", "!", "?", ";", "。", "!", "?", ";", "\n" }; try { await ChatWithAzureOpenAI(); } catch (Exception ex) { Console.WriteLine(ex); } // Prompts Azure OpenAI with a request and synthesizes the response. async Task AskAzureOpenAI(string prompt) { object consoleLock = new(); var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion); // The language of the voice that speaks. speechConfig.SpeechSynthesisVoiceName = "en-US-JennyMultilingualNeural"; var audioOutputConfig = AudioConfig.FromDefaultSpeakerOutput(); using var speechSynthesizer = new SpeechSynthesizer(speechConfig, audioOutputConfig); speechSynthesizer.Synthesizing += (sender, args) => { lock (consoleLock) { Console.ForegroundColor = ConsoleColor.Yellow; Console.Write($"[Audio]"); Console.ResetColor(); } }; // Ask Azure OpenAI OpenAIClient client = new(new Uri(openAIEndpoint), new AzureKeyCredential(openAIKey)); var completionsOptions = new ChatCompletionsOptions() { DeploymentName = engine, Messages = { new ChatRequestUserMessage(prompt) }, MaxTokens = 100, }; var responseStream = await client.GetChatCompletionsStreamingAsync(completionsOptions); StringBuilder gptBuffer = new(); await foreach (var completionUpdate in responseStream) { var message = completionUpdate.ContentUpdate; if (string.IsNullOrEmpty(message)) { continue; } lock (consoleLock) { Console.ForegroundColor = ConsoleColor.DarkBlue; Console.Write($"{message}"); Console.ResetColor(); } gptBuffer.Append(message); if (sentenceSaperators.Any(message.Contains)) { var sentence = gptBuffer.ToString().Trim(); if (!string.IsNullOrEmpty(sentence)) { await speechSynthesizer.SpeakTextAsync(sentence); gptBuffer.Clear(); } } } } // Continuously listens for speech input to recognize and send as text to Azure OpenAI async Task ChatWithAzureOpenAI() { // Should be the locale for the speaker's language. var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion); speechConfig.SpeechRecognitionLanguage = "en-US"; using var audioConfig = AudioConfig.FromDefaultMicrophoneInput(); using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig); var conversationEnded = false; while (!conversationEnded) { Console.WriteLine("Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation."); // Get audio from the microphone and then send it to the TTS service. var speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync(); switch (speechRecognitionResult.Reason) { case ResultReason.RecognizedSpeech: if (speechRecognitionResult.Text == "Stop.") { Console.WriteLine("Conversation ended."); conversationEnded = true; } else { Console.WriteLine($"Recognized speech: {speechRecognitionResult.Text}"); await AskAzureOpenAI(speechRecognitionResult.Text); } break; case ResultReason.NoMatch: Console.WriteLine($"No speech could be recognized: "); break; case ResultReason.Canceled: var cancellationDetails = CancellationDetails.FromResult(speechRecognitionResult); Console.WriteLine($"Speech Recognition canceled: {cancellationDetails.Reason}"); if (cancellationDetails.Reason == CancellationReason.Error) { Console.WriteLine($"Error details={cancellationDetails.ErrorDetails}"); } break; } } }
Чтобы увеличить или уменьшить количество маркеров, возвращаемых Azure OpenAI, измените
MaxTokens
свойство в экземпляреChatCompletionsOptions
класса. Дополнительные сведения о маркерах и последствиях затрат см. в разделе "Токены Azure OpenAI" и цены на Azure OpenAI.Запустите новое консольное приложение, чтобы начать распознавание речи с микрофона:
dotnet run
Внимание
Убедитесь, что вы задаете AZURE_OPENAI_API_KEY
переменные среды , AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_CHAT_DEPLOYMENT
SPEECH_KEY
и SPEECH_REGION
переменные среды, как описано. Если эти переменные не заданы, образец завершится ошибкой с сообщением об ошибке.
При появлении запроса начните говорить в микрофон. Выходные данные консоли включают запрос, который вы начнете говорить, а затем запрос в виде текста, а затем ответ из Azure OpenAI в виде текста. Ответ Azure OpenAI должен быть преобразован из текста в речь, а затем выводить в динамик по умолчанию.
PS C:\dev\openai\csharp> dotnet run
Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation.
Recognized speech:Make a comma separated list of all continents.
Azure OpenAI response:Africa, Antarctica, Asia, Australia, Europe, North America, South America
Speech synthesized to speaker for text [Africa, Antarctica, Asia, Australia, Europe, North America, South America]
Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation.
Recognized speech: Make a comma separated list of 1 Astronomical observatory for each continent. A list should include each continent name in parentheses.
Azure OpenAI response:Mauna Kea Observatories (North America), La Silla Observatory (South America), Tenerife Observatory (Europe), Siding Spring Observatory (Australia), Beijing Xinglong Observatory (Asia), Naukluft Plateau Observatory (Africa), Rutherford Appleton Laboratory (Antarctica)
Speech synthesized to speaker for text [Mauna Kea Observatories (North America), La Silla Observatory (South America), Tenerife Observatory (Europe), Siding Spring Observatory (Australia), Beijing Xinglong Observatory (Asia), Naukluft Plateau Observatory (Africa), Rutherford Appleton Laboratory (Antarctica)]
Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation.
Conversation ended.
PS C:\dev\openai\csharp>
Замечания
Ниже приведены некоторые дополнительные рекомендации.
- Чтобы изменить язык распознавания речи, замените
en-US
на другой поддерживаемый язык. Например,es-ES
для испанского (Испания). По умолчанию используется языкen-US
. Дополнительные сведения о том, как определить один из нескольких языков, на которых могут говорить, см. в разделе Определение языка. - Чтобы изменить голос, который вы услышите, замените
en-US-JennyMultilingualNeural
другой поддерживаемый голос. Если голос не говорит язык текста, возвращенного из Azure OpenAI, служба "Речь" не выводит синтезированный звук. - Чтобы уменьшить задержку вывода текста в речь, используйте функцию потоковой передачи текста в режиме реального времени, которая позволяет обрабатывать текст в режиме реального времени для быстрого создания звука и свести к минимуму задержку, повышая гибкость и скорость отклика выходных данных звука в режиме реального времени. Узнайте, как использовать потоковую передачу текста.
- Чтобы включить аватар TTS в качестве визуального интерфейса вывода речи, обратитесь к синтезу текста в речь аватара и примера кода для чата с аватаром в режиме реального времени.
- Azure OpenAI также выполняет con режим палатки ration в запросах и созданных выходных данных. Запросы или ответы могут быть отфильтрованы, если обнаружено вредное содержимое. Дополнительные сведения см. в статье о фильтрации содержимого.
Очистка ресурсов
Для удаления созданного ресурса службы "Речь" можно использовать портал Azure или интерфейс командной строки (CLI) Azure.
Справочные примеры пакета документации | (PyPi) | Дополнительные примеры на GitHub
В этом руководстве вы можете использовать речь искусственного интеллекта Azure для взаимодействия с Azure OpenAI в моделях Azure AI Foundry. Текст, распознанный службой "Речь", отправляется в Azure OpenAI. Служба "Речь" синтезирует речь из текстового ответа из Azure OpenAI.
Обратитесь к микрофону, чтобы начать беседу с Azure OpenAI.
- Служба "Речь" распознает вашу речь и преобразует ее в текст (речь в текст).
- Запрос в виде текста отправляется в Azure OpenAI.
- Текст службы "Речь" для распознавания речи синтезирует ответ от Azure OpenAI к динамику по умолчанию.
Хотя в этом примере используется обратный обмен, Azure OpenAI не запоминает контекст беседы.
Необходимые компоненты
- Подписка Azure — создайте бесплатную учетную запись.
- Создайте ресурс Microsoft Azure OpenAI в Azure AI Foundry Models на портале Azure.
- Разверните модель в ресурсе Azure OpenAI. Дополнительные сведения о развертывании модели см. в руководстве по развертыванию ресурсов Azure OpenAI.
- Получите ключ ресурса и конечную точку Azure OpenAI. После развертывания ресурса Azure OpenAI выберите "Перейти к ресурсу " для просмотра ключей и управления ими.
- Создайте ресурс AI Foundry для функции 'Речь' в портале Azure.
- Получение ключа ресурса службы "Речь" и региона. После развертывания ресурса службы "Речь" выберите Перейти к ресурсу для просмотра ключей и управления ими.
Настройка среды
Пакет SDK для Python доступен в виде модуля индекса пакетов Python (PyPI). Пакет SDK для службы "Речь" (Python) совместим с Windows, Linux и macOS.
- Установите microsoft Распространяемый компонент Visual C++ для Visual Studio 2015, 2017, 2019 и 2022 для своей платформы. При первой установке этого пакета может потребоваться перезагрузка.
- В Linux необходимо использовать целевую архитектуру x64.
Установите версию Python с версии 3.7 или более поздней версии. Сначала ознакомьтесь со статьей Руководство по установке пакета SDK, чтобы узнать о дополнительных требованиях.
Установите следующие библиотеки Python: os
, requests
. json
Настройка переменных среды
В этом примере требуются переменные среды с именем AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
и SPEECH_REGION
.
Приложение должно пройти проверку подлинности для доступа к ресурсам Azure AI Foundry. В этой статье показано, как использовать переменные среды для хранения учетных данных. Затем вы можете получить доступ к переменным среды из кода для проверки подлинности приложения. Для рабочей среды используйте более безопасный способ хранения и доступа к учетным данным.
Внимание
Мы рекомендуем использовать проверку подлинности Идентификатора Microsoft Entra с управляемыми удостоверениями для ресурсов Azure, чтобы избежать хранения учетных данных с приложениями, работающими в облаке.
Используйте ключи API с осторожностью. Не включайте ключ API непосредственно в код и никогда не публикуйте его. При использовании ключей API безопасно храните их в Azure Key Vault, регулярно поворачивайте ключи и ограничьте доступ к Azure Key Vault с помощью управления доступом на основе ролей и ограничений доступа к сети. Дополнительные сведения об использовании ключей API безопасно в приложениях см. в разделе "Ключи API" с помощью Azure Key Vault.
Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".
Чтобы задать переменные среды, откройте окно консоли и следуйте инструкциям для вашей операционной системы и среды разработки.
- Чтобы задать
AZURE_OPENAI_API_KEY
переменную среды, заменитеyour-openai-key
одним из ключей ресурса. - Чтобы задать
AZURE_OPENAI_ENDPOINT
переменную среды, заменитеyour-openai-endpoint
одним из регионов ресурса. - Чтобы задать
AZURE_OPENAI_CHAT_DEPLOYMENT
переменную среды, заменитеyour-openai-deployment-name
одним из регионов ресурса. - Чтобы задать
SPEECH_KEY
переменную среды, заменитеyour-speech-key
одним из ключей ресурса. - Чтобы задать
SPEECH_REGION
переменную среды, заменитеyour-speech-region
одним из регионов ресурса.
setx AZURE_OPENAI_API_KEY your-openai-key
setx AZURE_OPENAI_ENDPOINT your-openai-endpoint
setx AZURE_OPENAI_CHAT_DEPLOYMENT your-openai-deployment-name
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region
Примечание.
Если необходимо получить доступ только к переменной среды в текущей работающей консоли, задайте переменную set
среды вместо setx
.
После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые должны считывать переменную среды, включая окно консоли. Например, если Visual Studio является редактором, перезапустите Visual Studio перед запуском примера.
Распознавание речи с микрофона
Чтобы создать новое консольное приложение, выполните указанные ниже действия.
Откройте окно командной строки в папке, в которой требуется создать проект. Откройте командную строку, в которой должен быть создан новый проект, и создайте новый файл с именем
azure-openai-speech.py
.Выполните следующую команду для установки пакета SDK для службы "Речь".
pip install azure-cognitiveservices-speech
Выполните следующую команду, чтобы установить пакет SDK OpenAI:
pip install openai
Примечание.
Эта библиотека поддерживается OpenAI, а не Microsoft Azure. Ознакомьтесь с журналом выпуска или журналом фиксации version.py, чтобы отслеживать последние обновления библиотеки.
Создайте файл с именем azure-openai-speech.py. Скопируйте следующий код в этот файл:
import os import azure.cognitiveservices.speech as speechsdk from openai import AzureOpenAI # This example requires environment variables named "AZURE_OPENAI_API_KEY", "AZURE_OPENAI_ENDPOINT" and "AZURE_OPENAI_CHAT_DEPLOYMENT" # Your endpoint should look like the following https://YOUR_OPEN_AI_RESOURCE_NAME.openai.azure.com/ client = AzureOpenAI( azure_endpoint=os.environ.get('AZURE_OPENAI_ENDPOINT'), api_key=os.environ.get('AZURE_OPENAI_API_KEY'), api_version="2023-05-15" ) # This will correspond to the custom name you chose for your deployment when you deployed a model. deployment_id=os.environ.get('AZURE_OPENAI_CHAT_DEPLOYMENT') # This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION')) audio_output_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True) audio_config = speechsdk.audio.AudioConfig(use_default_microphone=True) # Should be the locale for the speaker's language. speech_config.speech_recognition_language="en-US" speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config) # The language of the voice that responds on behalf of Azure OpenAI. speech_config.speech_synthesis_voice_name='en-US-JennyMultilingualNeural' speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_output_config) # tts sentence end mark tts_sentence_end = [ ".", "!", "?", ";", "。", "!", "?", ";", "\n" ] # Prompts Azure OpenAI with a request and synthesizes the response. def ask_azure_openai(prompt): # Ask Azure OpenAI in streaming way response = client.chat.completions.create(model=deployment_id, max_tokens=200, stream=True, messages=[ {"role": "user", "content": prompt} ]) collected_messages = [] last_tts_request = None # iterate through the stream response stream for chunk in response: if len(chunk.choices) > 0: chunk_message = chunk.choices[0].delta.content # extract the message if chunk_message is not None: collected_messages.append(chunk_message) # save the message if chunk_message in tts_sentence_end: # sentence end found text = ''.join(collected_messages).strip() # join the recieved message together to build a sentence if text != '': # if sentence only have \n or space, we could skip print(f"Speech synthesized to speaker for: {text}") last_tts_request = speech_synthesizer.speak_text_async(text) collected_messages.clear() if last_tts_request: last_tts_request.get() # Continuously listens for speech input to recognize and send as text to Azure OpenAI def chat_with_azure_openai(): while True: print("Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation.") try: # Get audio from the microphone and then send it to the TTS service. speech_recognition_result = speech_recognizer.recognize_once_async().get() # If speech is recognized, send it to Azure OpenAI and listen for the response. if speech_recognition_result.reason == speechsdk.ResultReason.RecognizedSpeech: if speech_recognition_result.text == "Stop.": print("Conversation ended.") break print("Recognized speech: {}".format(speech_recognition_result.text)) ask_azure_openai(speech_recognition_result.text) elif speech_recognition_result.reason == speechsdk.ResultReason.NoMatch: print("No speech could be recognized: {}".format(speech_recognition_result.no_match_details)) break elif speech_recognition_result.reason == speechsdk.ResultReason.Canceled: cancellation_details = speech_recognition_result.cancellation_details print("Speech Recognition canceled: {}".format(cancellation_details.reason)) if cancellation_details.reason == speechsdk.CancellationReason.Error: print("Error details: {}".format(cancellation_details.error_details)) except EOFError: break # Main try: chat_with_azure_openai() except Exception as err: print("Encountered exception. {}".format(err))
Чтобы увеличить или уменьшить количество маркеров, возвращаемых Azure OpenAI, измените
max_tokens
параметр. Дополнительные сведения о маркерах и последствиях затрат см. в разделе "Токены Azure OpenAI" и цены на Azure OpenAI.Запустите новое консольное приложение, чтобы начать распознавание речи с микрофона:
python azure-openai-speech.py
Внимание
Убедитесь, что вы задаете AZURE_OPENAI_API_KEY
переменные среды , AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_CHAT_DEPLOYMENT
SPEECH_KEY
и SPEECH_REGION
переменные среды, как описано ранее. Если эти переменные не заданы, образец завершится ошибкой с сообщением об ошибке.
При появлении запроса начните говорить в микрофон. Выходные данные консоли включают запрос, который вы начнете говорить, а затем запрос в виде текста, а затем ответ из Azure OpenAI в виде текста. Ответ Azure OpenAI должен быть преобразован из текста в речь, а затем выводить в динамик по умолчанию.
PS C:\dev\openai\python> python.exe .\azure-openai-speech.py
Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation.
Recognized speech:Make a comma separated list of all continents.
Azure OpenAI response:Africa, Antarctica, Asia, Australia, Europe, North America, South America
Speech synthesized to speaker for text [Africa, Antarctica, Asia, Australia, Europe, North America, South America]
Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation.
Recognized speech: Make a comma separated list of 1 Astronomical observatory for each continent. A list should include each continent name in parentheses.
Azure OpenAI response:Mauna Kea Observatories (North America), La Silla Observatory (South America), Tenerife Observatory (Europe), Siding Spring Observatory (Australia), Beijing Xinglong Observatory (Asia), Naukluft Plateau Observatory (Africa), Rutherford Appleton Laboratory (Antarctica)
Speech synthesized to speaker for text [Mauna Kea Observatories (North America), La Silla Observatory (South America), Tenerife Observatory (Europe), Siding Spring Observatory (Australia), Beijing Xinglong Observatory (Asia), Naukluft Plateau Observatory (Africa), Rutherford Appleton Laboratory (Antarctica)]
Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation.
Conversation ended.
PS C:\dev\openai\python>
Замечания
Ниже приведены некоторые дополнительные рекомендации.
- Чтобы изменить язык распознавания речи, замените
en-US
на другой поддерживаемый язык. Например,es-ES
для испанского (Испания). По умолчанию используется языкen-US
. Дополнительные сведения о том, как определить один из нескольких языков, на которых могут говорить, см. в разделе Определение языка. - Чтобы изменить голос, который вы услышите, замените
en-US-JennyMultilingualNeural
другой поддерживаемый голос. Если голос не говорит язык текста, возвращенного из Azure OpenAI, служба "Речь" не выводит синтезированный звук. - Чтобы уменьшить задержку вывода текста в речь, используйте функцию потоковой передачи текста в режиме реального времени, которая позволяет обрабатывать текст в режиме реального времени для быстрого создания звука и свести к минимуму задержку, повышая гибкость и скорость отклика выходных данных звука в режиме реального времени. Узнайте, как использовать потоковую передачу текста.
- Чтобы включить аватар TTS в качестве визуального интерфейса вывода речи, обратитесь к синтезу текста в речь аватара и примера кода для чата с аватаром в режиме реального времени.
- Azure OpenAI также выполняет con режим палатки ration в запросах и созданных выходных данных. Запросы или ответы могут быть отфильтрованы, если обнаружено вредное содержимое. Дополнительные сведения см. в статье о фильтрации содержимого.
Очистка ресурсов
Для удаления созданного ресурса службы "Речь" можно использовать портал Azure или интерфейс командной строки (CLI) Azure.