Skip to main content

CosyVoice HTTP API

API HTTP de síntesis de voz no en tiempo real de CosyVoice, con llamadas sin streaming y SSE, parámetros de solicitud y campos de respuesta.

Puntos de conexión

Sustituya YOUR_WORKSPACE_ID por el ID del espacio de trabajo de la región y utilice una clave de API de la misma región.
  • China (Pekín)
POST https://YOUR_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer

Encabezados de solicitud

ParámetroTipoObligatorioDescripción
AuthorizationstringObligatorioToken de autenticación con el formato Bearer <your_api_key>.
Content-TypestringObligatorioEstablezca el valor en application/json.
X-DashScope-SSEstringOpcionalEstablezca el valor en enable para streaming. Si se omite, se devuelve el resultado completo.

Ejemplos

  • Sin streaming
  • Streaming
curl -X POST "https://YOUR_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer" \
  -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "cosyvoice-v3-flash",
  "input": {
    "text": "我家的后面有一个很大的花园。",
    "voice": "longanyang",
    "format": "wav",
    "sample_rate": 24000
  }
}'
Un evento SSE puede contener varias líneas data:. Combine todas las líneas data: del evento antes de analizar el JSON. Decodifique el Base64 y concatene los bloques de audio en el orden de los eventos. La trama final tiene output.finish_reason=stop y devuelve la URL del audio completo.

Cuerpo de la solicitud

ParámetroTipoObligatorioPredeterminadoDescripción
modelstringObligatorio—ID del modelo de síntesis de voz. Consulte los modelos y regiones en Síntesis de voz no en tiempo real.
inputobjectObligatorio—Objeto de parámetros de entrada.
input.textstringObligatorio—Texto para sintetizar. Para SSML, establezca enable_ssml=true. LaTeX no requiere otra configuración. Consulte SSML y LaTeX para conocer el alcance, las etiquetas y la sintaxis.
input.voicestringObligatorio—ID de voz. Para las voces del sistema, consulte la lista de voces. Cree una voz personalizada con la clonación de voz o el diseño de voz y utilice el modelo de destino vinculado.
input.formatstringOpcionalmp3Codificación de audio. Valores: mp3, pcm, wav, opus.
input.sample_rateintegerOpcional22050Frecuencia de muestreo en Hz. Valores: 8000, 12000, 16000, 22050, 24000, 44100, 48000. Con format=opus, solo se admiten 8000, 12000, 16000, 24000, 48000.
input.volumeintegerOpcional50Volumen. Intervalo: [0, 100].
input.ratefloatOpcional1.0Velocidad de voz. Intervalo: [0.5, 2.0].
input.bit_rateintegerOpcional32Tasa de bits de audio en kbps. Intervalo: [6, 510]. Solo se aplica con format=opus.
input.pitchfloatOpcional1.0Tono. Intervalo: [0.5, 2.0].
input.enable_ssmlbooleanOpcional—Indica si se habilita SSML. Consulte Límites de uso para conocer las restricciones de modelos, voces e interfaces.
input.word_timestamp_enabledbooleanOpcionalfalseIndica si se devuelven marcas de tiempo por palabra. Solo streaming. Admite voces clonadas de cosyvoice-v3.5-plus, cosyvoice-v3.5-flash, cosyvoice-v3-flash, cosyvoice-v3-plus, cosyvoice-v2 y voces del sistema señaladas en la lista de voces. Las voces clonadas de otros modelos no son compatibles.
input.seedintegerOpcional0Semilla aleatoria. Intervalo: [0, 65535]. Con la misma versión del modelo, texto, voz y demás parámetros, la misma semilla reproduce el mismo resultado.
input.language_hintsarray[string]Opcional—Idioma de destino de la síntesis. Solo se procesa el primer elemento del arreglo. Es independiente del idioma de origen de la muestra de clonación. Úselo si la pronunciación de números, abreviaturas, símbolos o idiomas menos comunes no es la esperada. Los códigos aparecen abajo. Para el idioma de origen de la clonación, consulte la API de clonación de voz.
input.instructionstringOpcional—Instrucción que controla el dialecto, la emoción o el rol. Consulte Control mediante instrucciones para modelos, voces y uso.
input.enable_aigc_tagbooleanOpcionalfalseIndica si se incorpora un identificador AIGC invisible en audio WAV, MP3 u Opus.Solo es compatible con cosyvoice-v3-flash, cosyvoice-v3-plus y cosyvoice-v2.
input.aigc_propagatorstringOpcionalUID de Alibaba CloudCampo ContentPropagator que identifica al distribuidor. Solo se aplica con enable_aigc_tag=true.Solo es compatible con cosyvoice-v3-flash, cosyvoice-v3-plus y cosyvoice-v2.
input.aigc_propagate_idstringOpcionalRequest ID de esta solicitudCampo PropagateID que identifica esta operación de distribución. Solo se aplica con enable_aigc_tag=true.Solo es compatible con cosyvoice-v3-flash, cosyvoice-v3-plus y cosyvoice-v2.
input.hot_fixobjectOpcional—Configuración de corrección de texto. pronunciation personaliza la pronunciación de palabras concretas. replace sustituye el texto indicado antes de la síntesis.No es compatible con cosyvoice-v2.
input.enable_markdown_filterbooleanOpcionalfalseIndica si se filtran los marcadores Markdown antes de la síntesis. Solo es compatible con voces clonadas de cosyvoice-v3-flash.

Códigos de idioma

  • zh: Chino
  • en: Inglés
  • fr: Francés
  • de: Alemán
  • ja: Japonés
  • ko: Coreano
  • ru: Ruso
  • pt: Portugués
  • th: Tailandés
  • id: Indonesio
  • vi: Vietnamita
  • es: Español
  • it: Italiano
  • ms: Malayo
  • fil: Filipino
  • ar: Árabe
Ejemplo de configuración de corrección de texto:
{
  "hot_fix": {
    "pronunciation": [
      {
        "天气": "tian1 qi4"
      }
    ],
    "replace": [
      {
        "今天": "金天"
      }
    ]
  }
}

Cuerpo de la respuesta

ParámetroTipoDescripción
request_idstringIdentificador único de la solicitud.
outputobjectSalida del modelo.
output.finish_reasonstringMotivo de finalización. null indica síntesis en curso; stop indica síntesis terminada.
output.typestringSolo se devuelve en streaming. sentence-begin marca el inicio de una oración; sentence-synthesis marca un bloque de audio, con varios bloques posibles por oración; sentence-end marca el final e incluye el uso. Los bloques de audio y las tramas de datos se corresponden uno a uno. Agregue los bloques al mismo archivo en orden.
output.original_textstringOración obtenida al dividir el texto de entrada. Puede faltar en la última oración.
output.sentenceobjectInformación de la oración.
output.sentence.indexintegerÍndice de la oración, a partir de 0.
output.sentence.wordsarrayPalabras de la oración y sus marcas de tiempo.
output.sentence.words[].textstringUna palabra o un carácter.
output.sentence.words[].begin_indexintegerPosición inicial en la oración, a partir de 0.
output.sentence.words[].end_indexintegerPosición final en la oración, a partir de 1.
output.sentence.words[].begin_timeintegerMarca de tiempo de inicio del audio de la palabra, en milisegundos.
output.sentence.words[].end_timeintegerMarca de tiempo de fin del audio de la palabra, en milisegundos.
output.audioobjectAudio sintetizado.
output.audio.datastringBloque de audio Base64 para streaming. Vacío sin streaming.
output.audio.urlstringURL del archivo de audio completo, válida durante 24 horas.
output.audio.idstringIdentificador del audio sintetizado.
output.audio.expires_atintegerMarca de tiempo de vencimiento de url.
usageobjectInformación de uso.
usage.charactersintegerCaracteres facturables acumulados.
  • Sin streaming
  • Streaming
{
  "output": {
    "audio": {
      "data": "",
      "id": "audio_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "expires_at": 1792079570,
      "url": "https://example.com/output.wav"
    },
    "finish_reason": "stop"
  },
  "usage": {
    "characters": 27
  },
  "request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}