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.
La API de síntesis por lotes para el avatar de texto a voz le permite sintetizar texto de forma asincrónica en un avatar de conversación como un archivo de vídeo. Los publicadores y las plataformas de contenido de vídeo pueden usar esta API para crear contenido de vídeo de avatar en un lote. Ese enfoque puede ser adecuado para diferentes casos de uso, como materiales de entrenamiento, presentaciones o anuncios.
El vídeo del avatar sintético se generará de forma asincrónica después de que el sistema reciba la entrada de texto. La salida de vídeo generada se puede descargar en el modo de síntesis por lotes. Envía texto para síntesis, consulta el estado de la síntesis y descarga la salida del vídeo cuando el estado indique éxito. Los formatos de las entradas de texto deben ser texto sin formato o texto en Lenguaje de marcado de síntesis de voz (SSML).
El diagrama a continuación proporciona una introducción general del flujo de trabajo.
Pruebe la función de avatar de texto a voz en Microsoft Foundry.
Prerrequisitos
- Una suscripción de Azure.
- Un proyecto de fundición. Si necesita crear un proyecto, consulte Creación de un proyecto de Microsoft Foundry.
Prueba el avatar de texto a voz
Pruebe texto a voz en el portal de Foundry siguiendo estos pasos:
- Vaya a Microsoft Foundry.
- Seleccione Compilar en el menú superior derecho.
- Seleccione Modelos en el panel izquierdo.
- En la pestaña Servicios de IA se muestran los modelos de Azure AI que se pueden usar de forma predeterminada en el portal de Foundry. Seleccione Azure Speech: avatar de conversión de texto a voz para abrir el entorno de pruebas del avatar de conversión de texto a voz.
- Elija un avatar precompilado en la cuadrícula y seleccione una voz en el menú desplegable Voz .
- Escriba el texto de ejemplo en el cuadro de texto de la derecha.
- Seleccione Reproducir para escuchar la voz sintética que lee el texto.
- Cambie a la pestaña Vídeo generado para ver el resultado del vídeo donde el avatar pronuncia su texto acompañado de movimientos faciales naturales y gestos.
- Cambie a la pestaña Código para obtener el código de ejemplo para usar la característica de avatar de texto a voz en la aplicación.
Otras características de Foundry (nuevas)
Las siguientes características de voz están disponibles en el portal foundry (nuevo):
Para ejecutar la síntesis por lotes, puede usar las siguientes operaciones de api REST.
| Operación | Método | Llamada a API REST |
|---|---|---|
| Creación de síntesis por lotes | PUT | avatar/batchsyntheses/{SynthesisId}?api-version=2024-08-01 |
| Obtención de síntesis por lotes | GET | avatar/batchsyntheses/{SynthesisId}?api-version=2024-08-01 |
| Enumeración de síntesis por lotes | GET | avatar/batchsyntheses/?api-version=2024-08-01 |
| Eliminación de síntesis por lotes | Delete | avatar/batchsyntheses/{SynthesisId}?api-version=2024-08-01 |
Puede consultar los ejemplos de código en GitHub.
Creación de una solicitud de síntesis por lotes
Algunas propiedades en formato JSON son necesarias cuando se crea un nuevo trabajo de síntesis por lotes. Las demás propiedades son opcionales. La respuesta de síntesis por lotes incluye otras propiedades para proporcionar información sobre el estado y los resultados de la síntesis. Por ejemplo, la outputs.resultpropiedad tiene la ubicación desde donde se puede descargar un archivo de vídeo que contiene el vídeo del avatar. Desde outputs.summary, puede obtener el resumen y los detalles de depuración.
Para enviar una solicitud de síntesis por lotes, construya el cuerpo de la solicitud HTTP POST según las instrucciones siguientes:
- Establezca la propiedad
inputKindobligatoria. - Si la propiedad
inputKindestá establecida enPlainText, también debe establecer la propiedadvoiceen elsynthesisConfig. En el ejemplo siguiente,inputKindestá configurado enSSML, por lo quespeechSynthesisno se configura. - Establezca la propiedad
SynthesisIdobligatoria. Elija unSynthesisIdúnico para el mismo recurso de voz. ElSynthesisIdpuede ser una cadena de 3 a 64 caracteres, incluidas letras, números, "-" o "_", con la condición de que debe comenzar y terminar con una letra o un número. - Establezca las propiedades
talkingAvatarCharacterytalkingAvatarStylenecesarias. Aquí puede encontrar los caracteres y estilos de avatar admitidos. - Opcionalmente, puede establecer
videoFormat,backgroundColory otras propiedades. Para obtener más información, consulte Propiedades de la síntesis por lotes.
Nota:
El tamaño máximo de carga JSON que se aceptará es de 500 kilobytes.
Cada recurso de Voz puede tener hasta 200 trabajos de síntesis por lotes ejecutándose simultáneamente.
La longitud máxima del vídeo de salida es actualmente de 20 minutos, con posibles aumentos en el futuro.
Para realizar una solicitud HTTP PUT, use el formato URI que se muestra en el ejemplo siguiente. Sustituya YourSpeechKey por su clave de recurso de Voz, YourSpeechRegion por su región de recurso de Voz y establezca las propiedades del cuerpo de la solicitud como se describió anteriormente.
curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourSpeechKey" -H "Content-Type: application/json" -d '{
"inputKind": "SSML",
"inputs": [
{
"content": "<speak version='\''1.0'\'' xml:lang='\''en-US'\''><voice name='\''en-US-AvaMultilingualNeural'\''>The rainbow has seven colors.</voice></speak>"
}
],
"avatarConfig": {
"talkingAvatarCharacter": "lisa",
"talkingAvatarStyle": "graceful-sitting"
}
}' "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses/my-job-01?api-version=2024-08-01"
Debe recibir un cuerpo de respuesta en el formato siguiente:
{
"id": "my-job-01",
"internalId": "5a25b929-1358-4e81-a036-33000e788c46",
"status": "NotStarted",
"createdDateTime": "2024-03-06T07:34:08.9487009Z",
"lastActionDateTime": "2024-03-06T07:34:08.9487012Z",
"inputKind": "SSML",
"customVoices": {},
"properties": {
"timeToLiveInHours": 744,
},
"avatarConfig": {
"talkingAvatarCharacter": "lisa",
"talkingAvatarStyle": "graceful-sitting",
"videoFormat": "Mp4",
"videoCodec": "hevc",
"subtitleType": "soft_embedded",
"bitrateKbps": 2000,
"customized": false
}
}
La propiedad status debe evolucionar del estado NotStarted a Running y, por último, a Succeeded o Failed. Puede llamar a la API de síntesis por lotes GET periódicamente hasta que el estado devuelto sea Succeeded o Failed.
Obtención de síntesis por lotes
Para obtener el estado de un trabajo de síntesis por lotes, realice una solicitud HTTP GET mediante el URI, como se muestra en el ejemplo siguiente.
Reemplace YourSynthesisId por el id. de la síntesis por lotes, YourSpeechKey por la clave del recurso de Voz y YourSpeechRegion por la región del recurso de Voz.
curl -v -X GET "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses/YourSynthesisId?api-version=2024-08-01" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"
Debe recibir un cuerpo de respuesta en el formato siguiente:
{
"id": "my-job-01",
"internalId": "5a25b929-1358-4e81-a036-33000e788c46",
"status": "Succeeded",
"createdDateTime": "2024-03-06T07:34:08.9487009Z",
"lastActionDateTime": "2024-03-06T07:34:12.5698769",
"inputKind": "SSML",
"customVoices": {},
"properties": {
"timeToLiveInHours": 744,
"sizeInBytes": 344460,
"durationInMilliseconds": 2520,
"succeededCount": 1,
"failedCount": 0,
"billingDetails": {
"neuralCharacters": 29,
"talkingAvatarDurationSeconds": 2
}
},
"avatarConfig": {
"talkingAvatarCharacter": "lisa",
"talkingAvatarStyle": "graceful-sitting",
"videoFormat": "Mp4",
"videoCodec": "hevc",
"subtitleType": "soft_embedded",
"bitrateKbps": 2000,
"customized": false
},
"outputs": {
"result": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/0001.mp4?SAS_Token",
"summary": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/summary.json?SAS_Token"
}
}
Desde el campo outputs.result puede descargar un archivo de vídeo que contiene el vídeo del avatar. El outputs.summary campo le permite descargar el resumen y los detalles de depuración. Para más información sobre los resultados de la síntesis por lotes, consulte resultados de la síntesis por lotes.
Enumeración de síntesis por lotes
Para enumerar todos los trabajos de síntesis por lotes para el recurso de Voz, realice una solicitud HTTP GET mediante el URI, como se muestra en el ejemplo siguiente.
Reemplace YourSpeechKey por la clave del recurso de Voz y YourSpeechRegion por la región del recurso de Voz. Opcionalmente, puede establecer los parámetros de consulta skip y top (tamaño de página) en la dirección URL. El valor predeterminado de skip es 0 y el valor predeterminado de maxpagesize es 100.
curl -v -X GET "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses?skip=0&maxpagesize=2&api-version=2024-08-01" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"
Debe recibir un cuerpo de respuesta en el formato siguiente:
{
"value": [
{
"id": "my-job-02",
"internalId": "14c25fcf-3cb6-4f46-8810-ecad06d956df",
"status": "Succeeded",
"createdDateTime": "2024-03-06T07:52:23.9054709Z",
"lastActionDateTime": "2024-03-06T07:52:29.3416944",
"inputKind": "SSML",
"customVoices": {},
"properties": {
"timeToLiveInHours": 744,
"sizeInBytes": 502676,
"durationInMilliseconds": 2950,
"succeededCount": 1,
"failedCount": 0,
"billingDetails": {
"neuralCharacters": 32,
"talkingAvatarDurationSeconds": 2
}
},
"avatarConfig": {
"talkingAvatarCharacter": "lisa",
"talkingAvatarStyle": "casual-sitting",
"videoFormat": "Mp4",
"videoCodec": "h264",
"subtitleType": "soft_embedded",
"bitrateKbps": 2000,
"customized": false
},
"outputs": {
"result": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/0001.mp4?SAS_Token",
"summary": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/summary.json?SAS_Token"
}
},
{
"id": "my-job-01",
"internalId": "5a25b929-1358-4e81-a036-33000e788c46",
"status": "Succeeded",
"createdDateTime": "2024-03-06T07:34:08.9487009Z",
"lastActionDateTime": "2024-03-06T07:34:12.5698769",
"inputKind": "SSML",
"customVoices": {},
"properties": {
"timeToLiveInHours": 744,
"sizeInBytes": 344460,
"durationInMilliseconds": 2520,
"succeededCount": 1,
"failedCount": 0,
"billingDetails": {
"neuralCharacters": 29,
"talkingAvatarDurationSeconds": 2
}
},
"avatarConfig": {
"talkingAvatarCharacter": "lisa",
"talkingAvatarStyle": "graceful-sitting",
"videoFormat": "Mp4",
"videoCodec": "hevc",
"subtitleType": "soft_embedded",
"bitrateKbps": 2000,
"customized": false
},
"outputs": {
"result": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/0001.mp4?SAS_Token",
"summary": "https://stttssvcprodusw2.blob.core.windows.net/batchsynthesis-output/xxxxx/xxxxx/summary.json?SAS_Token"
}
}
],
"nextLink": "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses/?api-version=2024-08-01&skip=2&maxpagesize=2"
}
Desde outputs.result, puede descargar un archivo de vídeo que contiene el vídeo de avatar. Desde outputs.summary, puede obtener el resumen y los detalles de depuración. Para obtener más información, consulte Resultados de la síntesis por lotes.
La propiedad value de la respuesta JSON enumera las solicitudes de síntesis. La lista está paginada, con un tamaño de página máximo de 100. La propiedad nextLink se proporciona según sea necesario para obtener la página siguiente de la lista paginada.
Obtención del archivo de resultados de síntesis por lotes
Después de obtener un trabajo de síntesis por lotes con un status de "Correcto", puede descargar los resultados de la salida de vídeo. Use la dirección URL de la propiedad outputs.result de la respuesta de obtención de síntesis por lotes.
Para obtener el archivo de resultados de la síntesis por lotes, realice una solicitud HTTP GET mediante el URI, como se muestra en el ejemplo siguiente. Reemplace YourOutputsResultUrl por la dirección URL de la propiedad outputs.result de la respuesta de obtención de síntesis por lotes. Reemplace YourSpeechKey por su clave de recurso de Voz.
curl -v -X GET "YourOutputsResultUrl" -H "Ocp-Apim-Subscription-Key: YourSpeechKey" > output.mp4
Para obtener el archivo de resumen de la síntesis por lotes, realice una solicitud HTTP GET mediante el URI, como se muestra en el ejemplo siguiente. Reemplace YourOutputsResultUrl por la dirección URL de la propiedad outputs.summary de la respuesta de obtención de síntesis por lotes. Reemplace YourSpeechKey por su clave de recurso de Voz.
curl -v -X GET "YourOutputsSummaryUrl" -H "Ocp-Apim-Subscription-Key: YourSpeechKey" > summary.json
El archivo de resumen tiene los resultados de síntesis de cada entrada de texto. Este es un archivo summary.json de ejemplo:
{
"jobID": "5a25b929-1358-4e81-a036-33000e788c46",
"status": "Succeeded",
"results": [
{
"texts": [
"<speak version='1.0' xml:lang='en-US'><voice name='en-US-AvaMultilingualNeural'>The rainbow has seven colors.</voice></speak>"
],
"status": "Succeeded",
"videoFileName": "244a87c294b94ddeb3dbaccee8ffa7eb/5a25b929-1358-4e81-a036-33000e788c46/0001.mp4",
"TalkingAvatarCharacter": "lisa",
"TalkingAvatarStyle": "graceful-sitting"
}
]
}
Eliminación de síntesis por lotes
Después de obtener los resultados de salida de audio y ya no necesita el historial de trabajos de síntesis por lotes, puede eliminarlo. El servicio Voz conserva cada historial de síntesis durante un máximo de 31 días o durante el tiempo especificado por la propiedad timeToLiveInHours de la solicitud, lo que ocurra primero. La fecha y hora de eliminación automática de los trabajos de síntesis con un estado de "Completado" o "Fallido" se calcula como la suma de las propiedades lastActionDateTime y timeToLive.
Para eliminar un trabajo de síntesis por lotes, realice una solicitud HTTP DELETE con el siguiente formato de URI. Reemplace YourSynthesisId por el id. de la síntesis por lotes, YourSpeechKey por la clave del recurso de Voz y YourSpeechRegion por la región del recurso de Voz.
curl -v -X DELETE "https://YourSpeechRegion.api.cognitive.microsoft.com/avatar/batchsyntheses/YourSynthesisId?api-version=2024-08-01" -H "Ocp-Apim-Subscription-Key: YourSpeechKey"
Los encabezados de respuesta incluyen HTTP/1.1 204 No Content si la solicitud de eliminación se realizó correctamente.