Obrolan ucapan ke ucapan Azure OpenAI

Dokumentasi referensi | Paket (NuGet) | Sampel Tambahan pada GitHub

Dalam panduan cara ini, Anda dapat menggunakan Azure AI Speech untuk berkomunikasi dengan Azure OpenAI Service. Teks yang dikenali oleh layanan Ucapan dikirim ke Azure OpenAI. Layanan Ucapan mensintesis ucapan dari respons teks dari Azure OpenAI.

Bicaralah ke mikrofon untuk memulai percakapan dengan Azure OpenAI.

  • Layanan Ucapan mengenali ucapan Anda dan mengonversinya menjadi teks (ucapan ke teks).
  • Permintaan Anda saat teks dikirim ke Azure OpenAI.
  • Fitur teks ke ucapan layanan Ucapan mensintesis respons dari Azure OpenAI ke pembicara default.

Meskipun pengalaman contoh ini adalah pertukaran bolak-balik, Azure OpenAI tidak ingat konteks percakapan Anda.

Penting

Untuk menyelesaikan langkah-langkah dalam panduan ini, Anda harus memiliki akses ke Layanan Microsoft Azure OpenAI di langganan Azure Anda. Saat ini, akses ke layanan ini hanya diberikan oleh aplikasi. Terapkan untuk akses ke Azure OpenAI dengan melengkapi formulir di https://aka.ms/oai/access.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Buat sumber daya Microsoft Azure OpenAI Service di portal Azure.
  • Sebarkan model di sumber daya Azure OpenAI Anda. Untuk informasi selengkapnya tentang penyebaran model, lihat panduan penyebaran sumber daya Azure OpenAI.
  • Dapatkan kunci sumber daya dan titik akhir Azure OpenAI. Setelah sumber daya Azure OpenAI Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.
  • Buat sumber daya Ucapan di portal Azure.
  • Dapatkan kunci dan wilayah sumber daya Ucapan. Setelah sumber daya Azure Cognitive Service untuk Ucapan Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.

Menyiapkan lingkungan

Speech SDK tersedia sebagai paket NuGet dan menerapkan .NET Standar 2.0. Anda menginstal Speech SDK nanti dalam panduan ini, tetapi pertama-tama periksa panduan penginstalan SDK untuk persyaratan lainnya.

Atur variabel lingkungan

Contoh ini memerlukan variabel lingkungan bernama OPEN_AI_KEY, , OPEN_AI_ENDPOINT, OPEN_AI_DEPLOYMENT_NAMESPEECH_KEY, dan SPEECH_REGION.

Aplikasi Anda harus diautentikasi untuk mengakses sumber daya layanan Azure AI. Untuk produksi, gunakan cara yang aman dalam menyimpan dan mengakses info masuk Anda. Misalnya, setelah Anda mendapatkan kunci untuk sumber daya Ucapan Anda, tulis ke variabel lingkungan baru di komputer lokal yang menjalankan aplikasi.

Tip

Jangan sertakan kunci langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Lihat Keamanan layanan Azure AI untuk opsi autentikasi lainnya seperti Azure Key Vault.

Untuk mengatur variabel lingkungan, buka jendela konsol, dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  • Untuk mengatur OPEN_AI_KEY variabel lingkungan, ganti your-openai-key dengan salah satu kunci untuk sumber daya Anda.
  • Untuk mengatur OPEN_AI_ENDPOINT variabel lingkungan, ganti your-openai-endpoint dengan salah satu wilayah untuk sumber daya Anda.
  • Untuk mengatur OPEN_AI_DEPLOYMENT_NAME variabel lingkungan, ganti your-openai-deployment-name dengan salah satu wilayah untuk sumber daya Anda.
  • Untuk mengatur SPEECH_KEY variabel lingkungan, ganti your-speech-key dengan salah satu kunci untuk sumber daya Anda.
  • Untuk mengatur SPEECH_REGION variabel lingkungan, ganti your-speech-region dengan salah satu wilayah untuk sumber daya Anda.
setx OPEN_AI_KEY your-openai-key
setx OPEN_AI_ENDPOINT your-openai-endpoint
setx OPEN_AI_DEPLOYMENT_NAME your-openai-deployment-name
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region

Catatan

Jika Anda hanya perlu mengakses variabel lingkungan di konsol yang sedang berjalan saat ini, atur variabel lingkungan dengan set alih-alih setx.

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang perlu membaca variabel lingkungan, termasuk jendela konsol. Misalnya, jika Visual Studio adalah editor Anda, mulai ulang Visual Studio sebelum menjalankan contoh.

Mengenali ucapan dari mikrofon

Ikuti langkah-langkah ini untuk membuat aplikasi konsol baru.

  1. Buka jendela prompt perintah di folder tempat Anda menginginkan proyek baru. Jalankan perintah ini untuk membuat aplikasi konsol dengan .NET CLI.

    dotnet new console
    

    Perintah membuat file Program.cs di direktori proyek.

  2. Pasang Speech SDK di proyek baru Anda dengan .NET CLI.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. Instal Azure OpenAI SDK (prarilis) di proyek baru Anda dengan .NET CLI.

    dotnet add package Azure.AI.OpenAI --prerelease 
    
  4. Ganti isi Program.cs dengan kode berikut.

    using System.Text;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Azure;
    using Azure.AI.OpenAI;
    
    // This example requires environment variables named "OPEN_AI_KEY", "OPEN_AI_ENDPOINT" and "OPEN_AI_DEPLOYMENT_NAME"
    // Your endpoint should look like the following https://YOUR_OPEN_AI_RESOURCE_NAME.openai.azure.com/
    string openAIKey = Environment.GetEnvironmentVariable("OPEN_AI_KEY") ??
                       throw new ArgumentException("Missing OPEN_AI_KEY");
    string openAIEndpoint = Environment.GetEnvironmentVariable("OPEN_AI_ENDPOINT") ??
                            throw new ArgumentException("Missing OPEN_AI_ENDPOINT");
    
    // Enter the deployment name you chose when you deployed the model.
    string engine = Environment.GetEnvironmentVariable("OPEN_AI_DEPLOYMENT_NAME") ??
                    throw new ArgumentException("Missing OPEN_AI_DEPLOYMENT_NAME");
    
    // 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 ChatWithOpenAI();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
    }
    
    // Prompts Azure OpenAI with a request and synthesizes the response.
    async Task AskOpenAI(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 ChatWithOpenAI()
    {
        // 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 AskOpenAI(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. Untuk menambah atau mengurangi jumlah token yang dikembalikan oleh Azure OpenAI, ubah MaxTokens properti di ChatCompletionsOptions instans kelas. Untuk informasi selengkapnya token dan implikasi biaya, lihat Token Azure OpenAI dan harga Azure OpenAI.

  6. Jalankan aplikasi konsol baru Anda untuk memulai pengenalan ucapan dari mikrofon:

    dotnet run
    

Penting

Pastikan Anda mengatur OPEN_AI_KEYvariabel lingkungan , OPEN_AI_ENDPOINT, OPEN_AI_DEPLOYMENT_NAME, SPEECH_KEY dan SPEECH_REGIONseperti yang dijelaskan. Jika Anda tidak mengatur variabel ini, sampel akan gagal dengan pesan kesalahan.

Bicaralah ke mikrofon Saat diminta. Output konsol mencakup perintah bagi Anda untuk mulai berbicara, lalu permintaan Anda sebagai teks, lalu respons dari Azure OpenAI sebagai teks. Respons dari Azure OpenAI harus dikonversi dari teks ke ucapan lalu output ke speaker default.

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>

Keterangan

Berikut adalah beberapa pertimbangan lainnya:

  • Untuk mengubah bahasa pengenalan ucapan, ganti en-US dengan bahasa lain yang didukung. Misalnya, es-ES untuk Spanyol (Spanyol). Bahasa defaultnya adalah en-US. Untuk detail tentang cara mengidentifikasi salah satu dari beberapa bahasa yang mungkin diucapkan, lihat identifikasi bahasa.
  • Untuk mengubah suara yang Anda dengar, ganti en-US-JennyMultilingualNeural dengan suara lain yang didukung. Jika suara tidak berbicara bahasa teks yang dikembalikan dari Azure OpenAI, layanan Ucapan tidak menghasilkan audio yang disintesis.
  • Untuk menggunakan model lain, ganti gpt-35-turbo-instruct dengan ID penyebaran lain. ID penyebaran tidak selalu sama dengan nama model. Anda menamai penyebaran saat membuatnya di Azure OpenAI Studio.
  • Azure OpenAI juga melakukan con mode tenda ration pada input prompt dan output yang dihasilkan. Perintah atau respons mungkin difilter jika konten berbahaya terdeteksi. Untuk informasi selengkapnya, lihat artikel pemfilteran konten.

Membersihkan sumber daya

Anda dapat menggunakan portal Azure atau Azure Command Line Interface (CLI) untuk menghapus sumber daya Ucapan yang Anda buat.

Dokumentasi referensi | Paket (PyPi) | Sampel Tambahan pada GitHub

Dalam panduan cara ini, Anda dapat menggunakan Azure AI Speech untuk berkomunikasi dengan Azure OpenAI Service. Teks yang dikenali oleh layanan Ucapan dikirim ke Azure OpenAI. Layanan Ucapan mensintesis ucapan dari respons teks dari Azure OpenAI.

Bicaralah ke mikrofon untuk memulai percakapan dengan Azure OpenAI.

  • Layanan Ucapan mengenali ucapan Anda dan mengonversinya menjadi teks (ucapan ke teks).
  • Permintaan Anda saat teks dikirim ke Azure OpenAI.
  • Fitur teks ke ucapan layanan Ucapan mensintesis respons dari Azure OpenAI ke pembicara default.

Meskipun pengalaman contoh ini adalah pertukaran bolak-balik, Azure OpenAI tidak ingat konteks percakapan Anda.

Penting

Untuk menyelesaikan langkah-langkah dalam panduan ini, Anda harus memiliki akses ke Layanan Microsoft Azure OpenAI di langganan Azure Anda. Saat ini, akses ke layanan ini hanya diberikan oleh aplikasi. Terapkan untuk akses ke Azure OpenAI dengan melengkapi formulir di https://aka.ms/oai/access.

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Buat sumber daya Microsoft Azure OpenAI Service di portal Azure.
  • Sebarkan model di sumber daya Azure OpenAI Anda. Untuk informasi selengkapnya tentang penyebaran model, lihat panduan penyebaran sumber daya Azure OpenAI.
  • Dapatkan kunci sumber daya dan titik akhir Azure OpenAI. Setelah sumber daya Azure OpenAI Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.
  • Buat sumber daya Ucapan di portal Azure.
  • Dapatkan kunci dan wilayah sumber daya Ucapan. Setelah sumber daya Azure Cognitive Service untuk Ucapan Anda disebarkan, pilih Buka sumber daya untuk melihat dan mengelola kunci. Untuk informasi selengkapnya tentang sumber daya layanan Azure AI, lihat Mendapatkan kunci untuk sumber daya Anda.

Menyiapkan lingkungan

Speech SDK untuk Python tersedia sebagai modul Indeks Paket Python (PyPI). Speech SDK untuk Python kompatibel dengan Windows, Linux, dan macOS.

Instal versi Python dari 3.7 atau yang lebih baru. Pertama-tama periksa panduan penginstalan SDK untuk persyaratan lain.

Instal pustaka Python berikut: os, , requestsjson.

Atur variabel lingkungan

Contoh ini memerlukan variabel lingkungan bernama OPEN_AI_KEY, , OPEN_AI_ENDPOINT, OPEN_AI_DEPLOYMENT_NAMESPEECH_KEY, dan SPEECH_REGION.

Aplikasi Anda harus diautentikasi untuk mengakses sumber daya layanan Azure AI. Untuk produksi, gunakan cara yang aman dalam menyimpan dan mengakses info masuk Anda. Misalnya, setelah Anda mendapatkan kunci untuk sumber daya Ucapan Anda, tulis ke variabel lingkungan baru di komputer lokal yang menjalankan aplikasi.

Tip

Jangan sertakan kunci langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Lihat Keamanan layanan Azure AI untuk opsi autentikasi lainnya seperti Azure Key Vault.

Untuk mengatur variabel lingkungan, buka jendela konsol, dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  • Untuk mengatur OPEN_AI_KEY variabel lingkungan, ganti your-openai-key dengan salah satu kunci untuk sumber daya Anda.
  • Untuk mengatur OPEN_AI_ENDPOINT variabel lingkungan, ganti your-openai-endpoint dengan salah satu wilayah untuk sumber daya Anda.
  • Untuk mengatur OPEN_AI_DEPLOYMENT_NAME variabel lingkungan, ganti your-openai-deployment-name dengan salah satu wilayah untuk sumber daya Anda.
  • Untuk mengatur SPEECH_KEY variabel lingkungan, ganti your-speech-key dengan salah satu kunci untuk sumber daya Anda.
  • Untuk mengatur SPEECH_REGION variabel lingkungan, ganti your-speech-region dengan salah satu wilayah untuk sumber daya Anda.
setx OPEN_AI_KEY your-openai-key
setx OPEN_AI_ENDPOINT your-openai-endpoint
setx OPEN_AI_DEPLOYMENT_NAME your-openai-deployment-name
setx SPEECH_KEY your-speech-key
setx SPEECH_REGION your-speech-region

Catatan

Jika Anda hanya perlu mengakses variabel lingkungan di konsol yang sedang berjalan saat ini, atur variabel lingkungan dengan set alih-alih setx.

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang perlu membaca variabel lingkungan, termasuk jendela konsol. Misalnya, jika Visual Studio adalah editor Anda, mulai ulang Visual Studio sebelum menjalankan contoh.

Mengenali ucapan dari mikrofon

Ikuti langkah-langkah ini untuk membuat aplikasi konsol baru.

  1. Buka jendela prompt perintah di folder tempat Anda menginginkan proyek baru. Buka perintah di mana Anda menginginkan proyek baru, dan buat file baru bernama openai-speech.py.

  2. Jalankan perintah ini untuk menginstal SDK Ucapan:

    pip install azure-cognitiveservices-speech
    
  3. Jalankan perintah ini untuk menginstal OpenAI SDK:

    pip install openai
    

    Catatan

    Pustaka ini dikelola oleh OpenAI, bukan Microsoft Azure. Lihat riwayat rilis atau riwayat penerapan version.py untuk melacak pembaruan terbaru ke pustaka.

  4. Buat file bernama openai-speech.py. Salin kode berikut ke dalam file tersebut:

    import os
    import azure.cognitiveservices.speech as speechsdk
    from openai import AzureOpenAI
    
    # This example requires environment variables named "OPEN_AI_KEY", "OPEN_AI_ENDPOINT" and "OPEN_AI_DEPLOYMENT_NAME"
    # Your endpoint should look like the following https://YOUR_OPEN_AI_RESOURCE_NAME.openai.azure.com/
    client = AzureOpenAI(
    azure_endpoint=os.environ.get('OPEN_AI_ENDPOINT'),
    api_key=os.environ.get('OPEN_AI_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('OPEN_AI_DEPLOYMENT_NAME')
    
    # 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_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_open_ai():
        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_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_open_ai()
    except Exception as err:
        print("Encountered exception. {}".format(err))
    
  5. Untuk menambah atau mengurangi jumlah token yang dikembalikan oleh Azure OpenAI, ubah max_tokens parameter . Untuk informasi selengkapnya token dan implikasi biaya, lihat Token Azure OpenAI dan harga Azure OpenAI.

  6. Jalankan aplikasi konsol baru Anda untuk memulai pengenalan ucapan dari mikrofon:

    python openai-speech.py
    

Penting

Pastikan Anda mengatur OPEN_AI_KEYvariabel lingkungan , OPEN_AI_ENDPOINT, OPEN_AI_DEPLOYMENT_NAME, SPEECH_KEY dan SPEECH_REGION seperti yang dijelaskan sebelumnya. Jika Anda tidak mengatur variabel ini, sampel akan gagal dengan pesan kesalahan.

Bicaralah ke mikrofon Saat diminta. Output konsol mencakup perintah bagi Anda untuk mulai berbicara, lalu permintaan Anda sebagai teks, lalu respons dari Azure OpenAI sebagai teks. Respons dari Azure OpenAI harus dikonversi dari teks ke ucapan lalu output ke speaker default.

PS C:\dev\openai\python> python.exe .\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> 

Keterangan

Berikut adalah beberapa pertimbangan lainnya:

  • Untuk mengubah bahasa pengenalan ucapan, ganti en-US dengan bahasa lain yang didukung. Misalnya, es-ES untuk Spanyol (Spanyol). Bahasa defaultnya adalah en-US. Untuk detail tentang cara mengidentifikasi salah satu dari beberapa bahasa yang mungkin diucapkan, lihat identifikasi bahasa.
  • Untuk mengubah suara yang Anda dengar, ganti en-US-JennyMultilingualNeural dengan suara lain yang didukung. Jika suara tidak berbicara bahasa teks yang dikembalikan dari Azure OpenAI, layanan Ucapan tidak menghasilkan audio yang disintesis.
  • Untuk menggunakan model lain, ganti gpt-35-turbo-instruct dengan ID penyebaran lain. Perlu diingat bahwa ID penyebaran belum tentu sama dengan nama model. Anda menamai penyebaran saat membuatnya di Azure OpenAI Studio.
  • Azure OpenAI juga melakukan con mode tenda ration pada input prompt dan output yang dihasilkan. Perintah atau respons mungkin difilter jika konten berbahaya terdeteksi. Untuk informasi selengkapnya, lihat artikel pemfilteran konten.

Membersihkan sumber daya

Anda dapat menggunakan portal Azure atau Azure Command Line Interface (CLI) untuk menghapus sumber daya Ucapan yang Anda buat.