curl --request POST \
--url https://api.evolink.ai/v1/audios/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "qwen-audio-3.1-tts-flash",
"prompt": "我家的后面有一个很大的花园。"
}
'{
"created": 1790000000,
"id": "task-unified-1790000000-abcd1234",
"model": "qwen-audio-3.1-tts-flash",
"object": "audio.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": false,
"estimated_time": 3,
"audio_type": "tts"
},
"type": "audio",
"usage": {
"credits_reserved": 0.0144
}
}Síntesis de voz Qwen Audio 3.1 TTS Flash
- Convierte texto en voz, hasta
5000caracteres por solicitud - 68 voces del sistema; consulta la lista de voces. También puedes usar una voz propia creada mediante clonación o diseño con Voice Enrollment
- Las voces personalizadas caducan por defecto
6 horasdespués de completar su creación. Después, la síntesis devuelve404(voice_expired); crea una nueva voz con Voice Enrollment - Admite instrucciones en lenguaje natural (
instruction), etiquetas emocionales y paralingüísticas en el texto, SSML y pronunciación personalizada (hot_fix) - Solo se aceptan los parámetros indicados abajo; los demás devuelven
400(unsupported_parameter) - Procesamiento asíncrono; usa el ID de tarea devuelto para consultar el resultado
- Las tareas no pueden cancelarse tras enviarlas
- Los enlaces de audio son válidos durante 24 horas; guárdalos pronto
Facturación:
- Según el uso real de tokens: los de entrada (relacionados con la longitud del texto) y los de salida (con la duración del audio) se cobran por separado
- Al enviar, se reservan créditos según la longitud del texto (
usage.credits_reserved). Al finalizar se ajustan al uso real, devolviendo el exceso o cobrando la diferencia. Si falla la tarea, se devuelve todo - Los números, letras y símbolos pueden leerse individualmente, generando audio más largo y más tokens de salida que un texto normal de igual longitud; el consumo real puede superar la reserva
- Para un mismo texto, las instrucciones o etiquetas de lectura lenta, como
[very slowly], pueden aumentar mucho los tokens de salida. Ajustarspeech_ratee insertar pausas SSML no los aumenta
Resultado de tarea (cuando status es completed):
| Campo | Descripción |
|---|---|
results[0] | URL del audio |
result_data[0].audio_url | URL del audio, igual a results[0] |
result_data[0].format | Formato de audio |
result_data[0].sample_rate | Frecuencia de muestreo (Hz) |
usage.input_tokens / usage.output_tokens / usage.total_tokens | Tokens utilizados en esta síntesis |
usage.credits_used | Créditos realmente utilizados |
curl --request POST \
--url https://api.evolink.ai/v1/audios/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "qwen-audio-3.1-tts-flash",
"prompt": "我家的后面有一个很大的花园。"
}
'{
"created": 1790000000,
"id": "task-unified-1790000000-abcd1234",
"model": "qwen-audio-3.1-tts-flash",
"object": "audio.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": false,
"estimated_time": 3,
"audio_type": "tts"
},
"type": "audio",
"usage": {
"credits_reserved": 0.0144
}
}Autorizaciones
Todos los endpoints requieren autenticación con token Bearer
Obtener una clave API:
Visita Gestión de claves API para obtener tu clave
Añade esta cabecera:
Authorization: Bearer YOUR_API_KEY
Cuerpo
- Option 1
- Option 2
Proporciona al menos un texto no vacío en prompt o input. Si se envían ambos, sus contenidos deben coincidir. Si se envían response_format y format, sus valores deben coincidir.
Texto que se sintetizará
Restricciones:
- Máximo
5000caracteres - Mantén la puntuación en textos largos: los pasajes continuos sin separación de frases pueden truncarse en el proveedor alrededor de
1500tokens de salida (unos 120 segundos de audio). La tarea sigue figurando como correcta y se factura por los tokens generados; el gateway no puede detectar este truncamiento - También puedes usar
input. Se requiere al menos un texto no vacío; se recomienda enviar solo un campo. Contenidos diferentes devuelven400(parameter_conflict) - El texto debe estar en un idioma admitido por la voz elegida; de lo contrario puede haber errores de pronunciación
Etiquetas emocionales y paralingüísticas: Se insertan directamente en el texto, sin parámetros adicionales; su texto cuenta como caracteres de facturación
- Etiquetas de control: Definen la emoción o el estilo del texto siguiente hasta la próxima etiqueta de control.
[sad]triste,[amazed]asombrado,[deep and loud shouting]grito grave y fuerte,[trembling]tembloroso,[angry]enfadado,[excited]emocionado,[sarcastic]sarcástico,[curious]curioso,[like dracula]grave e inquietante,[bored]aburrido,[tired]cansado,[scornful]desdeñoso,[shouting]gritando,[asmr]susurro suave ASMR,[panicked]en pánico,[mischievously]travieso,[empathetic]empático,[whispers]susurrando,[reluctantly]a regañadientes,[crying]llorando,[serious]serio,[very slowly]muy despacio,[very fast]muy rápido - Etiquetas paralingüísticas: Insertan un efecto vocal en ese punto sin cambiar la emoción del texto circundante.
[gasp]jadeo,[sighing]suspiro,[clears throat]carraspeo,[giggles]risita,[laughing]risa,[cough]tos,[snorts]resoplido
Ejemplo: [excited]今天的天气真不错![laughing]我们一起出去玩吧!
Con enable_ssml: true, este campo se interpreta como SSML
5000\S"我家的后面有一个很大的花园。"
Nombre del modelo
qwen-audio-3.1-tts-flash "qwen-audio-3.1-tts-flash"
Alias de prompt, con las mismas reglas y límites de longitud
- Proporciona al menos un texto no vacío en
promptoinput - Si se envían ambos, sus contenidos deben coincidir; de lo contrario,
400(parameter_conflict)
5000"我家的后面有一个很大的花园。"
Nombre de voz, distingue mayúsculas y minúsculas
- 68 voces del sistema; nombres, género y usos en la lista de voces
- Por defecto
longanhuan_v3.1 - También admite voces creadas con Voice Enrollment:
qwen-audio-3.1-tts-flash-{prefix}-{32-character-id}para clonación,qwen-audio-3.1-tts-flash-vd-{prefix}-{32-character-id}para diseño. Solo puede usarlas la cuenta que las creó. Voces de otros modelos, comoqwen-tts-vd-…deqwen-voice-design, devuelven400(invalid_voice). Las inexistentes o de otra cuenta devuelven404(voice_not_found) - Las voces personalizadas caducan por defecto
6 horasdespués de completar su creación. Después, la síntesis devuelve404(voice_expired); crea una nueva voz con Voice Enrollment
"longanhuan_v3.1"
Formato de salida: mp3, wav u opus, por defecto mp3
opususa un contenedor Ogg Opus- También puedes usar
format. Se recomienda enviar solo un campo; valores diferentes devuelven400(parameter_conflict)
mp3, wav, opus "mp3"
Alias de response_format; admite mp3, wav y opus
- Si faltan ambos campos, se usa
mp3 - Si se envían ambos, sus valores deben coincidir; de lo contrario,
400(parameter_conflict)
mp3, wav, opus "mp3"
Frecuencia de muestreo de salida (Hz)
22050y44100no se admiten conresponse_format: opus- Si se omite o es
null, se usa el valor predeterminado;0o valores fuera de la lista devuelven400
8000, 12000, 16000, 22050, 24000, 44100, 48000, null 24000
Volumen, de 0 a 100
0 <= x <= 10050
Multiplicador de velocidad
1.0: velocidad normal (predeterminada)2.0: doble velocidad;0.5: media velocidad
Rango: 0.5 a 2.0. Este ajuste no cambia el número de tokens de salida
0.5 <= x <= 21
Multiplicador de tono
1.0: tono predeterminado- Mayor que
1.0, voz más aguda; menor, más grave
Rango: 0.5 a 2.0
Cambiar el tono también cambia la velocidad y la duración del audio
- Un tono más alto acelera y acorta el audio; uno más bajo lo ralentiza y alarga. La duración varía aproximadamente de forma inversa al cuadrado del valor
- Para una frase de unos 2.8 segundos con
1.0:0.8da unos 4.3 segundos,1.22.1 segundos,0.510.9 segundos y2.00.7 segundos - Se recomiendan ajustes pequeños entre
0.8y1.2; cerca de0.5o2.0, la voz resulta demasiado lenta o rápida - Si también se envía
speech_ratedistinto de1.0,pitchno tiene efecto; no pueden combinarse - Ajustar el tono no cambia el número de tokens de salida
0.5 <= x <= 21
Instrucciones en lenguaje natural para controlar emoción, tono, personaje, dialecto y expresión
Restricciones:
- Máximo
100caracteres de facturación: cada carácter Han (incluidos los kanji japoneses y los hanja coreanos) cuenta como 2; los demás, incluidos kana y hangul, como 1 (unos 50 caracteres Han o 100 ingleses). Superar el límite devuelve400
Ejemplos:
用欢快、热情的语气说(hablar de forma alegre y entusiasta)请用上海话表达(usar shanghainés; voces multilingües y dialectales)Speak slowly in a calm and gentle tone
Las instrucciones no cuentan como tokens de entrada, pero pueden cambiar la duración del audio y los tokens de salida
El parámetro es
instruction(singular);instructionsdevuelve400
"用欢快、热情的语气说"
Indicación del idioma de destino para mejorar la lectura de números, abreviaturas y símbolos y la síntesis en idiomas menos comunes
Por ejemplo, con zh, 110 en hello, this is 110 se lee en chino como «yao yao ling»
| Valor | Idioma | Valor | Idioma |
|---|---|---|---|
zh | Chino | th | Tailandés |
en | Inglés | id | Indonesio |
fr | Francés | vi | Vietnamita |
de | Alemán | es | Español |
ja | Japonés | it | Italiano |
ko | Coreano | ms | Malayo |
ru | Ruso | fil | Filipino |
pt | Portugués | ar | Árabe |
Si se omite, el modelo detecta el idioma; este parámetro no traduce el texto
zh, en, fr, de, ja, ko, ru, pt, th, id, vi, es, it, ms, fil, ar "zh"
Interpretar prompt como SSML
Si se activa, puedes usar etiquetas SSML, como <break time="1s"/> para insertar una pausa:
<speak>欢迎收听今天的节目。<break time="1s"/>我们马上开始。</speak>
Las pausas SSML no cuentan como tokens de salida
false
Pronunciación personalizada y sustitución de texto para corregir caracteres con varias lecturas, nombres propios y otras pronunciaciones
pronunciation: anota palabras con pinyin, separando sílabas con espacios y marcando tonos con cifras, comotian1 qi4replace: sustituye palabras antes de sintetizar. La síntesis y la facturación usan el texto resultante, que también debe respetar5000caracteres; superar el límite devuelve400(prompt_too_long)
Ambas listas admiten como máximo 200 entradas en total, contadas como pares clave-valor de los objetos. Superar el límite devuelve 400 (invalid_parameter)
Proporciona al menos una lista. Cada lista enviada debe ser un array no vacío de objetos de forma {"palabra": "valor"}
Ejemplo:
{
"pronunciation": [{"天气": "tian1 qi4"}],
"replace": [{"今天": "金天"}]
}
Show child attributes
Show child attributes
Insertar una marca AIGC invisible en el audio generado (para wav / mp3 / opus)
false
URL HTTPS de callback para el resultado de la tarea
Momento:
- Cuando la tarea termina (
completed) o falla (failed); este modelo no permite cancelación - Después de confirmar la facturación
Seguridad:
- Solo HTTPS
- Se prohíben IP privadas (127.0.0.1, 10.x.x.x, 172.16–31.x.x, 192.168.x.x, etc.)
- URL de máximo
2048caracteres
Entrega:
- Tiempo de espera:
10segundos - Máximo
3reintentos tras un fallo, con demoras de1/2/4segundos - Cuerpo del callback con el mismo formato que la respuesta de consulta de tarea
- Un estado 2xx indica éxito; los demás provocan reintentos
"https://your-domain.com/webhooks/tts-completed"
Respuesta
Tarea de síntesis de voz creada correctamente
Marca de tiempo de creación de la tarea
1790000000
ID de tarea
"task-unified-1790000000-abcd1234"
Modelo utilizado realmente
"qwen-audio-3.1-tts-flash"
Tipo específico de objeto de tarea
audio.generation.task Progreso de la tarea en porcentaje (0–100)
0 <= x <= 1000
Estado de la tarea
pending, processing, completed, failed "pending"
Detalles de la tarea de audio
Show child attributes
Show child attributes
Tipo de salida de la tarea
audio "audio"
Información de uso y facturación
Show child attributes
Show child attributes