Sdílet prostřednictvím


Azure OpenAI Speech to speech chat

Referenční dokumentace | Package (NuGet) | Další ukázky na GitHubu

V tomto návodu můžete pomocí služby Azure AI Speech komunikovat s Azure OpenAI v modelech Azure AI Foundry. Text rozpoznaný službou Speech se odešle do Azure OpenAI. Služba Speech syntetizuje řeč z textové odpovědi z Azure OpenAI.

Mluvte do mikrofonu a zahajte konverzaci s Azure OpenAI.

  • Služba Speech rozpozná vaši řeč a převede ji na text (řeč na text).
  • Váš požadavek jako text se odešle do Azure OpenAI.
  • Funkce převodu textu služby Speech na řeč syntetizuje odpověď z Azure OpenAI na výchozího mluvčího.

I když je prostředí tohoto příkladu výměnou zpět a zpět, Azure OpenAI si nepamatuje kontext vaší konverzace.

Požadavky

Nastavení prostředí

Sada Speech SDK je k dispozici jako balíček NuGet a implementuje .NET Standard 2.0. Sadu Speech SDK nainstalujete později v této příručce, ale nejprve si projděte průvodce instalací sady SDK, kde najdete další požadavky.

Nastavení proměnných prostředí

Tento příklad vyžaduje proměnné prostředí s názvem AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_CHAT_DEPLOYMENT, SPEECH_KEYa SPEECH_REGION.

Aby vaše aplikace získala přístup k prostředkům Azure AI Foundry, musí být ověřená. V tomto článku se dozvíte, jak pomocí proměnných prostředí ukládat přihlašovací údaje. Pak můžete přistupovat k proměnným prostředí z kódu, abyste aplikaci ověřili. V produkčním prostředí použijte bezpečnější způsob, jak ukládat přihlašovací údaje a přistupovat k němu.

Důležité

Doporučujeme ověřování Microsoft Entra ID se spravovanými identitami pro prostředky Azure, abyste se vyhnuli ukládání přihlašovacích údajů s aplikacemi, které běží v cloudu.

Používejte klíče rozhraní API s opatrností. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně. Pokud používáte klíče rozhraní API, bezpečně je uložte ve službě Azure Key Vault, pravidelně je obměňujte a omezte přístup ke službě Azure Key Vault pomocí řízení přístupu na základě rolí a omezení přístupu k síti. Další informace o bezpečném používání klíčů ROZHRANÍ API ve vašich aplikacích najdete v tématu Klíče rozhraní API se službou Azure Key Vault.

Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.

Pokud chcete nastavit proměnné prostředí, otevřete okno konzoly a postupujte podle pokynů pro operační systém a vývojové prostředí.

  • Pokud chcete nastavit proměnnou AZURE_OPENAI_API_KEY prostředí, nahraďte your-openai-key jedním z klíčů pro váš prostředek.
  • Pokud chcete nastavit proměnnou AZURE_OPENAI_ENDPOINT prostředí, nahraďte your-openai-endpoint jednou z oblastí vašeho prostředku.
  • Pokud chcete nastavit proměnnou AZURE_OPENAI_CHAT_DEPLOYMENT prostředí, nahraďte your-openai-deployment-name jednou z oblastí vašeho prostředku.
  • Pokud chcete nastavit proměnnou SPEECH_KEY prostředí, nahraďte your-speech-key jedním z klíčů pro váš prostředek.
  • Pokud chcete nastavit proměnnou SPEECH_REGION prostředí, nahraďte your-speech-region jednou z oblastí vašeho prostředku.
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

Poznámka:

Pokud potřebujete přístup pouze k proměnné prostředí v aktuální spuštěné konzole, nastavte proměnnou prostředí místo setsetx.

Po přidání proměnných prostředí možná budete muset restartovat všechny spuštěné programy, které potřebují přečíst proměnnou prostředí, včetně okna konzoly. Pokud je například visual Studio vaším editorem, restartujte sadu Visual Studio před spuštěním příkladu.

Rozpoznávání řeči z mikrofonu

Pomocí těchto kroků vytvořte novou konzolovou aplikaci.

  1. Ve složce, ve které chcete nový projekt, otevřete okno příkazového řádku. Spuštěním tohoto příkazu vytvořte konzolovou aplikaci pomocí rozhraní příkazového řádku .NET CLI.

    dotnet new console
    

    Příkaz vytvoří soubor Program.cs v adresáři projektu.

  2. Nainstalujte sadu Speech SDK do nového projektu pomocí rozhraní příkazového řádku .NET.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. Nainstalujte sadu Azure OpenAI SDK (předběžně) do nového projektu pomocí .NET CLI.

    dotnet add package Azure.AI.OpenAI --prerelease 
    
  4. Nahraďte obsah Program.cs následujícím kódem.

    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. Pokud chcete zvýšit nebo snížit počet tokenů vrácených službou Azure OpenAI, změňte MaxTokens vlastnost v ChatCompletionsOptions instanci třídy. Další informace otokench

  6. Spuštěním nové konzolové aplikace spusťte rozpoznávání řeči z mikrofonu:

    dotnet run
    

Důležité

Ujistěte se, že jste nastavili AZURE_OPENAI_API_KEYproměnné prostředí , AZURE_OPENAI_ENDPOINTAZURE_OPENAI_CHAT_DEPLOYMENTSPEECH_KEYa SPEECH_REGIONproměnné prostředí, jak je popsáno. Pokud tyto proměnné nenastavíte, ukázka selže s chybovou zprávou.

Po zobrazení výzvy promluvte do mikrofonu. Výstup konzoly obsahuje výzvu, abyste mohli začít mluvit, pak váš požadavek jako text a odpověď z Azure OpenAI jako text. Odpověď z Azure OpenAI by se měla převést z textu na řeč a pak výstupem do výchozího mluvčího.

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>

Poznámky

Tady je několik dalších aspektů:

  • Pokud chcete změnit jazyk rozpoznávání řeči, nahraďte en-US jiným podporovaným jazykem. Například es-ES pro španělštinu (Španělsko). Výchozí jazyk je en-US. Podrobnosti o tom, jak identifikovat jeden z více jazyků, které by mohly být mluvené, najdete v tématu identifikace jazyka.
  • Pokud chcete změnit hlas, který uslyšíte, nahraďte en-US-JennyMultilingualNeural jiným podporovaným hlasem. Pokud hlas nemluví jazykem textu vráceného z Azure OpenAI, služba Speech nevypíše syntetizovaný zvuk.
  • Pokud chcete snížit latenci výstupu textu na řeč, použijte funkci streamování textu, která umožňuje zpracování textu v reálném čase pro rychlé generování zvuku a minimalizuje latenci, zvyšuje plynulost a odezvu zvukových výstupů v reálném čase. Přečtěte si , jak používat streamování textu.
  • Pokud chcete funkci TTS Avatar povolit jako vizuální prostředí výstupu řeči, projděte si syntézu textu na avatar řeči v reálném čase a ukázkový kód pro scénář chatu s avatarem.
  • Azure OpenAI také provádí kon režim stanu ration na vstupech výzvy a generovaných výstupech. Výzvy nebo odpovědi můžou být filtrovány, pokud je zjištěn škodlivý obsah. Další informace najdete v článku o filtrování obsahu.

Vyčištění prostředků

Prostředek služby Speech, který jste vytvořili, můžete odebrat pomocí webu Azure Portal nebo rozhraní příkazového řádku Azure (CLI ).

Referenční dokumentace | Package (PyPi) | Další ukázky na GitHubu

V tomto návodu můžete pomocí služby Azure AI Speech komunikovat s Azure OpenAI v modelech Azure AI Foundry. Text rozpoznaný službou Speech se odešle do Azure OpenAI. Služba Speech syntetizuje řeč z textové odpovědi z Azure OpenAI.

Mluvte do mikrofonu a zahajte konverzaci s Azure OpenAI.

  • Služba Speech rozpozná vaši řeč a převede ji na text (řeč na text).
  • Váš požadavek jako text se odešle do Azure OpenAI.
  • Funkce převodu textu služby Speech na řeč syntetizuje odpověď z Azure OpenAI na výchozího mluvčího.

I když je prostředí tohoto příkladu výměnou zpět a zpět, Azure OpenAI si nepamatuje kontext vaší konverzace.

Požadavky

Nastavení prostředí

Sada Speech SDK pro Python je k dispozici jako modul PyPI (Python Package Index). Sada Speech SDK pro Python je kompatibilní s Windows, Linuxem a macOS.

Nainstalujte verzi Pythonu z verze 3.7 nebo novější. Nejprve si projděte průvodce instalací sady SDK, kde najdete další požadavky.

Nainstalujte následující knihovny Pythonu: os, requests. json

Nastavení proměnných prostředí

Tento příklad vyžaduje proměnné prostředí s názvem AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_CHAT_DEPLOYMENT, SPEECH_KEYa SPEECH_REGION.

Aby vaše aplikace získala přístup k prostředkům Azure AI Foundry, musí být ověřená. V tomto článku se dozvíte, jak pomocí proměnných prostředí ukládat přihlašovací údaje. Pak můžete přistupovat k proměnným prostředí z kódu, abyste aplikaci ověřili. V produkčním prostředí použijte bezpečnější způsob, jak ukládat přihlašovací údaje a přistupovat k němu.

Důležité

Doporučujeme ověřování Microsoft Entra ID se spravovanými identitami pro prostředky Azure, abyste se vyhnuli ukládání přihlašovacích údajů s aplikacemi, které běží v cloudu.

Používejte klíče rozhraní API s opatrností. Nezahrnujte klíč rozhraní API přímo do kódu a nikdy ho nevštěvujte veřejně. Pokud používáte klíče rozhraní API, bezpečně je uložte ve službě Azure Key Vault, pravidelně je obměňujte a omezte přístup ke službě Azure Key Vault pomocí řízení přístupu na základě rolí a omezení přístupu k síti. Další informace o bezpečném používání klíčů ROZHRANÍ API ve vašich aplikacích najdete v tématu Klíče rozhraní API se službou Azure Key Vault.

Další informace o zabezpečení služeb AI najdete v tématu Ověřování požadavků na služby Azure AI.

Pokud chcete nastavit proměnné prostředí, otevřete okno konzoly a postupujte podle pokynů pro operační systém a vývojové prostředí.

  • Pokud chcete nastavit proměnnou AZURE_OPENAI_API_KEY prostředí, nahraďte your-openai-key jedním z klíčů pro váš prostředek.
  • Pokud chcete nastavit proměnnou AZURE_OPENAI_ENDPOINT prostředí, nahraďte your-openai-endpoint jednou z oblastí vašeho prostředku.
  • Pokud chcete nastavit proměnnou AZURE_OPENAI_CHAT_DEPLOYMENT prostředí, nahraďte your-openai-deployment-name jednou z oblastí vašeho prostředku.
  • Pokud chcete nastavit proměnnou SPEECH_KEY prostředí, nahraďte your-speech-key jedním z klíčů pro váš prostředek.
  • Pokud chcete nastavit proměnnou SPEECH_REGION prostředí, nahraďte your-speech-region jednou z oblastí vašeho prostředku.
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

Poznámka:

Pokud potřebujete přístup pouze k proměnné prostředí v aktuální spuštěné konzole, nastavte proměnnou prostředí místo setsetx.

Po přidání proměnných prostředí možná budete muset restartovat všechny spuštěné programy, které potřebují přečíst proměnnou prostředí, včetně okna konzoly. Pokud je například visual Studio vaším editorem, restartujte sadu Visual Studio před spuštěním příkladu.

Rozpoznávání řeči z mikrofonu

Pomocí těchto kroků vytvořte novou konzolovou aplikaci.

  1. Ve složce, ve které chcete nový projekt, otevřete okno příkazového řádku. Otevřete příkazový řádek, na kterém chcete nový projekt, a vytvořte nový soubor s názvem azure-openai-speech.py.

  2. Spuštěním tohoto příkazu nainstalujte sadu Speech SDK:

    pip install azure-cognitiveservices-speech
    
  3. Spuštěním tohoto příkazu nainstalujte sadu OpenAI SDK:

    pip install openai
    

    Poznámka:

    Tuto knihovnu udržuje OpenAI, nikoli Microsoft Azure. Informace o nejnovějších aktualizacích knihovny najdete v historii vydaných verzí nebo historii potvrzení version.py.

  4. Vytvořte soubor s názvem azure-openai-speech.py. Do tohoto souboru zkopírujte následující kód:

    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. Pokud chcete zvýšit nebo snížit počet tokenů vrácených službou Azure OpenAI, změňte max_tokens parametr. Další informace otokench

  6. Spuštěním nové konzolové aplikace spusťte rozpoznávání řeči z mikrofonu:

    python azure-openai-speech.py
    

Důležité

Ujistěte se, že jste nastavili AZURE_OPENAI_API_KEYproměnné , AZURE_OPENAI_ENDPOINTAZURE_OPENAI_CHAT_DEPLOYMENTSPEECH_KEYa SPEECH_REGION prostředí, jak je popsáno výše. Pokud tyto proměnné nenastavíte, ukázka selže s chybovou zprávou.

Po zobrazení výzvy promluvte do mikrofonu. Výstup konzoly obsahuje výzvu, abyste mohli začít mluvit, pak váš požadavek jako text a odpověď z Azure OpenAI jako text. Odpověď z Azure OpenAI by se měla převést z textu na řeč a pak výstupem do výchozího mluvčího.

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> 

Poznámky

Tady je několik dalších aspektů:

  • Pokud chcete změnit jazyk rozpoznávání řeči, nahraďte en-US jiným podporovaným jazykem. Například es-ES pro španělštinu (Španělsko). Výchozí jazyk je en-US. Podrobnosti o tom, jak identifikovat jeden z více jazyků, které by mohly být mluvené, najdete v tématu identifikace jazyka.
  • Pokud chcete změnit hlas, který uslyšíte, nahraďte en-US-JennyMultilingualNeural jiným podporovaným hlasem. Pokud hlas nemluví jazykem textu vráceného z Azure OpenAI, služba Speech nevypíše syntetizovaný zvuk.
  • Pokud chcete snížit latenci výstupu textu na řeč, použijte funkci streamování textu, která umožňuje zpracování textu v reálném čase pro rychlé generování zvuku a minimalizuje latenci, zvyšuje plynulost a odezvu zvukových výstupů v reálném čase. Přečtěte si , jak používat streamování textu.
  • Pokud chcete funkci TTS Avatar povolit jako vizuální prostředí výstupu řeči, projděte si syntézu textu na avatar řeči v reálném čase a ukázkový kód pro scénář chatu s avatarem.
  • Azure OpenAI také provádí kon režim stanu ration na vstupech výzvy a generovaných výstupech. Výzvy nebo odpovědi můžou být filtrovány, pokud je zjištěn škodlivý obsah. Další informace najdete v článku o filtrování obsahu.

Vyčištění prostředků

Prostředek služby Speech, který jste vytvořili, můžete odebrat pomocí webu Azure Portal nebo rozhraní příkazového řádku Azure (CLI ).