Partilhar via


Chat de fala para fala do Azure OpenAI

Pacote de documentação | de referência (NuGet) | Exemplos adicionais no GitHub

Neste guia de instruções, você pode usar o Azure AI Speech para conversar com o Azure OpenAI no Azure AI Foundry Models. O texto reconhecido pelo serviço de Fala é enviado para o Azure OpenAI. O serviço de Fala sintetiza a fala a partir da resposta de texto do Azure OpenAI.

Fale ao microfone para iniciar uma conversa com o Azure OpenAI.

  • O serviço de Fala reconhece sua fala e a converte em texto (fala para texto).
  • Sua solicitação como texto é enviada para o Azure OpenAI.
  • 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 idas e vindas, o Azure OpenAI não se lembra do contexto da sua conversa.

Pré-requisitos

Configurar o ambiente

O SDK de fala está disponível como um pacote NuGet e implementa o .NET Standard 2.0. Você instala o SDK de fala mais adiante neste guia, mas primeiro verifique o guia de instalação do SDK para obter mais requisitos.

Definir variáveis de ambiente

Este exemplo requer variáveis de ambiente denominadas AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_CHAT_DEPLOYMENT, SPEECH_KEYe 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ê pode acessar as variáveis de ambiente do seu código para autenticar seu aplicativo. Para produção, use uma maneira mais segura de armazenar e acessar suas credenciais.

Importante

Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.

Use chaves de API com cuidado. 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 Cofre de Chaves do Azure, gire as chaves regularmente e restrinja o acesso ao Cofre de Chaves do Azure 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, consulte Chaves de API com o Cofre de Chaves do Azure.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

Para definir as variáveis de ambiente, abra uma janela de console e siga as instruções para seu sistema operacional e ambiente de desenvolvimento.

  • Para definir a AZURE_OPENAI_API_KEY variável de ambiente, substitua your-openai-key por uma das chaves do seu recurso.
  • Para definir a AZURE_OPENAI_ENDPOINT variável de ambiente, substitua your-openai-endpoint por uma das regiões do seu recurso.
  • Para definir a AZURE_OPENAI_CHAT_DEPLOYMENT variável de ambiente, substitua your-openai-deployment-name por uma das regiões do seu recurso.
  • Para definir a SPEECH_KEY variável de ambiente, substitua your-speech-key por uma das chaves do seu recurso.
  • Para definir a SPEECH_REGION variável de ambiente, substitua your-speech-region por uma das regiões do seu 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

Nota

Se você só precisar acessar 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 adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os 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 voz a partir de um microfone

Siga estas etapas para criar um novo aplicativo de console.

  1. Abra uma janela de prompt de comando na pasta onde 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.

  2. Instale o SDK de fala em seu novo projeto com a CLI do .NET.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. Instale o SDK do Azure OpenAI (pré-lançamento) em seu novo projeto com a CLI do .NET.

    dotnet add package Azure.AI.OpenAI --prerelease 
    
  4. Substitua o conteúdo do pelo código a Program.cs seguir.

    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;
            }
        }
    }
    
  5. Para aumentar ou diminuir o número de tokens retornados pelo Azure OpenAI, altere a MaxTokens propriedade na instância de ChatCompletionsOptions classe. Para obter mais informações sobre tokens e implicações de custo, consulte Tokens do Azure OpenAI e Preços do Azure OpenAI.

  6. 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_KEYvariáveis , AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_CHAT_DEPLOYMENTSPEECH_KEYe SPEECH_REGIONde ambiente conforme descrito. Se você não definir essas variáveis, o exemplo falhará com uma mensagem de erro.

Fale ao microfone quando solicitado. A saída do console inclui o prompt para você começar a falar, em seguida, sua solicitação como texto e, em seguida, a resposta do Azure OpenAI como texto. A resposta do Azure OpenAI deve ser convertida de texto em fala e, em seguida, saída 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>

Observações

Aqui estão mais algumas considerações:

  • Para alterar o idioma de reconhecimento de fala, substitua en-US por outro idioma suportado. Por exemplo, es-ES para o 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 ouve, substitua en-US-JennyMultilingualNeural por outra voz suportada. Se a voz não falar o idioma do texto retornado do Azure OpenAI, o serviço de Fala não produzirá áudio sintetizado.
  • Para reduzir a latência da saída de texto para 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 o streaming de texto.
  • Para habilitar o TTS Avatar como uma experiência visual de saída de fala, consulte a síntese em tempo real para avatar de texto para fala e código de exemplo para cenário de bate-papo com avatar.
  • O Azure OpenAI também executa a moderação de conteúdo nas entradas de prompt e saídas geradas. As solicitações ou respostas podem ser filtradas se for detetado conteúdo nocivo. Para obter mais informações, consulte o artigo sobre filtragem de conteúdo.

Clean up resources (Limpar recursos)

Você pode usar o portal do Azure ou a CLI (Interface de Linha de Comando) do Azure para remover o recurso de Fala criado.

Pacote de documentação | de referência (PyPi) | Amostras adicionais no GitHub

Neste guia de instruções, você pode usar o Azure AI Speech para conversar com o Azure OpenAI no Azure AI Foundry Models. O texto reconhecido pelo serviço de Fala é enviado para o Azure OpenAI. O serviço de Fala sintetiza a fala a partir da resposta de texto do Azure OpenAI.

Fale ao microfone para iniciar uma conversa com o Azure OpenAI.

  • O serviço de Fala reconhece sua fala e a converte em texto (fala para texto).
  • Sua solicitação como texto é enviada para o Azure OpenAI.
  • 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 idas e vindas, o Azure OpenAI não se lembra do contexto da sua conversa.

Pré-requisitos

Configurar o ambiente

O Speech SDK for Python está disponível como um módulo Python Package Index (PyPI). O Speech SDK for Python é compatível com Windows, Linux e macOS.

Instale uma versão do Python a partir da versão 3.7 ou posterior. Primeiro, verifique o guia de instalação do SDK para obter mais requisitos.

Instale as seguintes bibliotecas Python: os, requests, json.

Definir variáveis de ambiente

Este exemplo requer variáveis de ambiente denominadas AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_CHAT_DEPLOYMENT, SPEECH_KEYe 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ê pode acessar as variáveis de ambiente do seu código para autenticar seu aplicativo. Para produção, use uma maneira mais segura de armazenar e acessar suas credenciais.

Importante

Recomendamos a autenticação do Microsoft Entra ID com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.

Use chaves de API com cuidado. 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 Cofre de Chaves do Azure, gire as chaves regularmente e restrinja o acesso ao Cofre de Chaves do Azure 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, consulte Chaves de API com o Cofre de Chaves do Azure.

Para obter mais informações sobre segurança de serviços de IA, consulte Autenticar solicitações para serviços de IA do Azure.

Para definir as variáveis de ambiente, abra uma janela de console e siga as instruções para seu sistema operacional e ambiente de desenvolvimento.

  • Para definir a AZURE_OPENAI_API_KEY variável de ambiente, substitua your-openai-key por uma das chaves do seu recurso.
  • Para definir a AZURE_OPENAI_ENDPOINT variável de ambiente, substitua your-openai-endpoint por uma das regiões do seu recurso.
  • Para definir a AZURE_OPENAI_CHAT_DEPLOYMENT variável de ambiente, substitua your-openai-deployment-name por uma das regiões do seu recurso.
  • Para definir a SPEECH_KEY variável de ambiente, substitua your-speech-key por uma das chaves do seu recurso.
  • Para definir a SPEECH_REGION variável de ambiente, substitua your-speech-region por uma das regiões do seu 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

Nota

Se você só precisar acessar 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 adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os 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 voz a partir de um microfone

Siga estas etapas para criar um novo aplicativo de console.

  1. Abra uma janela de prompt de comando na pasta onde você deseja o novo projeto. Abra um prompt de comando onde você deseja o novo projeto e crie um novo arquivo chamado azure-openai-speech.py.

  2. Execute este comando para instalar o SDK de fala:

    pip install azure-cognitiveservices-speech
    
  3. Execute este comando para instalar o OpenAI SDK:

    pip install openai
    

    Nota

    Esta 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 da biblioteca.

  4. Crie um arquivo chamado azure-openai-speech.py. Copie o seguinte código para esse 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))
    
  5. Para aumentar ou diminuir o número de tokens retornados pelo Azure OpenAI, altere o max_tokens parâmetro. Para obter mais informações sobre tokens e implicações de custo, consulte Tokens do Azure OpenAI e Preços do Azure OpenAI.

  6. 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 AZURE_OPENAI_API_KEYvariáveis , AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_CHAT_DEPLOYMENTSPEECH_KEYe SPEECH_REGION ambiente conforme descrito anteriormente. Se você não definir essas variáveis, o exemplo falhará com uma mensagem de erro.

Fale ao microfone quando solicitado. A saída do console inclui o prompt para você começar a falar, em seguida, sua solicitação como texto e, em seguida, a resposta do Azure OpenAI como texto. A resposta do Azure OpenAI deve ser convertida de texto em fala e, em seguida, saída 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> 

Observações

Aqui estão mais algumas considerações:

  • Para alterar o idioma de reconhecimento de fala, substitua en-US por outro idioma suportado. Por exemplo, es-ES para o 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 ouve, substitua en-US-JennyMultilingualNeural por outra voz suportada. Se a voz não falar o idioma do texto retornado do Azure OpenAI, o serviço de Fala não produzirá áudio sintetizado.
  • Para reduzir a latência da saída de texto para 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 o streaming de texto.
  • Para habilitar o TTS Avatar como uma experiência visual de saída de fala, consulte a síntese em tempo real para avatar de texto para fala e código de exemplo para cenário de bate-papo com avatar.
  • O Azure OpenAI também executa a moderação de conteúdo nas entradas de prompt e saídas geradas. As solicitações ou respostas podem ser filtradas se for detetado conteúdo nocivo. Para obter mais informações, consulte o artigo sobre filtragem de conteúdo.

Clean up resources (Limpar recursos)

Você pode usar o portal do Azure ou a CLI (Interface de Linha de Comando) do Azure para remover o recurso de Fala criado.