Converta um texto completo em fala por HTTP. Conheça os recursos dos modelos, faça a primeira chamada e melhore a qualidade da síntese.
Recursos
A síntese de fala não em tempo real recebe o texto completo em uma única solicitação HTTP e oferece saída sem streaming ou com streaming por SSE. A saída sem streaming retorna uma URL de áudio válida por 24 horas. Baixe e salve o áudio antes da expiração; depois disso, você pode repetir a síntese. A saída com streaming retorna os dados de áudio em fragmentos.
- Idiomas e dialetos: selecione um modelo e uma voz para o idioma de destino ou especifique um dialeto por instrução. Consulte Dialetos.
- Expressividade: ajuste a interpretação com instruções em linguagem natural ou insira tags de emoção e sons não verbais. Consulte Controle por instruções e Tags de emoção e sons não verbais.
- Vozes personalizadas: crie uma voz a partir de uma amostra de áudio com a clonagem de voz ou de uma descrição com o design de voz.
- Controle detalhado e fórmulas: use SSML e LaTeX para controlar pausas e pronúncia ou converter fórmulas em fala.
Observação
- Os recursos disponíveis variam conforme o modelo e a voz. Verifique o escopo na documentação de cada recurso.
- Para enviar texto de forma incremental, use a síntese de fala em tempo real.
Primeiros passos
-
Obtenha uma chave de API e configure a variável de ambiente
DASHSCOPE_API_KEY. Use uma chave da região indicada no exemplo. -
Para um endpoint exclusivo do workspace, substitua
YOUR_WORKSPACE_IDpelo ID do workspace dessa região. -
Instale a dependência do exemplo:
pip install requests
Qwen-Audio-TTS (Recomendado)
Os exemplos a seguir usam qwen-audio-3.1-tts-flash e a voz do sistema longanhuan_v3.1 na região Singapura para demonstrar a saída sem streaming e com streaming.
Saída sem streaming
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"},
json={
"model": "qwen-audio-3.1-tts-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanhuan_v3.1",
"format": "wav",
"sample_rate": 24000
}
},
timeout=60,
)
response.raise_for_status()
audio_url = response.json()["output"]["audio"]["url"]
audio_response = requests.get(audio_url, timeout=60)
audio_response.raise_for_status()
with open("output.wav", "wb") as f:
f.write(audio_response.content)
O áudio é salvo em output.wav no diretório atual.
Saída com streaming
Este exemplo imprime os eventos SSE recebidos linha por linha. O campo output.audio.data contém um fragmento de áudio codificado em Base64.
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}", "X-DashScope-SSE": "enable"},
json={
"model": "qwen-audio-3.1-tts-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanhuan_v3.1",
"format": "wav",
"sample_rate": 24000
}
},
stream=True,
timeout=60,
)
response.raise_for_status()
for line in response.iter_lines():
print(line.decode("utf-8"))
response.close()
CosyVoice
Os exemplos a seguir usam cosyvoice-v3-flash e a voz do sistema longanyang em Pequim para demonstrar a saída sem streaming e com streaming.
Saída sem streaming
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"},
json={
"model": "cosyvoice-v3-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanyang",
"format": "wav",
"sample_rate": 24000
}
},
timeout=60,
)
response.raise_for_status()
audio_url = response.json()["output"]["audio"]["url"]
audio_response = requests.get(audio_url, timeout=60)
audio_response.raise_for_status()
with open("output.wav", "wb") as f:
f.write(audio_response.content)
O áudio é salvo em output.wav no diretório atual.
Saída com streaming
Este exemplo imprime os eventos SSE recebidos linha por linha. O campo output.audio.data contém um fragmento de áudio codificado em Base64.
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}", "X-DashScope-SSE": "enable"},
json={
"model": "cosyvoice-v3-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanyang",
"format": "wav",
"sample_rate": 24000
}
},
stream=True,
timeout=60,
)
response.raise_for_status()
for line in response.iter_lines():
print(line.decode("utf-8"))
response.close()
Melhorar a qualidade da síntese
Idiomas e pronúncia
Se números, abreviações ou símbolos forem pronunciados incorretamente, use language_hints para definir o idioma de destino ou hot_fix para personalizar a pronúncia e a substituição de texto. Consulte os modelos compatíveis e a configuração em Qwen-Audio-TTS API ou CosyVoice API.
Use SSML para controlar pausas, a leitura de números ou a pronúncia de palavras. Para os modelos, vozes, interfaces e tags compatíveis com Qwen-Audio-TTS e CosyVoice, consulte SSML e LaTeX.
Controle por instruções
Adicione instruction ao objeto input da solicitação para especificar o idioma de síntese e descrever a velocidade, a emoção ou o estilo de fala em linguagem natural.
ObservaçãoPara criar uma nova voz com gênero, idade ou características vocais específicas, ou consultar orientações e exemplos de descrições de voz, veja design de voz.
Qwen-Audio-TTS
As vozes do sistema, clonadas e criadas por design de qwen-audio-3.1-tts-plus, qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-plus e qwen-audio-3.0-tts-flash aceitam instruções em linguagem natural por meio de instruction nas solicitações de síntese.
Recomendamos especificar o idioma de síntese e o efeito desejado em instruction para melhorar a qualidade da síntese. O idioma especificado na instrução deve corresponder ao idioma do texto a ser sintetizado. Por exemplo, ao sintetizar texto em holandês, defina:
{"instruction": "请用荷兰话说,每个字都慢慢说"}
CosyVoice
ObservaçãoNo CosyVoice, instruction pode ter até 100 caracteres. Caracteres chineses, incluindo simplificados, tradicionais e usados no japonês e no coreano, contam como dois cada. Outros caracteres, incluindo pontuação, letras, números, kana e hangul, contam como um cada.
| Modelo | Vozes aplicáveis | Requisitos das instruções | Idiomas do texto das instruções |
|---|---|---|---|
| Vozes clonadas e criadas por design Não há vozes do sistema. | Instruções em linguagem natural. | Chinês, inglês, francês, alemão, japonês, coreano, russo, português, tailandês, indonésio e vietnamita. |
| Vozes do sistema | Use o formato e o conteúdo fixos da lista de vozes. Vozes clonadas e criadas por design não oferecem controle por instruções. | Use o idioma indicado na lista de vozes. |
| Vozes do sistema | Use o formato e o conteúdo fixos da lista de vozes. | Chinês. |
Vozes clonadas e criadas por design | Instruções em linguagem natural. | Chinês, inglês, francês, alemão, japonês, coreano e russo. |
Dialetos
A síntese de dialetos gera fala em dialetos chineses, como os de Henan ou Sichuan. A seleção do dialeto depende do modelo e do tipo de voz.
Qwen-Audio-TTS
- Vozes do sistema: selecione uma voz compatível com o dialeto de destino na lista Qwen-Audio-TTS. Vozes que oferecem o dialeto diretamente não exigem configurações adicionais. Para vozes compatíveis com instruções de dialeto, use o parâmetro de controle por instruções
instruction. - Vozes clonadas: especifique o dialeto com o parâmetro de controle por instruções
instruction. - Vozes criadas por design: dialetos não são compatíveis.
Para vozes compatíveis com instruções de dialeto, defina instruction="请讲上海话。" no objeto input da solicitação para sintetizar texto em chinês no dialeto de Xangai.
CosyVoice
- Vozes do sistema: selecione uma voz que ofereça o dialeto diretamente, como
longshange_v3, ou aceite instruções de dialeto, comolonganhuan_v3. Siga o formato da lista de vozes. - Vozes clonadas: use
instructioncom um modelo compatível com controle por instruções para especificar o dialeto. - Vozes criadas por design: dialetos não são compatíveis.
ObservaçãoAs vozes clonadas de cosyvoice-v3-plus não permitem especificar dialetos por instruções.
No exemplo inicial de CosyVoice, substitua input pelo conteúdo a seguir para gerar o dialeto Henan com longanhuan_v3:
{
"text": "叫你去买盐,你买回来一袋面,这不是弄啥嘞吗!",
"voice": "longanhuan_v3",
"format": "wav",
"sample_rate": 24000,
"instruction": "请用河南话表达。"
}
O Qwen3-TTS usa vozes do sistema compatíveis com o dialeto de destino. Consulte a lista de vozes Qwen-TTS.
Tags de emoção e sons não verbais
ObservaçãoAplica-se a qwen-audio-3.1-tts-plus, qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-plus e qwen-audio-3.0-tts-flash.
As tags de emoção e paralinguísticas controlam a emoção e o estilo da fala e inserem sons, como risadas ou suspiros, em posições específicas. Escreva as tags diretamente no texto a ser sintetizado, text, sem parâmetros adicionais.
Exemplos de uso
Este texto começa com uma interpretação animada, insere uma risada na posição indicada e continua a fala:
[excited]今天的天气真不错![laughing]我们一起出去玩吧!
Este texto muda para uma interpretação animada na segunda frase:
[serious]请注意安全事项。[excited]好了,现在让我们开始吧!
Tags compatíveis
Modelos compatíveis
Singapura
Use uma chave de API e um endpoint desta região para chamar estes modelos:
- Qwen-Audio-TTS:
qwen-audio-3.1-tts-plus,qwen-audio-3.1-tts-flash,qwen-audio-3.0-tts-plus,qwen-audio-3.0-tts-flash - Qwen3-TTS:
qwen3-tts-flash
China (Pequim)
Use uma chave de API e um endpoint desta região para chamar estes modelos:
- Qwen-Audio-TTS:
qwen-audio-3.1-tts-plus,qwen-audio-3.1-tts-flash,qwen-audio-3.0-tts-plus,qwen-audio-3.0-tts-flash - CosyVoice:
cosyvoice-v3.5-plus,cosyvoice-v3.5-flash,cosyvoice-v3-plus,cosyvoice-v3-flash,cosyvoice-v2 - Qwen3-TTS:
qwen3-tts-flash
Para vozes do sistema e amostras de áudio, consulte as listas Qwen-Audio-TTS, CosyVoice e Qwen3-TTS. Uma voz clonada ou criada por design deve ser usada com o modelo de destino definido na criação.