Propiedades de síntesis por lotes para texto a voz
Importante
Batch synthesis API está disponible con carácter general. Long Audio API se retirará el 1 de abril de 2027. Para obtener más información, consulte Migración a Batch synthesis API.
Batch synthesis API puede sintetizar de forma asincrónica un gran volumen de entrada de texto (largo y corto). Los publicadores y las plataformas de contenido de audio pueden crear contenido de audio de larga duración en un lote. Por ejemplo: audiolibros, artículos de noticias y documentos. Batch synthesis API puede crear audio sintetizado de más de 10 minutos.
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 propiedad outputs.result
contiene la ubicación de los archivos de resultados de síntesis por lotes con salida de audio y registros.
Propiedades de la síntesis por lotes
Las propiedades de la síntesis por lotes se describen en la tabla siguiente.
Propiedad | Descripción |
---|---|
createdDateTime |
Fecha y hora en que se creó el trabajo de síntesis por lotes. Esta propiedad es de solo lectura. |
customVoices |
Asignación de un nombre de voz personalizado y su identificador de implementación. Por ejemplo: "customVoices": {"your-custom-voice-name": "502ac834-6537-4bc3-9fd6-140114daa66d"} Puede usar el nombre de voz en synthesisConfig.voice (cuando inputKind está establecido en "PlainText" ) o dentro del texto SSML de inputs (cuando inputKind está establecido en "SSML" ).Esta propiedad es necesaria para usar una voz personalizada. Si intenta usar una voz personalizada que no está definida aquí, el servicio devuelve un error. |
description |
Descripción de la síntesis por lotes. Esta propiedad es opcional. |
id |
Identificador del trabajo de batch synthesis que ha pasado en la ruta de acceso. Esta propiedad es obligatoria en la ruta de acceso. |
inputs |
Texto sin formato o SSML que se va a sintetizar. Cuando inputKind está establecido en "PlainText" , proporcione texto sin formato como se muestra aquí: "inputs": [{"text": "The rainbow has seven colors."}] . Cuando inputKind está establecido en "SSML" , proporcione texto en el Lenguaje de marcado de síntesis de voz (SSML) como se muestra aquí: "inputs": [{"text": "<speak version='\''1.0'\'' xml:lang='\''en-US'\''><voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-AvaMultilingualNeural'\''>The rainbow has seven colors.</voice></speak>"}] .Incluya hasta 1000 objetos de texto si quiere obtener varios archivos de salida de audio. Este es un ejemplo de texto de entrada que se debe sintetizar en dos archivos de salida de audio: "inputs": [{"text": "synthesize this to a file"},{"text": "synthesize this to another file"}] . Por otro lado, si la propiedad properties.concatenateResult está establecida en true , cada resultado sintetizado se escribirá en el mismo archivo de salida de audio.No necesita entradas de texto independientes para los nuevos párrafos. Dentro de cualquiera de las entradas de texto (hasta 1000), puede especificar nuevos párrafos mediante la cadena "\r\n" (nueva línea). Este es un ejemplo de texto de entrada con dos párrafos que se deben sintetizar en el mismo archivo de salida de audio: "inputs": [{"text": "synthesize this to a file\r\nsynthesize this to another paragraph in the same file"}] .No hay límites de párrafos, pero el tamaño máximo de carga JSON (incluidas todas las entradas de texto y otras propiedades) es de 2 megabytes. Esta propiedad es necesaria cuando se crea un trabajo de síntesis por lotes. Esta propiedad no se incluye en la respuesta cuando se obtiene el trabajo de síntesis. |
internalId |
Identificador del trabajo de batch synthesis interno. Esta propiedad es de solo lectura. |
lastActionDateTime |
Fecha y hora más recientes en que cambió el valor de la propiedad status .Esta propiedad es de sólo lectura. |
outputs.result |
Ubicación de los archivos de resultados de síntesis por lotes con salida de audio y registros. Esta propiedad es de sólo lectura. |
properties |
Conjunto definido de valores de configuración opcionales de la síntesis por lotes. |
properties.sizeInBytes |
Tamaño de la salida de audio en bytes. Esta propiedad es de sólo lectura. |
properties.billingDetails |
Número de palabras procesadas y facturadas por voces customNeuralCharacters frente a neuralCharacters (predefinidas).Esta propiedad es de sólo lectura. |
properties.concatenateResult |
Determina si se va a concatenar el resultado. Este valor bool opcional ("true" o "false") es "false" de forma predeterminada. |
properties.decompressOutputFiles |
Determina si se descomprimen los archivos de resultados de síntesis en el contenedor de destino. Esta propiedad solo se puede establecer cuando se establece la propiedad destinationContainerUrl . Este valor bool opcional ("true" o "false") es "false" de forma predeterminada. |
properties.destinationContainerUrl |
Los resultados de síntesis por lotes se pueden almacenar en un contenedor de Azure que permita la escritura. Si no se especifica ningún URI de contenedor con un token de firmas de acceso compartido (SAS), el servicio de Voz almacena los resultados en un contenedor administrado por Microsoft. No se admite SAS con directivas de acceso almacenadas. Cuando se elimina el trabajo de síntesis, también se eliminan los datos del resultado. Esta propiedad opcional no se incluye en la respuesta cuando se obtiene el trabajo de síntesis. |
properties.destinationPath |
Ruta de acceso de prefijo donde se pueden almacenar los resultados de batch synthesis. Si no especifica una ruta de acceso de prefijo, la ruta de acceso de prefijo predeterminada es YourSpeechResourceId/YourSynthesisId .Esta propiedad opcional solo se puede establecer cuando se establece la propiedad destinationContainerUrl . |
properties.durationInMilliseconds |
Duración de la salida de audio en milisegundos. Esta propiedad es de sólo lectura. |
properties.failedAudioCount |
Error en el recuento de entradas de síntesis por lotes en la salida de audio. Esta propiedad es de solo lectura. |
properties.outputFormat |
Formato de la salida de audio. Para obtener información sobre los valores aceptados, consulte los formatos de salida de audio. El formato de salida predeterminado es riff-24khz-16bit-mono-pcm . |
properties.sentenceBoundaryEnabled |
Determina si se van a generar datos del límite de las oraciones. Este valor bool opcional ("true" o "false") es "false" de forma predeterminada.Si se solicitan datos del límite de las oraciones, se incluirá un archivo [nnnn].sentence.json correspondiente en el archivo ZIP con los datos de los resultados. |
properties.succeededAudioCount |
El recuento de entradas de síntesis por lotes en la salida de audio se ha realizado correctamente. Esta propiedad es de solo lectura. |
properties.timeToLiveInHours |
Duración en horas tras crear el trabajo de síntesis, cuando los resultados de la síntesis se eliminarán automáticamente. Esta configuración opcional es 744 (31 días) de forma predeterminada. El período de vida máximo es de 31 días. La fecha y hora de eliminación automática (para trabajos de síntesis con el estado "Succeeded" o "Failed") es igual a las propiedades lastActionDateTime + timeToLiveInHours .Otra opción es llamar al método de eliminación de la síntesis para quitar el trabajo antes. |
properties.wordBoundaryEnabled |
Determina si se van a generar datos del límite de las palabras. Este valor bool opcional ("true" o "false") es "false" de forma predeterminada.Si se solicitan datos del límite de palabra, se incluirá un archivo [nnnn].word.json correspondiente en el archivo ZIP con los datos de los resultados. |
status |
Estado de procesamiento de la síntesis por lotes. El estado debe evolucionar de "NotStarted" a "Running" y, por último, a "Succeeded" o "Failed". Esta propiedad es de sólo lectura. |
synthesisConfig |
Valores de configuración que se usarán para la síntesis por lotes de texto sin formato. Esta propiedad solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.backgroundAudio |
Audio de fondo para cada salida de audio. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.backgroundAudio.fadein |
La duración de la intensificación de entrada del audio de fondo en milisegundos. El valor predeterminado es 0 , que equivale a ningún fundido de entrada. Valores aceptados: de 0 a 10000 , ambos inclusive.Para obtener información, consulte la tabla de atributos en agregar audio de fondo en la documentación del lenguaje de marcado de síntesis de voz (SSML). Se omiten los valores no válidos. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.backgroundAudio.fadeout |
Especifica la duración del fundido de salida del audio de fondo en milisegundos. El valor predeterminado es 0 , que equivale a que no hay desvanecimiento. Valores aceptados: de 0 a 10000 , ambos inclusive.Para obtener información, consulte la tabla de atributos en agregar audio de fondo en la documentación del lenguaje de marcado de síntesis de voz (SSML). Se omiten los valores no válidos. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.backgroundAudio.src |
Ubicación del URI del archivo de audio en segundo plano. Para obtener información, consulte la tabla de atributos en agregar audio de fondo en la documentación del lenguaje de marcado de síntesis de voz (SSML). Se omiten los valores no válidos. Esta propiedad se usa cuando se establece synthesisConfig.backgroundAudio . |
synthesisConfig.backgroundAudio.volume |
El volumen del archivo de audio de fondo. Valores aceptados: de 0 a 100 , ambos inclusive. El valor predeterminado es 1 .Para obtener información, consulte la tabla de atributos en agregar audio de fondo en la documentación del lenguaje de marcado de síntesis de voz (SSML). Se omiten los valores no válidos. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.pitch |
Tono de la salida de audio. Para obtener información sobre los valores aceptados, consulte la tabla Ajuste de la prosodia en la documentación del Lenguaje de marcado de síntesis de voz (SSML). Se omiten los valores no válidos. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.rate |
Velocidad de la salida de audio. Para obtener información sobre los valores aceptados, consulte la tabla Ajuste de la prosodia en la documentación del Lenguaje de marcado de síntesis de voz (SSML). Se omiten los valores no válidos. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.role |
Para algunas voces, puede ajustar el juego de roles del habla. La voz puede imitar una edad y sexo diferentes, pero el nombre de la voz no cambia. Por ejemplo, una voz masculina puede subir el tono y cambiar la entonación para que parezca femenina, pero el nombre de la voz cambia. Si falta el rol o la voz no lo admite, este atributo se omite. Para obtener información sobre los estilos disponibles para cada voz, consulte Estilos y roles de voz. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.speakerProfileId |
Identificador del perfil del hablante de una voz personal. Para obtener información sobre los nombres de modelos base de voz personales disponibles, consulte integración de voz personal. Para obtener información sobre cómo obtener el identificador del perfil de hablante, consulte compatibilidad con idiomas y voz. Esta propiedad se usa cuando inputKind se establece en "PlainText" . |
synthesisConfig.style |
Para algunas voces, puede ajustar el estilo de habla para expresar emociones diferentes, como alegría, empatía y tranquilidad. Puede optimizar la voz para distintos escenarios, como el servicio de atención al cliente, las noticias y el asistente de voz. Para obtener información sobre los estilos disponibles para cada voz, consulte Estilos y roles de voz. Esta propiedad opcional solo es aplicable cuando se establece synthesisConfig.style . |
synthesisConfig.styleDegree |
La intensidad del estilo de voz. Puede especificar un estilo más seguro o más suave para que la voz sea más expresiva o moderada. El intervalo de valores aceptados es: de 0,01 a 2 incluidos. El valor predeterminado es 1, que señala la intensidad de estilo predefinida. La unidad mínima es 0,01, cuyo resultado una ligera tendencia hacia el estilo de destino. Un valor de 2, como resultado, duplica la intensidad de estilo predeterminada. Si falta el grado de estilo o no se admite para la voz, este atributo se omite. Para obtener información sobre los estilos disponibles para cada voz, consulte Estilos y roles de voz. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
synthesisConfig.voice |
Voz que emite la salida de audio. Para obtener información sobre las voces neuronales predefinidas disponibles, consulte Compatibilidad con idiomas y voces . Para usar una voz personalizada, debe especificar una asignación válida de identificador de implementación y voz personalizada en la propiedad customVoices . Para usar una voz personal, debe especificar la propiedad synthesisConfig.speakerProfileId . Esta propiedad se usa cuando inputKind se establece en "PlainText" . |
synthesisConfig.volume |
Volumen de la salida de audio. Para obtener información sobre los valores aceptados, consulte la tabla Ajuste de la prosodia en la documentación del Lenguaje de marcado de síntesis de voz (SSML). Se omiten los valores no válidos. Esta propiedad opcional solo es aplicable cuando inputKind está establecido en "PlainText" . |
inputKind |
Indica si la propiedad de texto inputs debe ser texto sin formato o SSML. Los valores posibles que no distinguen mayúsculas de minúsculas son "PlainText" y "SSML". Cuando inputKind está establecido en "PlainText" , también se debe establecer la propiedad de voz synthesisConfig .Esta propiedad es obligatoria. |
Latencia y procedimientos recomendados de síntesis por lotes
Al usar la síntesis por lotes para generar voz sintetizada, es importante tener en cuenta la latencia implicada y seguir los procedimientos recomendados para lograr resultados óptimos.
Latencia en la síntesis por lotes
La latencia en la síntesis por lotes depende de varios factores, incluida la complejidad del texto de entrada, el número de entradas en el lote y las funcionalidades de procesamiento del hardware subyacente.
La latencia para la síntesis por lotes es la siguiente (aproximadamente):
La latencia del 50 % de las salidas de voz sintetizadas es de 10 a 20 segundos.
La latencia del 95 % de las salidas de voz sintetizadas es de 120 segundos.
procedimientos recomendados
Al considerar la síntesis por lotes de la aplicación, se recomienda evaluar si la latencia cumple sus requisitos. Si la latencia se alinea con el rendimiento deseado, la síntesis por lotes puede ser una opción adecuada. Sin embargo, si la latencia no satisface sus necesidades, es posible que considere la posibilidad de usar la API en tiempo real.
Códigos de estado HTTP
En esta sección se detallan los mensajes y códigos de respuesta HTTP de Batch synthesis API.
HTTP 200 OK
HTTP 200 OK indica que la solicitud se ha realizado correctamente.
HTTP 201 Created
HTTP 201 Created indica que la solicitud de creación de síntesis por lotes (a través de HTTP POST) se ha realizado correctamente.
Error HTTP 204
Un error HTTP 204 indica que la solicitud se ha realizado correctamente, pero el recurso no existe. Por ejemplo:
- Ha intentado obtener o eliminar un trabajo de síntesis que no existe.
- Ha eliminado correctamente un trabajo de síntesis.
Error HTTP 400
Estos son ejemplos que pueden dar lugar al error 400:
outputFormat
es compatible o no es válido. Proporcione un valor de formato válido o dejeoutputFormat
vacío para usar la configuración predeterminada.- El número de entradas de texto solicitadas ha superado el límite de 10 000.
- Ha intentado usar un identificador de implementación no válido o una voz personalizada que no se ha implementado correctamente. Asegúrese de que el recurso de Voz tiene acceso a la voz personalizada y de que esta se ha implementado correctamente. También debe asegurarse de que la asignación de
{"your-custom-voice-name": "your-deployment-ID"}
es correcta en la solicitud de síntesis por lotes. - Ha intentado usar un recurso de Voz F0, pero la región solo admite el plan de tarifa de recursos de Voz Estándar.
Error HTTP 404
No se encuentra la entidad especificada. Asegúrese de que el id. de síntesis sea correcto.
Error HTTP 429
Hay demasiadas solicitudes recientes. Cada aplicación cliente puede enviar hasta 100 solicitudes cada diez segundos para cada recurso de Voz. Reduzca el número de solicitudes por segundo.
Error HTTP 500
El error interno del servidor HTTP 500 indica que se ha producido un error en la solicitud. El cuerpo de la respuesta contiene el mensaje de error.
Ejemplo de error HTTP
Esta es una solicitud de ejemplo que produce un error HTTP 400, ya que la propiedad inputs
es necesaria para crear un trabajo.
curl -v -X PUT -H "Ocp-Apim-Subscription-Key: YourSpeechKey" -H "Content-Type: application/json" -d '{
"inputKind": "SSML"
}' "https://YourSpeechRegion.api.cognitive.microsoft.com/texttospeech/batchsyntheses/YourSynthesisId?api-version=2024-04-01"
En este caso, los encabezados de respuesta incluirán HTTP/1.1 400 Bad Request
.
El cuerpo de la respuesta es similar al ejemplo JSON siguiente:
{
"error": {
"code": "BadRequest",
"message": "The inputs is required."
}
}