Compartilhar via


Chat de fala para fala do OpenAI do Azure

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

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

  1. 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.

  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 (versão prévia) em seu novo projeto com a CLI do .NET.

    dotnet add package Azure.AI.OpenAI --prerelease 
    
  4. 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;
            }
        }
    }
    
  5. Para aumentar ou diminuir o número de tokens retornados pelo OpenAI do Azure, altere a propriedade MaxTokens na instância de classe ChatCompletionsOptions. 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.

  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 de ambienteAZURE_OPENAI_ENDPOINTAZURE_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 outro en-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

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

  1. 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.

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

    pip install azure-cognitiveservices-speech
    
  3. 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.

  4. 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))
    
  5. 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.

  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 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 outro en-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.