{
  "aboutHtml": "<p>Qwen-Audio-3.0-TTS-Plus convierte texto escrito en voz expresiva, con la edición Plus centrada en calidad de síntesis, naturalidad y una interpretación vocal detallada. Qwen señala la creación de contenido, los audiolibros, el doblaje de películas y videos y la producción profesional de voz como sus principales aplicaciones. El perfil actualizado describe una compatibilidad más amplia con idiomas de pocos recursos y dialectos chinos, mayor autenticidad dialectal y un control más fuerte de emoción, tono, personaje, velocidad de habla, volumen y estilo. El productor también indica mejoras de claridad, resolución y robustez en condiciones acústicas con ruido o reverberación.</p><p>Plus es la edición de esta familia de texto a voz centrada en la calidad; Flash se posiciona por separado para interacción en tiempo real. Prepara una narración como un guion hablado, identificando el público previsto, el ritmo y la dirección emocional. Para un pasaje de audiolibro, un encargo ilustrativo puede pedir articulación clara, ritmo pausado y calidez contenida; para la voz de un video, puede solicitar una apertura seria seguida de una explicación más enérgica. Son decisiones de interpretación de las palabras proporcionadas. El modelo es un sintetizador de voz, no un servicio de transcripción ni un generador de una escena visual completa.</p><p>Las voces de sistema oficiales de Plus incluyen Long An Ling Xin, descrita como cálida y empática, y Long An Lu Feng, descrita como luminosa y alegre. Ambas figuran para mandarín e inglés. El productor también proporciona más de 500 voces base para esta edición, con muestras que pueden evaluarse antes de elegir una. Recomienda voces de sistema para una síntesis más consistente. Selecciona una voz de la lista exacta de Plus y ajusta el idioma del guion a los idiomas que admite; una voz de Flash no es intercambiable solo por pertenecer a la misma familia general.</p><p>El modelo admite clonación de voz basada en muestras. Los idiomas documentados para voces clonadas incluyen chino, inglés, japonés, coreano, ruso, francés, alemán, portugués, tailandés, indonesio, vietnamita, español, italiano, malayo, filipino y árabe. Las variantes chinas incluyen mandarín, cantonés, Chongqing, nororiental, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, shanghainés, Sichuan y Yunnan, con los dialectos controlados mediante instrucciones. La tabla del productor distingue la clonación de la creación de una voz a partir de una descripción textual: Plus admite clonación, pero no ese modo independiente de diseño de voz.</p><p>Una referencia de clonación adecuada es habla clara a velocidad normal, sin música, ruido de fondo, otros hablantes o canto. El productor recomienda 10–20 segundos y permite hasta 60 segundos, en un archivo de un máximo de 10 MB. Los formatos de referencia son WAV de 16 bits, MP3 y M4A, con una frecuencia de muestreo mínima de 16 kHz. Se necesitan al menos cinco segundos continuos de habla clara, y las demás pausas deberían durar como máximo dos segundos. En estéreo, solo se procesa el primer canal. El identificador de voz creado queda vinculado a Plus y se utiliza para síntesis cuando está listo; reproducir la misma referencia mediante Flash requiere una voz de Flash creada por separado.</p><p>Las instrucciones en lenguaje natural pueden dar forma al tono, ritmo, emoción y timbre de las voces de sistema y clonadas. Utiliza descripciones audibles concretas, en lugar de una petición vaga de una buena voz. Las etiquetas de emoción insertadas en el texto pueden establecer un estilo dentro del guion, y las etiquetas de lenguaje expresivo pueden insertar un efecto vocal en un punto elegido. Por ejemplo, [serious] cambia la interpretación posterior, mientras que [sighing] inserta un suspiro sin cambiar el estilo emocional circundante. Las etiquetas de control se aplican hasta la siguiente etiqueta de control o la segmentación automática de oraciones. Esta función basada en etiquetas solo está documentada para streaming unidireccional, por lo que tiene un alcance distinto de las instrucciones utilizadas con entrada textual bidireccional.</p><p>Las opciones de salida del productor son PCM, WAV, MP3 y Opus, con frecuencias de muestreo enumeradas de 8,000, 16,000, 22,050, 24,000, 44,100 y 48,000 Hz. MP3 y 22,050 Hz son los valores predeterminados documentados. El volumen puede establecerse de 0 a 100, y la velocidad y el tono de 0,5 a 2,0; MP3 y Opus también permiten una tasa de bits de 6 a 510 kbps. Elige la representación necesaria para reproducir o editar y mantén después esos ajustes constantes entre las secciones de una pieza más larga. La salida en streaming incluye tramas de audio y metadatos de oraciones, con marcas temporales por palabra disponibles para las voces elegibles, incluidas las clonadas.</p><p>El flujo de entrada textual WebSocket documentado permite 20,000 caracteres por mensaje y 200,000 caracteres acumulados y exige un intervalo de envío no superior a 23 segundos. Puede recibir un guion completo o segmentos de texto ordenados y finalizar cuando se complete la entrada. El productor también documenta la cancelación del turno de síntesis actual. Son límites y comportamientos de ese protocolo, no un límite universal de duración generada. Para una narración larga, organiza el guion en secciones coherentes y conserva su orden y texto junto al audio resultante para que la pieza pueda montarse y revisarse de forma consistente.</p><p>Para pronunciación, el productor proporciona indicaciones del idioma de destino, anotaciones pinyin y sustituciones textuales para corregir lecturas no deseadas de cifras, abreviaturas, símbolos o palabras. SSML es un modo de marcado independiente con condiciones de elegibilidad: la documentación de Qwen lo admite para voces clonadas en llamadas sin streaming o con streaming unidireccional, con un solo envío de texto cuando está activado. No establece SSML para todas las voces de sistema ni para streaming bidireccional. Un flujo práctico de Plus empieza con una voz compatible y un guion terminado y añade después decisiones precisas de interpretación y pronunciación para el pasaje narrado.</p>",
  "aboutText": "Qwen-Audio-3.0-TTS-Plus convierte texto escrito en voz expresiva, con la edición Plus centrada en calidad de síntesis, naturalidad y una interpretación vocal detallada. Qwen señala la creación de contenido, los audiolibros, el doblaje de películas y videos y la producción profesional de voz como sus principales aplicaciones. El perfil actualizado describe una compatibilidad más amplia con idiomas de pocos recursos y dialectos chinos, mayor autenticidad dialectal y un control más fuerte de emoción, tono, personaje, velocidad de habla, volumen y estilo. El productor también indica mejoras de claridad, resolución y robustez en condiciones acústicas con ruido o reverberación.\n\nPlus es la edición de esta familia de texto a voz centrada en la calidad; Flash se posiciona por separado para interacción en tiempo real. Prepara una narración como un guion hablado, identificando el público previsto, el ritmo y la dirección emocional. Para un pasaje de audiolibro, un encargo ilustrativo puede pedir articulación clara, ritmo pausado y calidez contenida; para la voz de un video, puede solicitar una apertura seria seguida de una explicación más enérgica. Son decisiones de interpretación de las palabras proporcionadas. El modelo es un sintetizador de voz, no un servicio de transcripción ni un generador de una escena visual completa.\n\nLas voces de sistema oficiales de Plus incluyen Long An Ling Xin, descrita como cálida y empática, y Long An Lu Feng, descrita como luminosa y alegre. Ambas figuran para mandarín e inglés. El productor también proporciona más de 500 voces base para esta edición, con muestras que pueden evaluarse antes de elegir una. Recomienda voces de sistema para una síntesis más consistente. Selecciona una voz de la lista exacta de Plus y ajusta el idioma del guion a los idiomas que admite; una voz de Flash no es intercambiable solo por pertenecer a la misma familia general.\n\nEl modelo admite clonación de voz basada en muestras. Los idiomas documentados para voces clonadas incluyen chino, inglés, japonés, coreano, ruso, francés, alemán, portugués, tailandés, indonesio, vietnamita, español, italiano, malayo, filipino y árabe. Las variantes chinas incluyen mandarín, cantonés, Chongqing, nororiental, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, shanghainés, Sichuan y Yunnan, con los dialectos controlados mediante instrucciones. La tabla del productor distingue la clonación de la creación de una voz a partir de una descripción textual: Plus admite clonación, pero no ese modo independiente de diseño de voz.\n\nUna referencia de clonación adecuada es habla clara a velocidad normal, sin música, ruido de fondo, otros hablantes o canto. El productor recomienda 10–20 segundos y permite hasta 60 segundos, en un archivo de un máximo de 10 MB. Los formatos de referencia son WAV de 16 bits, MP3 y M4A, con una frecuencia de muestreo mínima de 16 kHz. Se necesitan al menos cinco segundos continuos de habla clara, y las demás pausas deberían durar como máximo dos segundos. En estéreo, solo se procesa el primer canal. El identificador de voz creado queda vinculado a Plus y se utiliza para síntesis cuando está listo; reproducir la misma referencia mediante Flash requiere una voz de Flash creada por separado.\n\nLas instrucciones en lenguaje natural pueden dar forma al tono, ritmo, emoción y timbre de las voces de sistema y clonadas. Utiliza descripciones audibles concretas, en lugar de una petición vaga de una buena voz. Las etiquetas de emoción insertadas en el texto pueden establecer un estilo dentro del guion, y las etiquetas de lenguaje expresivo pueden insertar un efecto vocal en un punto elegido. Por ejemplo, [serious] cambia la interpretación posterior, mientras que [sighing] inserta un suspiro sin cambiar el estilo emocional circundante. Las etiquetas de control se aplican hasta la siguiente etiqueta de control o la segmentación automática de oraciones. Esta función basada en etiquetas solo está documentada para streaming unidireccional, por lo que tiene un alcance distinto de las instrucciones utilizadas con entrada textual bidireccional.\n\nLas opciones de salida del productor son PCM, WAV, MP3 y Opus, con frecuencias de muestreo enumeradas de 8,000, 16,000, 22,050, 24,000, 44,100 y 48,000 Hz. MP3 y 22,050 Hz son los valores predeterminados documentados. El volumen puede establecerse de 0 a 100, y la velocidad y el tono de 0,5 a 2,0; MP3 y Opus también permiten una tasa de bits de 6 a 510 kbps. Elige la representación necesaria para reproducir o editar y mantén después esos ajustes constantes entre las secciones de una pieza más larga. La salida en streaming incluye tramas de audio y metadatos de oraciones, con marcas temporales por palabra disponibles para las voces elegibles, incluidas las clonadas.\n\nEl flujo de entrada textual WebSocket documentado permite 20,000 caracteres por mensaje y 200,000 caracteres acumulados y exige un intervalo de envío no superior a 23 segundos. Puede recibir un guion completo o segmentos de texto ordenados y finalizar cuando se complete la entrada. El productor también documenta la cancelación del turno de síntesis actual. Son límites y comportamientos de ese protocolo, no un límite universal de duración generada. Para una narración larga, organiza el guion en secciones coherentes y conserva su orden y texto junto al audio resultante para que la pieza pueda montarse y revisarse de forma consistente.\n\nPara pronunciación, el productor proporciona indicaciones del idioma de destino, anotaciones pinyin y sustituciones textuales para corregir lecturas no deseadas de cifras, abreviaturas, símbolos o palabras. SSML es un modo de marcado independiente con condiciones de elegibilidad: la documentación de Qwen lo admite para voces clonadas en llamadas sin streaming o con streaming unidireccional, con un solo envío de texto cuando está activado. No establece SSML para todas las voces de sistema ni para streaming bidireccional. Un flujo práctico de Plus empieza con una voz compatible y un guion terminado y añade después decisiones precisas de interpretación y pronunciación para el pasaje narrado.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "981bb3af76885c7887528da0700c141aae476be4ec1fcbec9bb3a4ab46a929a2",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "es-mx",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">Al</span><h2 id=\"sheet-title\">Qwen: Qwen-Audio-3.0-TTS Plus</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Cerrar\">×</button></div><div class=\"idline\"><span>Alibaba /</span><code>qwen/qwen-audio-3.0-tts-plus</code><button type=\"button\" id=\"copy-id\">Copiar ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Secciones de la ficha del modelo\"><button type=\"button\" data-card-jump=\"overview\">Inicio</button><button type=\"button\" data-card-jump=\"methods\">Entradas y métodos</button><button type=\"button\" data-card-jump=\"pricing\">Tarifas</button><button type=\"button\" data-card-jump=\"examples\">Ejemplos</button><button type=\"button\" data-card-jump=\"results\">Resultados</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Métodos de API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|speech|/v1/audio/speech|qwen%2Fqwen-audio-3.0-tts-plus\">Síntesis de voz</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Inicio</h3><p class=\"mdesc-full\">Qwen-Audio-3.0-TTS-Plus es el modelo de texto a voz de Qwen centrado en audio detallado, natural y expresivo para narración, audiolibros y doblaje. Admite voces predefinidas o clonadas específicas del modelo, salida en streaming e instrucciones o etiquetas para dar forma a la interpretación.</p><dl class=\"card-io\" data-card-io><div><dt>Entradas aceptadas</dt><dd>Texto</dd></div><div><dt>Resultados</dt><dd>Audio</dd></div></dl><details class=\"card-about\"><summary>Sobre el modelo</summary><p class=\"note-s\" data-model-method-boundary>Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.</p><div class=\"mabout\" id=\"m-about\"><p>Qwen-Audio-3.0-TTS-Plus convierte texto escrito en voz expresiva, con la edición Plus centrada en calidad de síntesis, naturalidad y una interpretación vocal detallada. Qwen señala la creación de contenido, los audiolibros, el doblaje de películas y videos y la producción profesional de voz como sus principales aplicaciones. El perfil actualizado describe una compatibilidad más amplia con idiomas de pocos recursos y dialectos chinos, mayor autenticidad dialectal y un control más fuerte de emoción, tono, personaje, velocidad de habla, volumen y estilo. El productor también indica mejoras de claridad, resolución y robustez en condiciones acústicas con ruido o reverberación.</p><p>Plus es la edición de esta familia de texto a voz centrada en la calidad; Flash se posiciona por separado para interacción en tiempo real. Prepara una narración como un guion hablado, identificando el público previsto, el ritmo y la dirección emocional. Para un pasaje de audiolibro, un encargo ilustrativo puede pedir articulación clara, ritmo pausado y calidez contenida; para la voz de un video, puede solicitar una apertura seria seguida de una explicación más enérgica. Son decisiones de interpretación de las palabras proporcionadas. El modelo es un sintetizador de voz, no un servicio de transcripción ni un generador de una escena visual completa.</p><p>Las voces de sistema oficiales de Plus incluyen Long An Ling Xin, descrita como cálida y empática, y Long An Lu Feng, descrita como luminosa y alegre. Ambas figuran para mandarín e inglés. El productor también proporciona más de 500 voces base para esta edición, con muestras que pueden evaluarse antes de elegir una. Recomienda voces de sistema para una síntesis más consistente. Selecciona una voz de la lista exacta de Plus y ajusta el idioma del guion a los idiomas que admite; una voz de Flash no es intercambiable solo por pertenecer a la misma familia general.</p><p>El modelo admite clonación de voz basada en muestras. Los idiomas documentados para voces clonadas incluyen chino, inglés, japonés, coreano, ruso, francés, alemán, portugués, tailandés, indonesio, vietnamita, español, italiano, malayo, filipino y árabe. Las variantes chinas incluyen mandarín, cantonés, Chongqing, nororiental, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, shanghainés, Sichuan y Yunnan, con los dialectos controlados mediante instrucciones. La tabla del productor distingue la clonación de la creación de una voz a partir de una descripción textual: Plus admite clonación, pero no ese modo independiente de diseño de voz.</p><p>Una referencia de clonación adecuada es habla clara a velocidad normal, sin música, ruido de fondo, otros hablantes o canto. El productor recomienda 10–20 segundos y permite hasta 60 segundos, en un archivo de un máximo de 10 MB. Los formatos de referencia son WAV de 16 bits, MP3 y M4A, con una frecuencia de muestreo mínima de 16 kHz. Se necesitan al menos cinco segundos continuos de habla clara, y las demás pausas deberían durar como máximo dos segundos. En estéreo, solo se procesa el primer canal. El identificador de voz creado queda vinculado a Plus y se utiliza para síntesis cuando está listo; reproducir la misma referencia mediante Flash requiere una voz de Flash creada por separado.</p><p>Las instrucciones en lenguaje natural pueden dar forma al tono, ritmo, emoción y timbre de las voces de sistema y clonadas. Utiliza descripciones audibles concretas, en lugar de una petición vaga de una buena voz. Las etiquetas de emoción insertadas en el texto pueden establecer un estilo dentro del guion, y las etiquetas de lenguaje expresivo pueden insertar un efecto vocal en un punto elegido. Por ejemplo, [serious] cambia la interpretación posterior, mientras que [sighing] inserta un suspiro sin cambiar el estilo emocional circundante. Las etiquetas de control se aplican hasta la siguiente etiqueta de control o la segmentación automática de oraciones. Esta función basada en etiquetas solo está documentada para streaming unidireccional, por lo que tiene un alcance distinto de las instrucciones utilizadas con entrada textual bidireccional.</p><p>Las opciones de salida del productor son PCM, WAV, MP3 y Opus, con frecuencias de muestreo enumeradas de 8,000, 16,000, 22,050, 24,000, 44,100 y 48,000 Hz. MP3 y 22,050 Hz son los valores predeterminados documentados. El volumen puede establecerse de 0 a 100, y la velocidad y el tono de 0,5 a 2,0; MP3 y Opus también permiten una tasa de bits de 6 a 510 kbps. Elige la representación necesaria para reproducir o editar y mantén después esos ajustes constantes entre las secciones de una pieza más larga. La salida en streaming incluye tramas de audio y metadatos de oraciones, con marcas temporales por palabra disponibles para las voces elegibles, incluidas las clonadas.</p><p>El flujo de entrada textual WebSocket documentado permite 20,000 caracteres por mensaje y 200,000 caracteres acumulados y exige un intervalo de envío no superior a 23 segundos. Puede recibir un guion completo o segmentos de texto ordenados y finalizar cuando se complete la entrada. El productor también documenta la cancelación del turno de síntesis actual. Son límites y comportamientos de ese protocolo, no un límite universal de duración generada. Para una narración larga, organiza el guion en secciones coherentes y conserva su orden y texto junto al audio resultante para que la pieza pueda montarse y revisarse de forma consistente.</p><p>Para pronunciación, el productor proporciona indicaciones del idioma de destino, anotaciones pinyin y sustituciones textuales para corregir lecturas no deseadas de cifras, abreviaturas, símbolos o palabras. SSML es un modo de marcado independiente con condiciones de elegibilidad: la documentación de Qwen lo admite para voces clonadas en llamadas sin streaming o con streaming unidireccional, con un solo envío de texto cuando está activado. No establece SSML para todas las voces de sistema ni para streaming bidireccional. Un flujo práctico de Plus empieza con una voz compatible y un guion terminado y añade después decisiones precisas de interpretación y pronunciación para el pasaje narrado.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponible en Ailoot · entradas y métodos</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Síntesis de voz</b> <code>POST /v1/audio/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Entrada</dt><dd><code>text</code></dd></div><div><dt>Salida</dt><dd><code>audio</code></dd></div><div><dt>Formato de salida</dt><dd>mp3</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Campo</th><th>Tipo</th><th>Requisito</th><th>Valores y límites</th><th>Predeterminado</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>qwen/qwen-audio-3.0-tts-plus</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>Longitud mínima: 1</div><div>Unidad: caracteres Unicode</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">voice</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>longanlingxin, longanlufeng</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span><code>string</code></td><td data-cell-label=\"Requisito\"><span class=\"card-cell-label\">Requisito</span>Obligatorio</td><td data-cell-label=\"Valores y límites\"><span class=\"card-cell-label\">Valores y límites</span><div>mp3</div></td><td data-cell-label=\"Predeterminado\" data-default=\"unspecified\"><span class=\"card-cell-label\">Predeterminado</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinaciones de materiales de entrada</summary><p class=\"note-s\"><b>text_to_speech</b> · Obligatorio: input</p></details><details class=\"note-s\" data-method-contract><summary>Parámetros del método y ciclo de vida</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parámetro</th><th>Contrato</th></tr></thead><tbody><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>content_type</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>application/json</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>required</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>model, input, voice, response_format</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>voice_ids</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>longanlingxin, longanlufeng</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>response_format</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>mp3</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>max_input_characters</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>null</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>other_options</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>false</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>input</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>texto UTF-8 exacto; conteo de caracteres Unicode sin normalización</td></tr><tr><th data-cell-label=\"Parámetro\" scope=\"row\"><span class=\"card-cell-label\">Parámetro</span><code>material_types</code></th><td data-cell-label=\"Contrato\"><span class=\"card-cell-label\">Contrato</span>text</td></tr></tbody></table></div><p>Ciclo de vida: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · El task_id real devuelto o el registro de la biblioteca multimedia</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p><p class=\"note-s\">Selecciona una voz exacta de este perfil de modelo.</p><p class=\"note-s\">Los caracteres de entrada y los segundos de audio se miden por separado.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarifas</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.</p><dl data-price-conditions><dt>Modo fast</dt><dd>Sin especificar <span class=\"note-s\">Cuando se selecciona el modo fast</span></dd><dt>Modo flex</dt><dd>Sin especificar <span class=\"note-s\">Cuando se selecciona el modo flex</span></dd><dt>Esfuerzo máximo de razonamiento</dt><dd>Sin especificar <span class=\"note-s\">Cuando el esfuerzo máximo de razonamiento usa el ajuste default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifas de Ailoot</h4><h4>Precios por configuración</h4><p class=\"note-s\">Relaciona cada cargo con las condiciones mostradas. Usa una tarifa para cada conjunto de configuraciones alternativas.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuración</th><th>Tabla de tarifas</th><th>Cantidad facturable</th><th>Unidad de facturación</th><th>Cargo</th></tr></thead><tbody><tr><th data-cell-label=\"Configuración\" scope=\"row\"><span class=\"card-cell-label\">Configuración</span>Tarifas base por token</th><td data-cell-label=\"Tabla de tarifas\"><span class=\"card-cell-label\">Tabla de tarifas</span>Tarifa base</td><td data-cell-label=\"Cantidad facturable\"><span class=\"card-cell-label\">Cantidad facturable</span>—</td><td data-cell-label=\"Unidad de facturación\"><span class=\"card-cell-label\">Unidad de facturación</span>—</td><td data-cell-label=\"Cargo\"><span class=\"card-cell-label\">Cargo</span><div><span>Entrada · Tokens de entrada</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Salida · Tokens de salida</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Lectura de caché</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escritura en caché</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrada · Escritura en caché, 1 hora</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuración\" scope=\"row\"><span class=\"card-cell-label\">Configuración</span>Ultra</th><td data-cell-label=\"Tabla de tarifas\"><span class=\"card-cell-label\">Tabla de tarifas</span>—</td><td data-cell-label=\"Cantidad facturable\"><span class=\"card-cell-label\">Cantidad facturable</span>Cada punto de código Unicode cuenta como un carácter, incluidos los caracteres Han.</td><td data-cell-label=\"Unidad de facturación\"><span class=\"card-cell-label\">Unidad de facturación</span>por 1K caracteres de entrada</td><td data-cell-label=\"Cargo\"><span class=\"card-cell-label\">Cargo</span><div><span>Entrada · carácter de entrada</span> <b>$0.04</b> <span class=\"price-unit\">por 1K caracteres de entrada</span></div></td></tr></tbody></table></div></div><div data-declared-reference-pricing><h4>Detalles de la tarifa de referencia</h4><p class=\"note-s\">Las tablas de referencia del modelo no cambian la selección del método, las cotizaciones ni los cargos. Los cargos aplicados usan las tarifas del método Ailoot seleccionado.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Qwen: Qwen-Audio-3.0-TTS Plus</summary><h4>Precios por configuración</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuración</th><th>Condiciones de facturación</th><th>Cargo</th></tr></thead><tbody><tr><th data-cell-label=\"Configuración\" scope=\"row\"><span class=\"card-cell-label\">Configuración</span>Qwen: Qwen-Audio-3.0-TTS Plus · Configuración predeterminada</th><td data-cell-label=\"Condiciones de facturación\"><span class=\"card-cell-label\">Condiciones de facturación</span>Configuración predeterminada</td><td data-cell-label=\"Cargo\"><span class=\"card-cell-label\">Cargo</span><div><span>Entrada · Caracteres de entrada</span> <b>USD 0.00004</b> <span class=\"price-unit\">por carácter de entrada</span></div></td></tr></tbody></table></div></details></div><p class=\"note-s\">Ailoot reserva un monto estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. <a href=\"/docs/es-mx/billing/reserve/\">Cómo funcionan la reserva y la liquidación →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Solicitudes de ejemplo</h3><h4>Ailoot Ultra · Síntesis de voz</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes del código\"><button class=\"cg-tab\" id=\"model-code-2362-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2362-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2362-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2362-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}&quot;\nexport AILOOT_VOICE_ID\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;qwen/qwen-audio-3.0-tts-plus&quot;, &quot;input&quot;: &quot;Good afternoon! This is a short voice take.&quot;}&#39;)\nvoice=os.environ[&quot;AILOOT_VOICE_ID&quot;]\nallowed=json.loads(&#39;[&quot;longanlingxin&quot;, &quot;longanlufeng&quot;]&#39;)\nif voice not in allowed: raise SystemExit(&quot;Choose an accepted voice ID from this exact model profile&quot;)\np[&quot;voice&quot;]=voice\np[&quot;response_format&quot;]=&quot;mp3&quot;\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Recibir y guardar resultados</h3><h4>Ailoot Ultra · Síntesis de voz</h4><p class=\"note-s\">mp3</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>Otras consultas de contenido</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes del código\"><button class=\"cg-tab\" id=\"model-code-2363-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-0\" aria-selected=\"true\" tabindex=\"0\">Biblioteca multimedia</button><button class=\"cg-tab\" id=\"model-code-2363-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Estado de la tarea</button><button class=\"cg-tab\" id=\"model-code-2363-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2363-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Detalles del archivo</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copiar código\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2363-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-assets.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2363-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_MEDIA_TASK_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/tasks/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-task.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-task.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2363-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2363-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}&quot;\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c &#39;import os,urllib.parse;print(urllib.parse.quote(os.environ[&quot;AILOOT_ASSET_ID&quot;],safe=&quot;&quot;))&#39;)\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/media/assets/$resource_id&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o media-asset.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;media-asset.json&quot;).read_text())))\nPY_RESULT\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Conserva todos los resultados completados</h5><p class=\"note-s\">Conserva todas las respuestas, archivos y partes de contenido completos recibidos.</p><p class=\"note-s\">Conserva el resultado binario completo y los encabezados. Si se devuelve JSON o varias salidas, conserva cada elemento de data y descarga cada recurso desde su URL firmada real.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Si es necesario revisar la respuesta original</h5><p class=\"note-s\">Conserva el operation_id/X-Client-Request-ID original para la conciliación sin volver a enviar la solicitud; no hay una ruta específica para consultar el estado del audio.</p></div><details class=\"card-about\" data-output-fields><summary>Campos de respuesta</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Campo</th><th>Tipo</th></tr></thead><tbody><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">binary audio</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>bytes</td></tr><tr><th data-cell-label=\"Campo\" scope=\"row\"><span class=\"card-cell-label\">Campo</span><code class=\"card-field-name\">response headers</code></th><td data-cell-label=\"Tipo\" data-field-type><span class=\"card-cell-label\">Tipo</span>headers</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Errores y siguientes pasos</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respuesta</th><th>Condición</th><th>Siguiente paso</th></tr></thead><tbody><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>Campos obligatorios, representación del material o valor del parámetro no válidos</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Corrige los campos indicados antes de una nueva solicitud de creación.</td></tr><tr><th data-cell-label=\"Respuesta\" scope=\"row\"><span class=\"card-cell-label\">Respuesta</span><code>server_error</code></th><td data-cell-label=\"Condición\"><span class=\"card-cell-label\">Condición</span>La respuesta devuelta indica que la operación o el resultado requiere una revisión</td><td data-cell-label=\"Siguiente paso\"><span class=\"card-cell-label\">Siguiente paso</span>Conserva el ID original de operación o tarea devuelto, los encabezados de la solicitud y la respuesta; continúa con las consultas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias del modelo</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=qwen%2Fqwen-audio-3.0-tts-plus&amp;route=Ultra&amp;caller=qwen%2Fqwen-audio-3.0-tts-plus&amp;fmt=speech\"><code>qwen/qwen-audio-3.0-tts-plus</code></a></span></p><h4>Alias de rutas de métodos</h4><p class=\"note-s\">Usa las rutas de método indicadas arriba.</p><h4>ID de modelo relacionados</h4><p class=\"note-s\"><a href=\"#m=qwen%2Fqwen-audio-3.0-tts-plus&amp;route=Ultra&amp;caller=qwen%2Fqwen-audio-3.0-tts-plus&amp;fmt=speech\"><code>qwen/qwen-audio-3.0-tts-plus</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|qwen%2Fqwen-audio-3.0-tts-plus",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Campos obligatorios, representación del material o valor del parámetro no válidos",
                "http_status": 400,
                "recovery": "Corrige los campos indicados antes de una nueva solicitud de creación.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La respuesta devuelta indica que la operación o el resultado requiere una revisión",
                "http_status": null,
                "recovery": "Conserva el ID original de operación o tarea devuelto, los encabezados de la solicitud y la respuesta; continúa con las consultas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva el operation_id/X-Client-Request-ID original para la conciliación sin volver a enviar la solicitud; no hay una ruta específica para consultar el estado del audio."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Conserva el resultado binario completo y los encabezados. Si se devuelve JSON o varias salidas, conserva cada elemento de data y descarga cada recurso desde su URL firmada real.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "qwen/qwen-audio-3.0-tts-plus"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "caracteres Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "longanlingxin",
                  "longanlufeng"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "Selecciona una voz exacta de este perfil de modelo.",
            "Los caracteres de entrada y los segundos de audio se miden por separado."
          ],
          "input": {
            "content_type": "application/json",
            "input": "texto UTF-8 exacto; conteo de caracteres Unicode sin normalización",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "longanlingxin",
              "longanlufeng"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "El task_id real devuelto o el registro de la biblioteca multimedia",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00004",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "f97459395132c904c87d",
            "label": "Qwen: Qwen-Audio-3.0-TTS Plus",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Configuración predeterminada"
                },
                "label": "Qwen: Qwen-Audio-3.0-TTS Plus · Configuración predeterminada",
                "units": [
                  {
                    "amount": "0.00004",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "c9d83494b95201f9ee8ab13d",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"qwen/qwen-audio-3.0-tts-plus\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"longanlingxin\", \"longanlufeng\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_character": 4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00004",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.04000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00004",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    }
  ],
  "model_id": "qwen/qwen-audio-3.0-tts-plus",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "fb3457a666ee1251ee9874a172db80fbd575a210db04807c0a4d86b40b86fe70",
    "input_html_sha256": "3a4cebf462d2d24b35d2c60cf601a10274ea92f76980a2d2b8ffc5a14a4d596e",
    "private_audit_sha256": "035caecffb7179478e08dda6d8c5e5127e2f2f2b8bcb162559e166dd922ce896",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/es-mx/qwen-qwen-audio-3-0-tts-plus/",
    "description": "Qwen-Audio-3.0-TTS-Plus es el modelo de texto a voz de Qwen centrado en audio detallado, natural y expresivo para narración, audiolibros y doblaje. Admite voces predefinidas o clonadas específicas del modelo, salida en streaming e instrucciones o etiquetas para dar forma a la interpretación.",
    "locale": "es-mx",
    "md_url": "https://ailoot.ai/models/es-mx/qwen-qwen-audio-3-0-tts-plus/index.md",
    "title": "Qwen: Qwen-Audio-3.0-TTS Plus — Ailoot",
    "url": "https://ailoot.ai/models/es-mx/qwen-qwen-audio-3-0-tts-plus/"
  },
  "rawModel": {
    "about": "Qwen-Audio-3.0-TTS-Plus convierte texto escrito en voz expresiva, con la edición Plus centrada en calidad de síntesis, naturalidad y una interpretación vocal detallada. Qwen señala la creación de contenido, los audiolibros, el doblaje de películas y videos y la producción profesional de voz como sus principales aplicaciones. El perfil actualizado describe una compatibilidad más amplia con idiomas de pocos recursos y dialectos chinos, mayor autenticidad dialectal y un control más fuerte de emoción, tono, personaje, velocidad de habla, volumen y estilo. El productor también indica mejoras de claridad, resolución y robustez en condiciones acústicas con ruido o reverberación.\n\nPlus es la edición de esta familia de texto a voz centrada en la calidad; Flash se posiciona por separado para interacción en tiempo real. Prepara una narración como un guion hablado, identificando el público previsto, el ritmo y la dirección emocional. Para un pasaje de audiolibro, un encargo ilustrativo puede pedir articulación clara, ritmo pausado y calidez contenida; para la voz de un video, puede solicitar una apertura seria seguida de una explicación más enérgica. Son decisiones de interpretación de las palabras proporcionadas. El modelo es un sintetizador de voz, no un servicio de transcripción ni un generador de una escena visual completa.\n\nLas voces de sistema oficiales de Plus incluyen Long An Ling Xin, descrita como cálida y empática, y Long An Lu Feng, descrita como luminosa y alegre. Ambas figuran para mandarín e inglés. El productor también proporciona más de 500 voces base para esta edición, con muestras que pueden evaluarse antes de elegir una. Recomienda voces de sistema para una síntesis más consistente. Selecciona una voz de la lista exacta de Plus y ajusta el idioma del guion a los idiomas que admite; una voz de Flash no es intercambiable solo por pertenecer a la misma familia general.\n\nEl modelo admite clonación de voz basada en muestras. Los idiomas documentados para voces clonadas incluyen chino, inglés, japonés, coreano, ruso, francés, alemán, portugués, tailandés, indonesio, vietnamita, español, italiano, malayo, filipino y árabe. Las variantes chinas incluyen mandarín, cantonés, Chongqing, nororiental, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, shanghainés, Sichuan y Yunnan, con los dialectos controlados mediante instrucciones. La tabla del productor distingue la clonación de la creación de una voz a partir de una descripción textual: Plus admite clonación, pero no ese modo independiente de diseño de voz.\n\nUna referencia de clonación adecuada es habla clara a velocidad normal, sin música, ruido de fondo, otros hablantes o canto. El productor recomienda 10–20 segundos y permite hasta 60 segundos, en un archivo de un máximo de 10 MB. Los formatos de referencia son WAV de 16 bits, MP3 y M4A, con una frecuencia de muestreo mínima de 16 kHz. Se necesitan al menos cinco segundos continuos de habla clara, y las demás pausas deberían durar como máximo dos segundos. En estéreo, solo se procesa el primer canal. El identificador de voz creado queda vinculado a Plus y se utiliza para síntesis cuando está listo; reproducir la misma referencia mediante Flash requiere una voz de Flash creada por separado.\n\nLas instrucciones en lenguaje natural pueden dar forma al tono, ritmo, emoción y timbre de las voces de sistema y clonadas. Utiliza descripciones audibles concretas, en lugar de una petición vaga de una buena voz. Las etiquetas de emoción insertadas en el texto pueden establecer un estilo dentro del guion, y las etiquetas de lenguaje expresivo pueden insertar un efecto vocal en un punto elegido. Por ejemplo, [serious] cambia la interpretación posterior, mientras que [sighing] inserta un suspiro sin cambiar el estilo emocional circundante. Las etiquetas de control se aplican hasta la siguiente etiqueta de control o la segmentación automática de oraciones. Esta función basada en etiquetas solo está documentada para streaming unidireccional, por lo que tiene un alcance distinto de las instrucciones utilizadas con entrada textual bidireccional.\n\nLas opciones de salida del productor son PCM, WAV, MP3 y Opus, con frecuencias de muestreo enumeradas de 8,000, 16,000, 22,050, 24,000, 44,100 y 48,000 Hz. MP3 y 22,050 Hz son los valores predeterminados documentados. El volumen puede establecerse de 0 a 100, y la velocidad y el tono de 0,5 a 2,0; MP3 y Opus también permiten una tasa de bits de 6 a 510 kbps. Elige la representación necesaria para reproducir o editar y mantén después esos ajustes constantes entre las secciones de una pieza más larga. La salida en streaming incluye tramas de audio y metadatos de oraciones, con marcas temporales por palabra disponibles para las voces elegibles, incluidas las clonadas.\n\nEl flujo de entrada textual WebSocket documentado permite 20,000 caracteres por mensaje y 200,000 caracteres acumulados y exige un intervalo de envío no superior a 23 segundos. Puede recibir un guion completo o segmentos de texto ordenados y finalizar cuando se complete la entrada. El productor también documenta la cancelación del turno de síntesis actual. Son límites y comportamientos de ese protocolo, no un límite universal de duración generada. Para una narración larga, organiza el guion en secciones coherentes y conserva su orden y texto junto al audio resultante para que la pieza pueda montarse y revisarse de forma consistente.\n\nPara pronunciación, el productor proporciona indicaciones del idioma de destino, anotaciones pinyin y sustituciones textuales para corregir lecturas no deseadas de cifras, abreviaturas, símbolos o palabras. SSML es un modo de marcado independiente con condiciones de elegibilidad: la documentación de Qwen lo admite para voces clonadas en llamadas sin streaming o con streaming unidireccional, con un solo envío de texto cuando está activado. No establece SSML para todas las voces de sistema ni para streaming bidireccional. Un flujo práctico de Plus empieza con una voz compatible y un guion terminado y añade después decisiones precisas de interpretación y pronunciación para el pasaje narrado.",
    "alias_of": null,
    "aliases": [],
    "author": "Alibaba",
    "available": null,
    "canonical_model": "qwen/qwen-audio-3.0-tts-plus",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.04000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00004",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ],
        "summary": "Consulta los precios completos de la configuración en los detalles."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "speech"
    ],
    "id": "qwen/qwen-audio-3.0-tts-plus",
    "input": [
      "text"
    ],
    "kind": "speech",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.",
            "errors": [
              {
                "code": null,
                "condition": "Campos obligatorios, representación del material o valor del parámetro no válidos",
                "http_status": 400,
                "recovery": "Corrige los campos indicados antes de una nueva solicitud de creación.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "La respuesta devuelta indica que la operación o el resultado requiere una revisión",
                "http_status": null,
                "recovery": "Conserva el ID original de operación o tarea devuelto, los encabezados de la solicitud y la respuesta; continúa con las consultas admitidas de esa operación original. No vuelvas a enviar la solicitud de creación.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Conserva el operation_id/X-Client-Request-ID original para la conciliación sin volver a enviar la solicitud; no hay una ruta específica para consultar el estado del audio."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_speech",
                "required": [
                  "input"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_speech"
            ],
            "outputs": {
              "all_results": "Conserva el resultado binario completo y los encabezados. Si se devuelve JSON o varias salidas, conserva cada elemento de data y descarga cada recurso desde su URL firmada real.",
              "family": "audio",
              "fields": [
                {
                  "description": null,
                  "name": "binary audio",
                  "type": "bytes"
                },
                {
                  "description": null,
                  "name": "response headers",
                  "type": "headers"
                }
              ],
              "format": "mp3",
              "http_success": 200
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "qwen/qwen-audio-3.0-tts-plus"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_known": false,
                "maximum_length": null,
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string",
                "unit": "caracteres Unicode"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "longanlingxin",
                  "longanlufeng"
                ],
                "enum_known": true,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "mp3"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": true,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "every field outside exactmodel,input,voice,response_format",
              "stream/speed/reference speech options"
            ]
          },
          "hints": [
            "Selecciona una voz exacta de este perfil de modelo.",
            "Los caracteres de entrada y los segundos de audio se miden por separado."
          ],
          "input": {
            "content_type": "application/json",
            "input": "texto UTF-8 exacto; conteo de caracteres Unicode sin normalización",
            "material_types": [
              "text"
            ],
            "max_input_characters": null,
            "other_options": false,
            "required": [
              "model",
              "input",
              "voice",
              "response_format"
            ],
            "response_format": [
              "mp3"
            ],
            "voice_ids": [
              "longanlingxin",
              "longanlufeng"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "El task_id real devuelto o el registro de la biblioteca multimedia",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_speech"
          ],
          "output": {
            "family": "audio",
            "format": "mp3",
            "http_success": 200,
            "response": "full binary MP3 plus response headers",
            "result": "complete playable owned MP3"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00004",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "declared_tariff_references": [
          {
            "client_selectable": false,
            "key": "f97459395132c904c87d",
            "label": "Qwen: Qwen-Audio-3.0-TTS Plus",
            "profiles": [
              {
                "basis": "",
                "dimensions": {
                  "conditions": "Configuración predeterminada"
                },
                "label": "Qwen: Qwen-Audio-3.0-TTS Plus · Configuración predeterminada",
                "units": [
                  {
                    "amount": "0.00004",
                    "amount_unit": "usd_per_exact_physical_unit",
                    "billing_input": false,
                    "key": "c9d83494b95201f9ee8ab13d",
                    "label": "Input characters",
                    "public_unit_label": "per input character",
                    "quantity": "1",
                    "rate_role": "declared_tariff_rate",
                    "side": "in",
                    "unit": "input_character"
                  }
                ]
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}\"\nexport AILOOT_VOICE_ID\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"qwen/qwen-audio-3.0-tts-plus\", \"input\": \"Good afternoon! This is a short voice take.\"}')\nvoice=os.environ[\"AILOOT_VOICE_ID\"]\nallowed=json.loads('[\"longanlingxin\", \"longanlufeng\"]')\nif voice not in allowed: raise SystemExit(\"Choose an accepted voice ID from this exact model profile\")\np[\"voice\"]=voice\np[\"response_format\"]=\"mp3\"\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o speech.mp3\n",
            "label": "curl",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-assets.json\n",
            "label": "List actual media assets",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_MEDIA_TASK_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_MEDIA_TASK_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/tasks/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-task.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-task.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual media task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}\"\nexport AILOOT_ASSET_ID\nresource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ[\"AILOOT_ASSET_ID\"],safe=\"\"))')\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/media/assets/$resource_id\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o media-asset.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"media-asset.json\").read_text())))\nPY_RESULT\n",
            "label": "Read actual asset metadata",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Select exact voice from this model profile.",
          "Input characters and audio seconds are different meters."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Озвучка текста",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_character": 4e-05
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quantity_meter": "utf8.RuneCountInString(validUTF8): one Han codepoint=1; no Han weighting",
              "quoted_unit": "per 1000 input character"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.04000",
                "amount_unit": "usd_per_1000_characters",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_character",
                "label": "input character",
                "native_amount_usd_per_unit": "0.00004",
                "native_quantity": 1,
                "public_unit_label": "per 1000 input character",
                "quantity": "1000",
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_character"
              }
            ]
          }
        ],
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.04000",
            "amount_unit": "usd_per_1000_characters",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_character",
            "label": "input character",
            "native_amount_usd_per_unit": "0.00004",
            "native_quantity": 1,
            "public_unit_label": "per 1000 input character",
            "quantity": "1000",
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "request_model_id": "qwen/qwen-audio-3.0-tts-plus",
        "route_label": "Ultra"
      }
    ],
    "name": "Qwen: Qwen-Audio-3.0-TTS Plus",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "qwen-audio-3.0-tts-plus",
          "Service deployment scope": "International",
          "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
          "maker_published_model_id": "qwen-audio-3.0-tts-plus"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.00004",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "Model ID": "qwen-audio-3.0-tts-plus",
              "Service deployment scope": "International",
              "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
              "maker_published_model_id": "qwen-audio-3.0-tts-plus"
            },
            "key": "input_character",
            "label": "input character",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "qwen-audio-3.0-tts-plus",
          "Service deployment scope": "Mainland China",
          "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
          "maker_published_model_id": "qwen-audio-3.0-tts-plus"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.000038506",
            "amount_unit": "usd_per_input_character",
            "conditions": {
              "Model ID": "qwen-audio-3.0-tts-plus",
              "Service deployment scope": "Mainland China",
              "character_counting_rule": "Han characters incl Chinese/Japanese kanji/Korean hanja=2; other characters=1; SSML markup excluded; actual synthesized text counts",
              "maker_published_model_id": "qwen-audio-3.0-tts-plus"
            },
            "key": "input_character",
            "label": "input character",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_character"
          }
        ]
      }
    ],
    "public_id": "qwen/qwen-audio-3.0-tts-plus",
    "short": "Qwen-Audio-3.0-TTS-Plus es el modelo de texto a voz de Qwen centrado en audio detallado, natural y expresivo para narración, audiolibros y doblaje. Admite voces predefinidas o clonadas específicas del modelo, salida en streaming e instrucciones o etiquetas para dar forma a la interpretación."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Qwen-Audio-3.0-TTS-Plus es el modelo de texto a voz de Qwen centrado en audio detallado, natural y expresivo para narración, audiolibros y doblaje. Admite voces predefinidas o clonadas específicas del modelo, salida en streaming e instrucciones o etiquetas para dar forma a la interpretación.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "e687c352f8c4fdbd473e3bed01a8ca1a69a1b8f0afafd2ff43f095340a789df9",
    "renderer_sha256": "50c5984577eac7205687c05e1c36de5d3ba7a0afdff02194efad3a88143581e8"
  },
  "sourceRevision": "4109a998aeb32c7a944a5c4c9dc96e229ae7ba8c4ac2d6789e5bae2ff847894b"
}
