Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Documentação de referência | Pacotes (NuGet) | Amostras adicionais no GitHub
Neste guia de instruções, você pode usar a Fala de IA do Azure para conversar com o Azure OpenAI no Azure AI Foundry Models. O texto reconhecido pelo serviço de Fala é enviado para o OpenAI do Azure. O serviço Speech sintetiza a fala a partir da resposta de texto do Azure OpenAI.
Fale no microfone para iniciar uma conversa com o OpenAI do Azure.
- O Serviço Cognitivo do Azure para Fala reconhece sua fala e a converte em texto (conversão de fala em texto).
- Sua solicitação como texto é enviada para o OpenAI do Azure.
- O recurso de conversão de texto em fala do serviço de fala sintetiza a resposta do Azure OpenAI para o alto-falante padrão.
Embora a experiência deste exemplo seja uma troca de ida e volta, o OpenAI do Azure não se lembra do contexto da sua conversa.
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- Crie um recurso do Microsoft Azure OpenAI no Azure AI Foundry Models no portal do Azure.
- Implante um modelo no seu recurso OpenAI do Azure. Para obter mais informações sobre a implantação do modelo, consulte o guia de implantação de recursos do OpenAI do Azure.
- Obtenha a chave e o ponto de extremidade do recurso OpenAI do Azure. Após a implantação do recurso OpenAI do Azure, selecione Ir para o recurso para exibir e gerenciar as chaves.
- Crie um recurso de AI Foundry para Reconhecimento de Voz no portal do Azure.
- Obter a região e a chave do recurso para Fala. Depois que o recurso de Fala for implantado, selecione Ir para o recurso para exibir e gerenciar as chaves.
Configurar o ambiente
O SDK de Fala está disponível como um pacote NuGet e implementa o .NET Standard 2.0. Você instalará o SDK de Fala posteriormente neste guia, mas primeiro verifique o guia de instalação do SDK para conhecer os demais requisitos.
Definir variáveis de ambiente
Este exemplo exige variáveis de ambiente chamadas AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
e SPEECH_REGION
.
Seu aplicativo deve ser autenticado para acessar os recursos do Azure AI Foundry. Este artigo mostra como usar variáveis de ambiente para armazenar suas credenciais. Em seguida, você poderá acessar as variáveis de ambiente do seu código para autenticar seu aplicativo. Para a produção, use um método mais seguro para armazenar e acessar suas credenciais.
Importante
Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure a fim de evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.
Use as chaves de API com cautela. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Azure Key Vault, gire as chaves regularmente e restrinja o acesso ao Azure Key Vault usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, confira Chaves de API com o Azure Key Vault.
Para obter mais informações sobre segurança dos serviços de IA, confira Autenticar solicitações para os serviços de IA do Azure.
Para definir as variáveis de ambiente, abra uma janela do console e siga as instruções do sistema operacional e do ambiente de desenvolvimento.
- Para definir a variável de ambiente
AZURE_OPENAI_API_KEY
, substituayour-openai-key
por uma das chaves do recurso. - Para definir a variável de ambiente
AZURE_OPENAI_ENDPOINT
, substituayour-openai-endpoint
por uma das regiões do recurso. - Para definir a variável de ambiente
AZURE_OPENAI_CHAT_DEPLOYMENT
, substituayour-openai-deployment-name
por uma das regiões do recurso. - Para definir a variável de ambiente
SPEECH_KEY
, substituayour-speech-key
por uma das chaves do recurso. - Para definir a variável de ambiente
SPEECH_REGION
, substituayour-speech-region
por uma das regiões do recurso.
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
Observação
Se você precisar acessar apenas a variável de ambiente no console em execução atual, defina a variável de ambiente com set
em vez de setx
.
Depois de incluir as variáveis de ambiente, talvez seja necessário reiniciar quaisquer programas em execução que precisem ler a variável de ambiente, incluindo a janela do console. Por exemplo, se o Visual Studio for seu editor, reinicie o Visual Studio antes de executar o exemplo.
Reconhecer fala de um microfone
Siga estas etapas para criar um novo aplicativo de console.
Abra uma janela do prompt de comando na pasta em que você deseja o novo projeto. Execute este comando para criar um aplicativo de console com a CLI do .NET.
dotnet new console
O comando cria um arquivo Program.cs no diretório do projeto.
Instale o SDK de Fala em seu novo projeto com a CLI do .NET.
dotnet add package Microsoft.CognitiveServices.Speech
Instale o SDK do Azure OpenAI (versão prévia) em seu novo projeto com a CLI do .NET.
dotnet add package Azure.AI.OpenAI --prerelease
Substitua o conteúdo de
Program.cs
pelo seguinte código.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; } } }
Para aumentar ou diminuir o número de tokens retornados pelo OpenAI do Azure, altere a propriedade
MaxTokens
na instância de classeChatCompletionsOptions
. Para obter mais informações sobre tokens e implicações de custo, consulte tokens do OpenAI do Azure e preços do OpenAI do Azure.Execute seu novo aplicativo de console para iniciar o reconhecimento de fala a partir de um microfone:
dotnet run
Importante
Certifique-se de definir as AZURE_OPENAI_API_KEY
variáveis de ambienteAZURE_OPENAI_ENDPOINT
AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
,SPEECH_REGION
, e conforme descrito. Se você não definir essas variáveis, o exemplo falhará com uma mensagem de erro.
Fale no microfone quando solicitado. A saída do console inclui a solicitação para você começar a falar, depois sua solicitação como texto e, em seguida, a resposta do OpenAI do Azure como texto. A resposta do OpenAI do Azure deve ser convertida a partir da conversão de texto em fala e, em seguida, enviada para o alto-falante padrão.
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>
Comentários
Aqui estão mais algumas considerações:
- Para alterar o idioma de reconhecimento de fala, substitua
en-US
por outroen-US
. Por exemplo:es-ES
para espanhol (Espanha). O idioma padrão éen-US
. Para obter detalhes sobre como identificar um dos vários idiomas que podem ser falados, consulte identificação do idioma. - Para alterar a voz que você ouve, substitua
en-US-JennyMultilingualNeural
por outra voz com suporte. Se a voz não falar o idioma do texto retornado do OpenAI do Azure, o serviço de Fala não emitirá o áudio sintetizado. - Para reduzir a latência da saída de conversão de texto em fala, use o recurso de streaming de texto, que permite o processamento de texto em tempo real para geração rápida de áudio e minimiza a latência, melhorando a fluidez e a capacidade de resposta das saídas de áudio em tempo real. Consulte como usar streaming de texto.
- Para habilitar o Avatar TTS como uma experiência visual de saída de conversão de texto em fala, consulte a síntese em tempo real para avatar de conversão de texto em fala e código de amostra para cenário de chat com avatar.
- O OpenAI do Azure também faz a moderação de conteúdo nas entradas de prompt e nas saídas geradas. Os prompts ou as respostas poderão ser filtrados se for detectado conteúdo prejudicial. Para obter mais informações, consulte o artigo filtragem de conteúdo.
Limpar os recursos
Você pode usar o portal do Azure ou a CLI (interface de linha de comando) do Azure para remover o recurso de fala que você criou.
Documentação de referência | Pacotes (PyPi) | Amostras adicionais no GitHub
Neste guia de instruções, você pode usar a Fala de IA do Azure para conversar com o Azure OpenAI no Azure AI Foundry Models. O texto reconhecido pelo serviço de Fala é enviado para o OpenAI do Azure. O serviço Speech sintetiza a fala a partir da resposta de texto do Azure OpenAI.
Fale no microfone para iniciar uma conversa com o OpenAI do Azure.
- O Serviço Cognitivo do Azure para Fala reconhece sua fala e a converte em texto (conversão de fala em texto).
- Sua solicitação como texto é enviada para o OpenAI do Azure.
- O recurso de conversão de texto em fala do serviço de fala sintetiza a resposta do Azure OpenAI para o alto-falante padrão.
Embora a experiência deste exemplo seja uma troca de ida e volta, o OpenAI do Azure não se lembra do contexto da sua conversa.
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- Crie um recurso do Microsoft Azure OpenAI no Azure AI Foundry Models no portal do Azure.
- Implante um modelo no seu recurso OpenAI do Azure. Para obter mais informações sobre a implantação do modelo, consulte o guia de implantação de recursos do OpenAI do Azure.
- Obtenha a chave e o ponto de extremidade do recurso OpenAI do Azure. Após a implantação do recurso OpenAI do Azure, selecione Ir para o recurso para exibir e gerenciar as chaves.
- Crie um recurso de AI Foundry para Reconhecimento de Voz no portal do Azure.
- Obter a região e a chave do recurso para Fala. Depois que o recurso de Fala for implantado, selecione Ir para o recurso para exibir e gerenciar as chaves.
Configurar o ambiente
O SDK de fala para Python está disponível como um módulo PyPI (índice de pacote do Python). O SDK de Fala para Python é compatível com Windows, Linux e macOS.
- Instale o Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017, 2019 e 2022 para sua plataforma. Quando você instalar esse pacote pela primeira vez, poderá ser necessária uma reinicialização.
- No Linux, você deve usar a arquitetura de destino x64.
Instale uma versão do Python 3.7 ou posterior. Primeiro, verifique o Guia de instalação do SDK para conhecer os demais requisitos.
Instale as seguintes bibliotecas Python: os
, requests
, json
.
Definir variáveis de ambiente
Este exemplo exige variáveis de ambiente chamadas AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
e SPEECH_REGION
.
Seu aplicativo deve ser autenticado para acessar os recursos do Azure AI Foundry. Este artigo mostra como usar variáveis de ambiente para armazenar suas credenciais. Em seguida, você poderá acessar as variáveis de ambiente do seu código para autenticar seu aplicativo. Para a produção, use um método mais seguro para armazenar e acessar suas credenciais.
Importante
Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure a fim de evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.
Use as chaves de API com cautela. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Azure Key Vault, gire as chaves regularmente e restrinja o acesso ao Azure Key Vault usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, confira Chaves de API com o Azure Key Vault.
Para obter mais informações sobre segurança dos serviços de IA, confira Autenticar solicitações para os serviços de IA do Azure.
Para definir as variáveis de ambiente, abra uma janela do console e siga as instruções do sistema operacional e do ambiente de desenvolvimento.
- Para definir a variável de ambiente
AZURE_OPENAI_API_KEY
, substituayour-openai-key
por uma das chaves do recurso. - Para definir a variável de ambiente
AZURE_OPENAI_ENDPOINT
, substituayour-openai-endpoint
por uma das regiões do recurso. - Para definir a variável de ambiente
AZURE_OPENAI_CHAT_DEPLOYMENT
, substituayour-openai-deployment-name
por uma das regiões do recurso. - Para definir a variável de ambiente
SPEECH_KEY
, substituayour-speech-key
por uma das chaves do recurso. - Para definir a variável de ambiente
SPEECH_REGION
, substituayour-speech-region
por uma das regiões do recurso.
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
Observação
Se você precisar acessar apenas a variável de ambiente no console em execução atual, defina a variável de ambiente com set
em vez de setx
.
Depois de incluir as variáveis de ambiente, talvez seja necessário reiniciar quaisquer programas em execução que precisem ler a variável de ambiente, incluindo a janela do console. Por exemplo, se o Visual Studio for seu editor, reinicie o Visual Studio antes de executar o exemplo.
Reconhecer fala de um microfone
Siga estas etapas para criar um novo aplicativo de console.
Abra uma janela do prompt de comando na pasta em que você deseja o novo projeto. Abra um prompt de comando onde você deseja criar o novo projeto e crie um novo arquivo chamado
azure-openai-speech.py
.Execute este comando para instalar o SDK de Fala:
pip install azure-cognitiveservices-speech
Execute este comando para instalar o SDK do OpenAI:
pip install openai
Observação
Essa biblioteca é mantida pela OpenAI, não pelo Microsoft Azure. Consulte o histórico de lançamentos ou o histórico de confirmação de version.py para acompanhar as atualizações mais recentes na biblioteca.
Crie um arquivo chamado azure-openai-speech.py. Copie o seguinte código nesse arquivo:
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))
Para aumentar ou diminuir o número de tokens retornados pelo OpenAI do Azure, altere o parâmetro
max_tokens
. Para obter mais informações sobre tokens e implicações de custo, consulte tokens do OpenAI do Azure e preços do OpenAI do Azure.Execute seu novo aplicativo de console para iniciar o reconhecimento de fala a partir de um microfone:
python azure-openai-speech.py
Importante
Certifique-se de definir as variáveis de ambiente AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
e SPEECH_REGION
conforme descrito anteriormente. Se você não definir essas variáveis, o exemplo falhará com uma mensagem de erro.
Fale no microfone quando solicitado. A saída do console inclui a solicitação para você começar a falar, depois sua solicitação como texto e, em seguida, a resposta do OpenAI do Azure como texto. A resposta do OpenAI do Azure deve ser convertida a partir da conversão de texto em fala e, em seguida, enviada para o alto-falante padrão.
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>
Comentários
Aqui estão mais algumas considerações:
- Para alterar o idioma de reconhecimento de fala, substitua
en-US
por outroen-US
. Por exemplo:es-ES
para espanhol (Espanha). O idioma padrão éen-US
. Para obter detalhes sobre como identificar um dos vários idiomas que podem ser falados, consulte identificação do idioma. - Para alterar a voz que você ouve, substitua
en-US-JennyMultilingualNeural
por outra voz com suporte. Se a voz não falar o idioma do texto retornado do OpenAI do Azure, o serviço de Fala não emitirá o áudio sintetizado. - Para reduzir a latência da saída de conversão de texto em fala, use o recurso de streaming de texto, que permite o processamento de texto em tempo real para geração rápida de áudio e minimiza a latência, melhorando a fluidez e a capacidade de resposta das saídas de áudio em tempo real. Consulte como usar streaming de texto.
- Para habilitar o Avatar TTS como uma experiência visual de saída de conversão de texto em fala, consulte a síntese em tempo real para avatar de conversão de texto em fala e código de amostra para cenário de chat com avatar.
- O OpenAI do Azure também faz a moderação de conteúdo nas entradas de prompt e nas saídas geradas. Os prompts ou as respostas poderão ser filtrados se for detectado conteúdo prejudicial. Para obter mais informações, consulte o artigo filtragem de conteúdo.
Limpar os recursos
Você pode usar o portal do Azure ou a CLI (interface de linha de comando) do Azure para remover o recurso de fala que você criou.