Skip to main content
Speech synthesis

Clonagem de voz

A clonagem de voz requer apenas uma amostra de áudio de 10 a 20 segundos para gerar uma voz personalizada altamente semelhante, sem necessidade de treinamento de modelo.

Visão geral

A clonagem de voz é ideal para cenários como assistentes de voz personalizados, transmissões exclusivas de marcas e conteúdo de áudio customizado. O Alibaba Cloud Model Studio oferece recursos de clonagem de voz por meio das seguintes séries de modelos:
  • Qwen-Audio-TTS / CosyVoice: Crie vozes usando o DashScope SDK ou a HTTP API. Suporta síntese de fala em tempo real . Disponível nas regiões Beijing e Singapore.
  • Qwen-Audio-Realtime: O Qwen-Audio-Realtime é um modelo de diálogo de voz em tempo real (não é um modelo de síntese de fala). A clonagem de voz serve para personalizar a voz TTS das respostas do modelo de diálogo. Crie vozes usando o DashScope SDK ou a HTTP API. Disponível apenas na região China (Beijing).
  • Qwen-TTS: Crie vozes por meio da HTTP API. Suporta síntese de fala em tempo real e não em tempo real. Disponível nas regiões Beijing e Singapore.
Para comparações detalhadas e recomendações de seleção de modelos, consulte Speech synthesis.

Pré-requisitos

  1. Configure an API key e defina it as an environment variable.
  2. Se você chamar a API pelo DashScope SDK, instale the latest SDK.
  3. Prepare um arquivo de áudio: O áudio deve atender aos Audio requirements.

Início rápido

A clonagem de voz envolve três etapas:
  1. Prepare o áudio: Prepare um arquivo de áudio que atenda aos Audio requirements.
  2. Crie uma voz: Chame a API de clonagem de voz para fazer upload do áudio e criar uma voz. Use o parâmetro target_model para especificar o modelo de síntese de fala a ser vinculado.
  3. Sintetize a fala com a voz clonada: Chame a API de síntese de fala com o ID de voz retornado na etapa anterior.

Clonagem de voz Qwen-Audio-TTS

A clonagem de voz Qwen-Audio-TTS está disponível nas regiões Beijing e Singapore.
Etapa 1: Criar uma voz Chame a API de clonagem de voz para fazer upload do áudio e criar uma voz. O parâmetro url especifica a URL acessível do arquivo de áudio, e o parâmetro prefix serve como prefixo do nome da voz. A configuração abaixo refere-se à região Singapore. Para usar um modelo na região China (Beijing), substitua o domínio por https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization. Substitua {WorkspaceId} pelo seu Workspace ID real.
curl -X POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "voice-enrollment",
    "input": {
        "action": "create_voice",
        "target_model": "qwen-audio-3.0-tts-flash",
        "prefix": "myvoice",
        "url": "https://your-audio-url.wav"
    }
}'
Etapa 2: Sintetizar fala com a voz clonada Use o valor voice_id retornado na etapa anterior na solicitação a seguir.
# coding=utf-8

import dashscope
from dashscope.audio.tts_v2 import *
import os

# The API Keys for Singapore and Beijing regions are different. Get your API Key: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# If the environment variable is not configured, replace the following line with your Model Studio API Key: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.environ.get('DASHSCOPE_API_KEY')

# The following is the configuration for the Singapore region. Replace "{WorkspaceId}" with your actual workspace ID when calling. The configuration varies by region.
dashscope.base_websocket_api_url='wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference'

# Voice cloning and speech synthesis must use the same model
model = "qwen-audio-3.0-tts-flash"
# Replace the voice parameter with the custom voice generated by voice cloning
voice = "voice_id"

# Instantiate SpeechSynthesizer, passing the model, voice, and other request parameters in the constructor
synthesizer = SpeechSynthesizer(model=model, voice=voice)
# Send text for synthesis and get binary audio
audio = synthesizer.call("What's the weather like today?")
# The first text submission requires establishing a WebSocket connection, so the first-packet latency includes the connection setup time
print('[Metric] requestId: {}, first-packet latency: {} ms'.format(
    synthesizer.get_last_request_id(),
    synthesizer.get_first_package_delay()))

# Save audio to a local file
with open('output.mp3', 'wb') as f:
    f.write(audio)

Clonagem de voz Qwen-Audio-Realtime

A clonagem de voz Qwen-Audio-Realtime está disponível apenas na região China (Beijing). Os requisitos de áudio são os mesmos do Qwen-Audio-TTS.
Etapa 1: Criar uma voz Use o DashScope SDK ou a HTTP API para chamar a API de clonagem de voz, fazer upload do áudio e criar uma voz. O parâmetro target_model especifica o nome do modelo de diálogo em tempo real, e o parâmetro prefix serve como prefixo do nome da voz.
  • Python
  • cURL
import os
import requests

# If not set as an environment variable, replace with your API Key: api_key = "sk-xxx"
api_key = os.environ.get('DASHSCOPE_API_KEY')

# Qwen-Audio-Realtime is available in the Beijing region only.
# Replace {WorkspaceId} with your actual Workspace ID (use a Beijing region API key).
url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization'

response = requests.post(
    url,
    headers={
        'Authorization': f'Bearer {api_key}',
        'Content-Type': 'application/json'
    },
    json={
        'model': 'voice-enrollment',
        'input': {
            'action': 'create_voice',
            'target_model': 'qwen-audio-3.0-realtime-plus',
            'prefix': 'myvoice',
            'url': 'https://your-audio-url.wav'
        }
    }
)
result = response.json()
print('voice_id:', result['output']['voice_id'])
Etapa 2: Usar a voz clonada em uma sessão de diálogo em tempo real Passe o voice_id retornado na etapa anterior para o parâmetro voice no evento session.update. Para mais detalhes, consulte Voice configuration.
{"type":"session.update","session":{"voice":"qwen-audio-3.0-realtime-plus-myvoice-xxxxxx"}}

Clonagem de voz CosyVoice

A clonagem de voz CosyVoice está disponível na região Beijing (séries v3.5/v3/v2 ) e na região Singapore (cosyvoice-v3-plus).Na região Singapore, o modelo cosyvoice-v3-flash não suporta atualmente síntese de fala com vozes clonadas. Para usar uma voz clonada na região Singapore, utilize qwen-audio-3.0-tts-flash em vez disso.
Etapa 1: Criar uma voz Chame a API de clonagem de voz para fazer upload do áudio e criar uma voz. O parâmetro url especifica a URL acessível do arquivo de áudio, e o parâmetro prefix serve como prefixo do nome da voz. A configuração abaixo refere-se à região Singapore. Para usar um modelo na região China (Beijing), substitua o domínio por https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization. Substitua {WorkspaceId} pelo seu Workspace ID real.
curl -X POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "voice-enrollment",
    "input": {
        "action": "create_voice",
        "target_model": "cosyvoice-v3.5-plus",
        "prefix": "myvoice",
        "url": "https://your-audio-url.wav"
    }
}'
Etapa 2: Sintetizar fala com a voz clonada Use o valor voice_id retornado na etapa anterior na solicitação a seguir.
# coding=utf-8

import dashscope
from dashscope.audio.tts_v2 import *
import os

# The API Keys for Singapore and Beijing regions are different. Get your API Key: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# If the environment variable is not configured, replace the following line with your Model Studio API Key: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.environ.get('DASHSCOPE_API_KEY')

# The following is the configuration for the Singapore region. Replace "{WorkspaceId}" with your actual workspace ID when calling. The configuration varies by region.
dashscope.base_websocket_api_url='wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference'

# Voice cloning and speech synthesis must use the same model
model = "cosyvoice-v3.5-plus"
# Replace the voice parameter with the custom voice generated by voice cloning
voice = "voice_id"

# Instantiate SpeechSynthesizer, passing the model, voice, and other request parameters in the constructor
synthesizer = SpeechSynthesizer(model=model, voice=voice)
# Send text for synthesis and get binary audio
audio = synthesizer.call("What's the weather like today?")
# The first text submission requires establishing a WebSocket connection, so the first-packet latency includes the connection setup time
print('[Metric] requestId: {}, first-packet latency: {} ms'.format(
    synthesizer.get_last_request_id(),
    synthesizer.get_first_package_delay()))

# Save audio to a local file
with open('output.mp3', 'wb') as f:
    f.write(audio)

Clonagem de voz Qwen-TTS

Os exemplos a seguir usam um arquivo de áudio local voice.mp3. Substitua-o pelo caminho real do seu arquivo ao executar o código.
O target_model especificado durante a criação da voz deve corresponder exatamente ao modelo usado para a síntese de fala. Caso contrário, a síntese falhará.
  • Python
  • cURL
import os
import requests
import base64
import pathlib
import dashscope

# ======= Constants =======
DEFAULT_TARGET_MODEL = "qwen3-tts-vc-2026-01-22"  # Voice cloning and speech synthesis must use the same model
DEFAULT_PREFERRED_NAME = "guanyu"
DEFAULT_AUDIO_MIME_TYPE = "audio/mpeg"
VOICE_FILE_PATH = "voice.mp3"  # Relative path to the local audio file used for voice cloning

def create_voice(file_path: str,
                 target_model: str = DEFAULT_TARGET_MODEL,
                 preferred_name: str = DEFAULT_PREFERRED_NAME,
                 audio_mime_type: str = DEFAULT_AUDIO_MIME_TYPE) -> str:
    """
    Create a voice and return the voice parameter
    """
    # The API Keys for Singapore and Beijing regions are different. Get your API Key: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    # If the environment variable is not configured, replace the following line with your Model Studio API Key: api_key = "sk-xxx"
    api_key = os.getenv("DASHSCOPE_API_KEY")

    file_path_obj = pathlib.Path(file_path)
    if not file_path_obj.exists():
        raise FileNotFoundError(f"Audio file not found: {file_path}")

    base64_str = base64.b64encode(file_path_obj.read_bytes()).decode()
    data_uri = f"data:{audio_mime_type};base64,{base64_str}"

    # The following is the configuration for the Singapore region.
    url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
    payload = {
        "model": "qwen-voice-enrollment", # Do not modify this value
        "input": {
            "action": "create",
            "target_model": target_model,
            "preferred_name": preferred_name,
            "audio": {"data": data_uri}
        }
    }
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }

    resp = requests.post(url, json=payload, headers=headers)
    if resp.status_code != 200:
        raise RuntimeError(f"Failed to create voice: {resp.status_code}, {resp.text}")

    try:
        return resp.json()["output"]["voice"]
    except (KeyError, ValueError) as e:
        raise RuntimeError(f"Failed to parse voice response: {e}")

if __name__ == '__main__':
    # The following is the configuration for the Singapore region.
    dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

    text = "What's the weather like today?"
    response = dashscope.MultiModalConversation.call(
        model=DEFAULT_TARGET_MODEL,
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        text=text,
        voice=create_voice(VOICE_FILE_PATH), # Replace the voice parameter with the custom voice generated by voice cloning
        stream=False
    )
    print(response)

Requisitos de áudio

A qualidade do áudio de entrada determina diretamente o resultado da clonagem. Diferentes séries de modelos possuem requisitos de áudio distintos. Prepare sua amostra de áudio de acordo com as exigências do seu modelo alvo.
  • Qwen-Audio-TTS / Qwen-Audio-Realtime
  • CosyVoice
  • Qwen-TTS

Item

Requisito

Formatos suportados

WAV (16 bits), MP3, M4A

Duração do áudio

Recomendado de 10 a 20 segundos, máximo de 60 segundos

Tamanho do arquivo

≤ 10 MB

Taxa de amostragem

≥ 16 kHz

Canais

Mono ou estéreo. Para áudio estéreo, apenas o primeiro canal é processado. Certifique-se de que o primeiro canal contenha fala válida.

Conteúdo

O áudio deve conter pelo menos 5 segundos de fala contínua e clara (sem som de fundo). A parte restante pode conter apenas pausas breves (≤ 2 segundos). Evite música de fundo, ruído ambiente ou outras vozes em todo o trecho. Use áudio gravado em velocidade normal de fala — não envie músicas ou gravações de canto.

Idiomas suportados

Chinês (Mandarim, Cantonês, Chongqing, Nordeste, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, Xangai, Sichuan e dialetos de Yunnan), Inglês, Japonês, Coreano, Russo, Francês, Alemão, Português, Tailandês, Indonésio, Vietnamita, Espanhol, Italiano, Malaio, Filipino e Árabe

Para obter os melhores resultados de clonagem, prepare sua amostra seguindo as Recording tips.

Dicas de gravação

Um áudio de entrada de alta qualidade é a base para alcançar resultados ideais de clonagem.

Equipamento de gravação

Use um smartphone, gravador digital ou equipamento profissional de gravação. Recomendamos um dispositivo que suporte gravação com alta taxa de amostragem (≥ 24 kHz) para atender aos requisitos de áudio.

Ambiente de gravação

Local
  • Grave em um espaço pequeno e fechado, com 10 metros quadrados ou menos.
  • Prefira salas com materiais de absorção acústica, como espuma acústica, carpetes ou cortinas.
  • Evite salões abertos, salas de conferência, salas de aula e outros espaços com muita reverberação.
Controle de ruído
  • Ruído externo: Feche portas e janelas para evitar trânsito, obras e outros distúrbios.
  • Ruído interno: Desligue ar-condicionado, ventiladores, reatores de lâmpadas fluorescentes e outros equipamentos. Grave o som ambiente no celular e reproduza-o em volume alto para identificar possíveis fontes de ruído.
Controle de reverberação
  • A reverberação torna o som indistinto e reduz a clareza.
  • Reduza reflexões em superfícies lisas: feche cortinas, abra portas de armários e coloque roupas ou cobertores sobre mesas e gabinetes.
  • Utilize objetos irregulares (como estantes e móveis estofados) para criar reflexões difusas.

Roteiro de gravação

  • Não há restrições específicas de conteúdo. Recomendamos adequar o conteúdo ao seu caso de uso alvo.
  • Evite frases curtas (como "olá" ou "sim"). Utilize sentenças completas.
  • Mantenha a coerência semântica e evite pausas frequentes durante a leitura (recomenda-se pelo menos 3 segundos contínuos sem interrupção).
  • Mantenha uma velocidade de fala consistente do início ao fim. Evite falar rápido demais no começo ou no final, pois isso pode causar gaguejos durante a síntese.
  • Inclua expressão emocional adequada (como calor humano, simpatia ou seriedade). Evite leituras mecânicas.
  • Não inclua conteúdo sensível (como material político, pornográfico ou violento). Isso causará falha na clonagem.

Melhores práticas

Tomando um quarto típico como exemplo, após concluir o controle de ruído e reverberação:
  1. Familiarize-se previamente com o roteiro, defina um tom de personagem e fale naturalmente.
  2. Mantenha uma distância de aproximadamente 10 cm do dispositivo de gravação para evitar distorção por plosivas ou sinal fraco.

Gerencie vozes personalizadas

Após criar uma voz, consulte e gerencie as vozes existentes por meio da API (suportado por Qwen-Audio-TTS, Qwen-Audio-Realtime, Qwen-TTS e CosyVoice).
  • Listar vozes: Recupere uma lista de todas as vozes personalizadas da conta atual.
  • Obter detalhes da voz (apenas Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice): Visualize informações detalhadas sobre uma voz específica, como horário de criação e modelo de síntese de fala vinculado.
  • Exclua uma voz: Exclua vozes personalizadas que não são mais necessárias para liberar cota.
As APIs de consulta e exclusão de voz do Qwen-Audio-Realtime são idênticas às do Qwen-Audio-TTS.
Para detalhes sobre endpoints e parâmetros da API de cada modelo, consulte API reference.

Cota e faturamento

Cota de vozes e limpeza automática

  • Limite de vozes: Cada conta do Alibaba Cloud Model Studio pode criar até 1.000 vozes personalizadas para Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice e até 1.000 para Qwen-TTS (as duas cotas são calculadas independentemente). Ao atingir o limite, novas solicitações de criação falharão e retornarão um erro. O sistema não exclui automaticamente as vozes criadas há mais tempo. Para criar novas vozes, exclua as desnecessárias para liberar cota ou aguarde a limpeza automática de vozes não utilizadas (consulte as regras de limpeza automática abaixo).
  • Comportamento ao atingir o limite: Após atingir o limite de 1.000 vozes, chamadas subsequentes à API de criação de voz retornarão um erro de falha. O sistema não remove automaticamente as vozes mais antigas para abrir espaço. Exclua manualmente as vozes desnecessárias para liberar cota antes de continuar criando novas vozes.
  • Regra de limpeza automática: Se uma voz não for usada em nenhuma solicitação de síntese de fala no último ano, o sistema a excluirá automaticamente.

Regras de faturamento

  • Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice: A criação de vozes é gratuita.
  • Qwen-TTS: Cobrado a $0,01/voz. Criações com falha não são cobradas. Cota gratuita (disponível apenas na região Singapore):
    • Dentro de 90 dias após a ativação do Alibaba Cloud Model Studio, crie até 1.000 vozes gratuitamente.
    • Criações com falha não consomem a cota gratuita.
    • A exclusão de uma voz não restaura a cota gratuita.
    • Após o esgotamento da cota gratuita ou o término do período de 90 dias, a criação de vozes será cobrada a $0,01/voz.

Modelos e regiões suportados

  • Singapore
  • China (Beijing)
Para chamar os modelos a seguir, use uma chave de API da região Singapore:
  • Qwen-Audio-TTS: qwen-audio-3.0-tts-plus, qwen-audio-3.0-tts-flash
  • CosyVoice: cosyvoice-v3-plus (o modelo cosyvoice-v3-flash não suporta atualmente síntese de fala com vozes clonadas na região Singapore. Use qwen-audio-3.0-tts-flash em vez disso.)
  • Qwen-TTS:
    • Qwen3-TTS-VC-Realtime: qwen3-tts-vc-realtime-2026-01-15 (snapshot mais recente), qwen3-tts-vc-realtime-2025-11-27 (snapshot)
    • Qwen3-TTS-VC: qwen3-tts-vc-2026-01-22 (snapshot mais recente)

Referência da API

Voice cloning API reference

FAQ

P: Posso usar uma voz criada com diferentes modelos de síntese de fala?

Não. Uma voz fica vinculada a um modelo específico de síntese de fala por meio do parâmetro target_model no momento da criação e não pode ser usada entre modelos diferentes. Se precisar usar a voz do mesmo áudio com vários modelos, crie uma voz separada para cada modelo.

P: Qual é a validade de uma voz clonada?

As vozes criadas por Qwen-Audio-TTS, Qwen-Audio-Realtime, Qwen-TTS e CosyVoice têm validade indefinida por padrão. Se uma voz não for usada em nenhuma solicitação de síntese de fala no último ano, o sistema a excluirá automaticamente. Para mais detalhes, consulte Voice quota and automatic cleanup. Recomendamos salvar o ID da voz. Use a API de consulta para verificar se uma voz ainda está disponível.

P: A baixa qualidade do áudio afeta os resultados da clonagem?

Sim. A qualidade do áudio de entrada afeta diretamente o resultado da clonagem. Ruído de fundo, reverberação e múltiplas vozes reduzem a semelhança e a naturalidade da voz clonada. Recomendamos preparar sua amostra seguindo as Audio requirements e Recording tips.
Plano de Tokens
Playground de Modelos
Inferência do Modelo
Avaliação
Compressão de Modelos
Estatísticas e Monitoramento
Suporte