Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Documentación de referencia | Paquete (NuGet) | Ejemplos adicionales en GitHub
En esta guía práctica, puede usar Azure AI Speech para conversar con Azure OpenAI en Azure AI Foundry Models. El texto reconocido por el servicio Voz se envía a Azure OpenAI. El servicio voz sintetiza la voz de la respuesta de texto de Azure OpenAI.
Hable en el micrófono para iniciar una conversación con Azure OpenAI.
- El servicio Voz reconoce la voz y la convierte en texto (conversión de voz en texto).
- La solicitud como texto se envía a Azure OpenAI.
- La característica de texto del servicio voz a voz sintetiza la respuesta de Azure OpenAI al altavoz predeterminado.
Aunque la experiencia de este ejemplo es un intercambio de ida y vuelta, Azure OpenAI no recuerda el contexto de la conversación.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Cree un recurso Microsoft Azure OpenAI en Azure AI Foundry Models en el portal de Azure.
- Implemente un modelo en el recurso de Azure OpenAI. Para obtener más información sobre la implementación de modelos, consulte la guía de implementación de recursos de Azure OpenAI.
- Obtenga la clave de recurso y el punto de conexión de Azure OpenAI. Una vez implementado el recurso de Azure OpenAI, seleccione Ir al recurso para ver y administrar las claves.
- Cree un recurso AI Foundry para voz en el portal de Azure.
- Obtenga la clave y la región del recurso de Voz. Una vez implementado el recurso de Voz, seleccione Ir al recurso para ver y administrar claves.
Configuración del entorno
El SDK de Voz está disponible como paquete NuGet e implementa .NET Standard 2.0. La instalación del SDK de Voz se describe en una sección más adelante de esta guía; primero consulte la SDK installation guide, (guía de instalación del SDK), para conocer otros requisitos.
Establecimiento de variables de entorno
En este ejemplo se requieren variables de entorno denominadas AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
y SPEECH_REGION
.
La aplicación debe autenticarse para acceder a los recursos de Azure AI Foundry. Este artículo le muestra cómo utilizar variables de entorno para almacenar sus credenciales. A continuación, puede acceder a las variables de entorno desde el código para autenticar la aplicación. Para producción, use una manera más segura de almacenar y acceder a sus credenciales.
Importante
Se recomienda la autenticación de Microsoft Entra ID con identidades administradas para los recursos de Azure para evitar almacenar credenciales con sus aplicaciones que se ejecutan en la nube.
Use las claves de API con precaución. No incluya la clave de API directamente en el código ni la exponga nunca públicamente. Si usa claves de API, almacénelas de forma segura en Azure Key Vault, rote las claves periódicamente y restrinja el acceso a Azure Key Vault mediante el rol basado en el control de acceso basado y las restricciones de acceso de red. Para más información sobre cómo utilizar las claves de API de forma segura en sus aplicaciones, consulte Claves de API con Azure Key Vault.
Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
Para establecer las variables de entorno, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y entorno de desarrollo.
- Para establecer la variable de entorno
AZURE_OPENAI_API_KEY
, reemplaceyour-openai-key
por una de las claves del recurso. - Para establecer la variable de entorno
AZURE_OPENAI_ENDPOINT
, reemplaceyour-openai-endpoint
por una de las regiones del recurso. - Para establecer la variable de entorno
AZURE_OPENAI_CHAT_DEPLOYMENT
, reemplaceyour-openai-deployment-name
por una de las regiones del recurso. - Para establecer la variable de entorno
SPEECH_KEY
, reemplaceyour-speech-key
por una de las claves del recurso. - Para establecer la variable de entorno
SPEECH_REGION
, reemplaceyour-speech-region
por una de las regiones del 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:
Si solo necesita acceder a la variable de entorno en la consola en ejecución actual, establezca la variable de entorno con set
en lugar de setx
.
Después de agregar las variables de entorno, es posible que tenga que reiniciar los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de la consola. Por ejemplo, si Visual Studio es el editor, reinicie Visual Studio antes de ejecutar el ejemplo.
Reconocimiento de voz a través de un micrófono
Siga estos pasos para crear una nueva aplicación de consola.
Abra una ventana del símbolo del sistema en la carpeta donde desee el nuevo proyecto. Ejecute este comando para crear una aplicación de consola con la CLI de .NET.
dotnet new console
El comando crea un archivo Program.cs en el directorio del proyecto.
Instale el SDK de Voz en el nuevo proyecto con la CLI de .NET.
dotnet add package Microsoft.CognitiveServices.Speech
Instale el SDK de Azure OpenAI (versión preliminar) en su nuevo proyecto con la CLI de .NET.
dotnet add package Azure.AI.OpenAI --prerelease
Reemplace el contenido de
Program.cs
por el código siguiente.using System.Text; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio; using Azure; using Azure.AI.OpenAI; // This example requires environment variables named "AZURE_OPENAI_API_KEY", "AZURE_OPENAI_ENDPOINT" and "AZURE_OPENAI_CHAT_DEPLOYMENT" // Your endpoint should look like the following https://YOUR_OPEN_AI_RESOURCE_NAME.openai.azure.com/ string openAIKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? throw new ArgumentException("Missing AZURE_OPENAI_API_KEY"); string openAIEndpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new ArgumentException("Missing AZURE_OPENAI_ENDPOINT"); // Enter the deployment name you chose when you deployed the model. string engine = Environment.GetEnvironmentVariable("AZURE_OPENAI_CHAT_DEPLOYMENT") ?? throw new ArgumentException("Missing AZURE_OPENAI_CHAT_DEPLOYMENT"); // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY") ?? throw new ArgumentException("Missing SPEECH_KEY"); string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION") ?? throw new ArgumentException("Missing SPEECH_REGION"); // Sentence end symbols for splitting the response into sentences. List<string> sentenceSaperators = new() { ".", "!", "?", ";", "。", "!", "?", ";", "\n" }; try { await ChatWithAzureOpenAI(); } catch (Exception ex) { Console.WriteLine(ex); } // Prompts Azure OpenAI with a request and synthesizes the response. async Task AskAzureOpenAI(string prompt) { object consoleLock = new(); var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion); // The language of the voice that speaks. speechConfig.SpeechSynthesisVoiceName = "en-US-JennyMultilingualNeural"; var audioOutputConfig = AudioConfig.FromDefaultSpeakerOutput(); using var speechSynthesizer = new SpeechSynthesizer(speechConfig, audioOutputConfig); speechSynthesizer.Synthesizing += (sender, args) => { lock (consoleLock) { Console.ForegroundColor = ConsoleColor.Yellow; Console.Write($"[Audio]"); Console.ResetColor(); } }; // Ask Azure OpenAI OpenAIClient client = new(new Uri(openAIEndpoint), new AzureKeyCredential(openAIKey)); var completionsOptions = new ChatCompletionsOptions() { DeploymentName = engine, Messages = { new ChatRequestUserMessage(prompt) }, MaxTokens = 100, }; var responseStream = await client.GetChatCompletionsStreamingAsync(completionsOptions); StringBuilder gptBuffer = new(); await foreach (var completionUpdate in responseStream) { var message = completionUpdate.ContentUpdate; if (string.IsNullOrEmpty(message)) { continue; } lock (consoleLock) { Console.ForegroundColor = ConsoleColor.DarkBlue; Console.Write($"{message}"); Console.ResetColor(); } gptBuffer.Append(message); if (sentenceSaperators.Any(message.Contains)) { var sentence = gptBuffer.ToString().Trim(); if (!string.IsNullOrEmpty(sentence)) { await speechSynthesizer.SpeakTextAsync(sentence); gptBuffer.Clear(); } } } } // Continuously listens for speech input to recognize and send as text to Azure OpenAI async Task ChatWithAzureOpenAI() { // Should be the locale for the speaker's language. var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion); speechConfig.SpeechRecognitionLanguage = "en-US"; using var audioConfig = AudioConfig.FromDefaultMicrophoneInput(); using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig); var conversationEnded = false; while (!conversationEnded) { Console.WriteLine("Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation."); // Get audio from the microphone and then send it to the TTS service. var speechRecognitionResult = await speechRecognizer.RecognizeOnceAsync(); switch (speechRecognitionResult.Reason) { case ResultReason.RecognizedSpeech: if (speechRecognitionResult.Text == "Stop.") { Console.WriteLine("Conversation ended."); conversationEnded = true; } else { Console.WriteLine($"Recognized speech: {speechRecognitionResult.Text}"); await AskAzureOpenAI(speechRecognitionResult.Text); } break; case ResultReason.NoMatch: Console.WriteLine($"No speech could be recognized: "); break; case ResultReason.Canceled: var cancellationDetails = CancellationDetails.FromResult(speechRecognitionResult); Console.WriteLine($"Speech Recognition canceled: {cancellationDetails.Reason}"); if (cancellationDetails.Reason == CancellationReason.Error) { Console.WriteLine($"Error details={cancellationDetails.ErrorDetails}"); } break; } } }
Para aumentar o disminuir el número de tokens devueltos por Azure OpenAI, cambie la propiedad
MaxTokens
en la instancia de la claseChatCompletionsOptions
. Para obtener más información sobre los tokens y las implicaciones de costos, consulte Tokens de Azure OpenAI y precios de Azure OpenAI.Ejecute la nueva aplicación de consola para iniciar el reconocimiento de voz a través de un micrófono:
dotnet run
Importante
Asegúrese de establecer las variables de entorno AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
y SPEECH_REGION
tal como se describe. Si no establece estas variables, se producirá un fallo en el ejemplo, con un mensaje de error.
Hable por el micrófono cuando se le solicite. La salida de la consola incluye el mensaje para empezar a hablar, luego la solicitud como texto y, a continuación, la respuesta de Azure OpenAI como texto. La respuesta de Azure OpenAI se debe convertir de texto a voz y, a continuación, emitirla en el altavoz predeterminado.
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>
Comentarios
Estas son algunas consideraciones más:
- Para cambiar el idioma de reconocimiento de voz, reemplace
en-US
por otroen-US
. Por ejemplo,es-ES
para Español (España). El lenguaje predeterminado esen-US
. Para obtener más información sobre cómo identificar uno de los distintos idiomas que se pueden hablar, consulte Identificación del idioma. - Para cambiar la voz que escucha, reemplace
en-US-JennyMultilingualNeural
con otra voz compatible. Si la voz no habla el idioma del texto que devuelve Azure OpenAI, el servicio Voz no emite audio sintetizado. - Para reducir la latencia de la salida de texto a voz, use la característica de streaming de texto, que permite el procesamiento de texto en tiempo real para una generación rápida de audio y minimiza la latencia, lo que mejora la fluidez y la capacidad de respuesta de las salidas de audio en tiempo real. Consulte cómo usar el streaming de texto.
- Para habilitar el avatar de TTS como experiencia visual de la salida de voz, consulte el artículo sobre la síntesis en tiempo real para el avatar de texto a voz y el código de ejemplo para escenarios de chat con avatar.
- El servicio Azure OpenAI también realiza la moderación de contenido en las entradas de solicitud y salidas generadas. Las solicitudes o respuestas se pueden filtrar si se detecta contenido dañino. Para obtener más información, consulte el artículo sobre filtros de contenido.
Limpieza de recursos
Puede usar Azure Portal o la Interfaz de la línea de comandos (CLI) de Azure para quitar el recurso de Voz que creó.
Documentación de referencia | Paquete (PyPi) | Ejemplos adicionales en GitHub
En esta guía práctica, puede usar Azure AI Speech para conversar con Azure OpenAI en Azure AI Foundry Models. El texto reconocido por el servicio Voz se envía a Azure OpenAI. El servicio voz sintetiza la voz de la respuesta de texto de Azure OpenAI.
Hable en el micrófono para iniciar una conversación con Azure OpenAI.
- El servicio Voz reconoce la voz y la convierte en texto (conversión de voz en texto).
- La solicitud como texto se envía a Azure OpenAI.
- La característica de texto del servicio voz a voz sintetiza la respuesta de Azure OpenAI al altavoz predeterminado.
Aunque la experiencia de este ejemplo es un intercambio de ida y vuelta, Azure OpenAI no recuerda el contexto de la conversación.
Requisitos previos
- Una suscripción a Azure: cree una cuenta gratuita
- Cree un recurso Microsoft Azure OpenAI en Azure AI Foundry Models en el portal de Azure.
- Implemente un modelo en el recurso de Azure OpenAI. Para obtener más información sobre la implementación de modelos, consulte la guía de implementación de recursos de Azure OpenAI.
- Obtenga la clave de recurso y el punto de conexión de Azure OpenAI. Una vez implementado el recurso de Azure OpenAI, seleccione Ir al recurso para ver y administrar las claves.
- Cree un recurso AI Foundry para voz en el portal de Azure.
- Obtenga la clave y la región del recurso de Voz. Una vez implementado el recurso de Voz, seleccione Ir al recurso para ver y administrar claves.
Configuración del entorno
El SDK de Voz para Python está disponible como módulo de índice de paquetes de Python (PyPI). El SDK de Voz para Python es compatible con Windows, Linux y macOS.
- Instale el Microsoft Visual C++ Redistributable para Visual Studio 2015, 2017, 2019 y 2022 para su plataforma. Durante la primera instalación del paquete, es posible que deba reiniciar.
- En Linux, debe usar la arquitectura de destino x64.
Instale una versión de Python desde la 3.7 en adelante. Primero consulte la guía de instalación del SDK para conocer más requisitos.
Instale las siguientes bibliotecas de Python: os
, requests
, json
.
Establecimiento de variables de entorno
En este ejemplo se requieren variables de entorno denominadas AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
y SPEECH_REGION
.
La aplicación debe autenticarse para acceder a los recursos de Azure AI Foundry. Este artículo le muestra cómo utilizar variables de entorno para almacenar sus credenciales. A continuación, puede acceder a las variables de entorno desde el código para autenticar la aplicación. Para producción, use una manera más segura de almacenar y acceder a sus credenciales.
Importante
Se recomienda la autenticación de Microsoft Entra ID con identidades administradas para los recursos de Azure para evitar almacenar credenciales con sus aplicaciones que se ejecutan en la nube.
Use las claves de API con precaución. No incluya la clave de API directamente en el código ni la exponga nunca públicamente. Si usa claves de API, almacénelas de forma segura en Azure Key Vault, rote las claves periódicamente y restrinja el acceso a Azure Key Vault mediante el rol basado en el control de acceso basado y las restricciones de acceso de red. Para más información sobre cómo utilizar las claves de API de forma segura en sus aplicaciones, consulte Claves de API con Azure Key Vault.
Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.
Para establecer las variables de entorno, abra una ventana de consola y siga las instrucciones correspondientes a su sistema operativo y entorno de desarrollo.
- Para establecer la variable de entorno
AZURE_OPENAI_API_KEY
, reemplaceyour-openai-key
por una de las claves del recurso. - Para establecer la variable de entorno
AZURE_OPENAI_ENDPOINT
, reemplaceyour-openai-endpoint
por una de las regiones del recurso. - Para establecer la variable de entorno
AZURE_OPENAI_CHAT_DEPLOYMENT
, reemplaceyour-openai-deployment-name
por una de las regiones del recurso. - Para establecer la variable de entorno
SPEECH_KEY
, reemplaceyour-speech-key
por una de las claves del recurso. - Para establecer la variable de entorno
SPEECH_REGION
, reemplaceyour-speech-region
por una de las regiones del 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:
Si solo necesita acceder a la variable de entorno en la consola en ejecución actual, establezca la variable de entorno con set
en lugar de setx
.
Después de agregar las variables de entorno, es posible que tenga que reiniciar los programas en ejecución que necesiten leer la variable de entorno, incluida la ventana de la consola. Por ejemplo, si Visual Studio es el editor, reinicie Visual Studio antes de ejecutar el ejemplo.
Reconocimiento de voz a través de un micrófono
Siga estos pasos para crear una nueva aplicación de consola.
Abra una ventana del símbolo del sistema en la carpeta donde desee el nuevo proyecto. Abra un símbolo del sistema donde quiera el nuevo proyecto y cree un archivo llamado
azure-openai-speech.py
.Ejecute este comando para instalar el SDK de voz:
pip install azure-cognitiveservices-speech
Ejecute este comando para instalar el SDK de OpenAI:
pip install openai
Nota:
OpenAI mantiene esta biblioteca, no Microsoft Azure. Consulte el historial de versiones o el historial de confirmación de version.py para realizar el seguimiento de las actualizaciones más recientes de la biblioteca.
Cree un archivo denominado azure-openai-speech.py. Copie el código siguiente en ese archivo:
import os import azure.cognitiveservices.speech as speechsdk from openai import AzureOpenAI # This example requires environment variables named "AZURE_OPENAI_API_KEY", "AZURE_OPENAI_ENDPOINT" and "AZURE_OPENAI_CHAT_DEPLOYMENT" # Your endpoint should look like the following https://YOUR_OPEN_AI_RESOURCE_NAME.openai.azure.com/ client = AzureOpenAI( azure_endpoint=os.environ.get('AZURE_OPENAI_ENDPOINT'), api_key=os.environ.get('AZURE_OPENAI_API_KEY'), api_version="2023-05-15" ) # This will correspond to the custom name you chose for your deployment when you deployed a model. deployment_id=os.environ.get('AZURE_OPENAI_CHAT_DEPLOYMENT') # This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION" speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION')) audio_output_config = speechsdk.audio.AudioOutputConfig(use_default_speaker=True) audio_config = speechsdk.audio.AudioConfig(use_default_microphone=True) # Should be the locale for the speaker's language. speech_config.speech_recognition_language="en-US" speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config) # The language of the voice that responds on behalf of Azure OpenAI. speech_config.speech_synthesis_voice_name='en-US-JennyMultilingualNeural' speech_synthesizer = speechsdk.SpeechSynthesizer(speech_config=speech_config, audio_config=audio_output_config) # tts sentence end mark tts_sentence_end = [ ".", "!", "?", ";", "。", "!", "?", ";", "\n" ] # Prompts Azure OpenAI with a request and synthesizes the response. def ask_azure_openai(prompt): # Ask Azure OpenAI in streaming way response = client.chat.completions.create(model=deployment_id, max_tokens=200, stream=True, messages=[ {"role": "user", "content": prompt} ]) collected_messages = [] last_tts_request = None # iterate through the stream response stream for chunk in response: if len(chunk.choices) > 0: chunk_message = chunk.choices[0].delta.content # extract the message if chunk_message is not None: collected_messages.append(chunk_message) # save the message if chunk_message in tts_sentence_end: # sentence end found text = ''.join(collected_messages).strip() # join the recieved message together to build a sentence if text != '': # if sentence only have \n or space, we could skip print(f"Speech synthesized to speaker for: {text}") last_tts_request = speech_synthesizer.speak_text_async(text) collected_messages.clear() if last_tts_request: last_tts_request.get() # Continuously listens for speech input to recognize and send as text to Azure OpenAI def chat_with_azure_openai(): while True: print("Azure OpenAI is listening. Say 'Stop' or press Ctrl-Z to end the conversation.") try: # Get audio from the microphone and then send it to the TTS service. speech_recognition_result = speech_recognizer.recognize_once_async().get() # If speech is recognized, send it to Azure OpenAI and listen for the response. if speech_recognition_result.reason == speechsdk.ResultReason.RecognizedSpeech: if speech_recognition_result.text == "Stop.": print("Conversation ended.") break print("Recognized speech: {}".format(speech_recognition_result.text)) ask_azure_openai(speech_recognition_result.text) elif speech_recognition_result.reason == speechsdk.ResultReason.NoMatch: print("No speech could be recognized: {}".format(speech_recognition_result.no_match_details)) break elif speech_recognition_result.reason == speechsdk.ResultReason.Canceled: cancellation_details = speech_recognition_result.cancellation_details print("Speech Recognition canceled: {}".format(cancellation_details.reason)) if cancellation_details.reason == speechsdk.CancellationReason.Error: print("Error details: {}".format(cancellation_details.error_details)) except EOFError: break # Main try: chat_with_azure_openai() except Exception as err: print("Encountered exception. {}".format(err))
Para aumentar o disminuir el número de tokens devueltos por Azure OpenAI, cambie el parámetro
max_tokens
. Para obtener más información sobre los tokens y las implicaciones de costos, consulte Tokens de Azure OpenAI y precios de Azure OpenAI.Ejecute la nueva aplicación de consola para iniciar el reconocimiento de voz a través de un micrófono:
python azure-openai-speech.py
Importante
Asegúrese de establecer las variables de entorno AZURE_OPENAI_API_KEY
, AZURE_OPENAI_ENDPOINT
, AZURE_OPENAI_CHAT_DEPLOYMENT
, SPEECH_KEY
y SPEECH_REGION
como se ha descrito anteriormente. Si no establece estas variables, se producirá un fallo en el ejemplo, con un mensaje de error.
Hable por el micrófono cuando se le solicite. La salida de la consola incluye el mensaje para empezar a hablar, luego la solicitud como texto y, a continuación, la respuesta de Azure OpenAI como texto. La respuesta de Azure OpenAI se debe convertir de texto a voz y, a continuación, emitirla en el altavoz predeterminado.
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>
Comentarios
Estas son algunas consideraciones más:
- Para cambiar el idioma de reconocimiento de voz, reemplace
en-US
por otroen-US
. Por ejemplo,es-ES
para Español (España). El lenguaje predeterminado esen-US
. Para obtener más información sobre cómo identificar uno de los distintos idiomas que se pueden hablar, consulte Identificación del idioma. - Para cambiar la voz que escucha, reemplace
en-US-JennyMultilingualNeural
con otra voz compatible. Si la voz no habla el idioma del texto que devuelve Azure OpenAI, el servicio Voz no emite audio sintetizado. - Para reducir la latencia de la salida de texto a voz, use la característica de streaming de texto, que permite el procesamiento de texto en tiempo real para una generación rápida de audio y minimiza la latencia, lo que mejora la fluidez y la capacidad de respuesta de las salidas de audio en tiempo real. Consulte cómo usar el streaming de texto.
- Para habilitar el avatar de TTS como experiencia visual de la salida de voz, consulte el artículo sobre la síntesis en tiempo real para el avatar de texto a voz y el código de ejemplo para escenarios de chat con avatar.
- El servicio Azure OpenAI también realiza la moderación de contenido en las entradas de solicitud y salidas generadas. Las solicitudes o respuestas se pueden filtrar si se detecta contenido dañino. Para obtener más información, consulte el artículo sobre filtros de contenido.
Limpieza de recursos
Puede usar Azure Portal o la Interfaz de la línea de comandos (CLI) de Azure para quitar el recurso de Voz que creó.