FAQ de áudio e discurso
CosyVoice TTS, Qwen-Omni Em tempo real, e... Fun-ASR - perguntas comuns sobre síntese, conversa em tempo real, e reconhecimento de fala.
<a id="cosyvoice-synthesis" />
CosyVoice Síntese em tempo real
** APIS:** [Python SDK] (/api-reference/speech-synthesis/cosyvoice/python-sdk), [Java SDK] (/api-reference/speech-synthesis/cosyvoice/java-sdk), [WebSocket API] (/api-reference/speech-synthesis/cosyvoice/websocket-api)
Como faço para corrigir pronúncias imprecisas?
Use [SSML] (/developer-guides/speech/ssml), incluindo o [phoneme - Não, não./developer-guides/speech/ssml- Quando necessário.
Como faço para conseguir a conta de personagens?
- Python - não-streaming:/api-reference/speech-synthesis/cosyvoice/python-sdk#character-counting-rules).
- Python - transmissão / retornos: Parse
on_event[ResultadoCallback] (/api-reference/speech-synthesis/cosyvoice/python-sdk#callback-interface-resultcallbackJSON parausage.characters- Use a última mensagem. - Python, madeireira.
DASHSCOPE_LOGGING_LEVEL=debug; leiacharactersDa última linha de tronco. - Java, não-streaming:/api-reference/speech-synthesis/cosyvoice/java-sdk#character-counting-rules).
- Java, outros modos:
getUsage().getCharacters()em [Síntese de voz] (/api-reference/speech-synthesis/cosyvoice/java-sdk#responseO último valor é final. - ** WebSocket:**
payload.usage.charactersem [resultado gerado] (/api-reference/speech-synthesis/cosyvoice/websocket-api#2-result-generated-event).
Por que WebSocket em vez de HTTP para TTS?
O servidor empurra áudio e progresso; WebSocket se encaixa na síntese de streaming de baixa latência.
Como faço para conseguir a identificação do pedido?
- ?Python: ?
on_eventJSON ouget_last_request_idem [Singesizador de voz] (/api-reference/speech-synthesis/cosyvoice/python-sdk#speechsynthesizer-class). - Java:
getRequestId()em [Síntese de voz] (/api-reference/speech-synthesis/cosyvoice/java-sdk#response) ougetLastRequestIdem [Singesizador de voz] (/api-reference/speech-synthesis/cosyvoice/java-sdk#speechsynthesizer-class). - WebSocket:/api-reference/speech-synthesis/cosyvoice/websocket-api#2-result-generated-event Ou [tarefa-terminada] (/api-reference/speech-synthesis/cosyvoice/websocket-api#3-task-finished-event-task-finished).
Por que SSML falha?
- [Limites SSML] (/developer-guides/speech/ssml).
- [Últimas SDK] (/api-reference/preparation/install-sdk).
- SSDK: SSML em **
callNão é uma transmissão.streaming_call- Só flui. - ** WebSocket:** [Suporte SSML] (/api-reference/speech-synthesis/cosyvoice/websocket-api#ssml-support).
Por que o áudio não pode tocar?
- Arquivo:** Saída de jogo** Formato** Extensão; use um jogador compatível.
- Para MP3/Opus use um jogador de streaming (FFmpeg, PyAudio,
AudioFormat,MediaSource). Anexar pedaços, o primeiro pedaço pode carregar cabeçalhos WAV/MP3 apenas uma vez.
Por que a reprodução gagueja?
Ganhos menores entre os textos enviam, chamadas leves** (carga de trabalho fora do fio WebSocket); rede estável.
Por que a síntese demora muito tempo?
Evite pausas longas entre segmentos, espere por 500 ms, primeiro pacote e RTF.< 1** when healthy.
Why is trailing text missing or no speech returned?
- Python:
streaming_completeon SpeechSynthesizer. - Java:
streamingCompleteon SpeechSynthesizer. - WebSocket: finish-task.
Why is audio scrambled or garbled? (WebSocket)
One task_id for run-task, continue-task, and finish-task. Do not reorder writes.
WebSocket closes with code 1007 or auth errors (WebSocket)
- 1007: Fix JSON and required fields;
payload.inputonly{}or text. - 401/403: API key / Troubleshoot authentication failures.
SSL or WebSocketApp errors (Python)
Configure CA bundle (SSL_CERT_FILE) or fix macOS cert path; for AttributeError on WebSocketApp, reinstall websocket-client (pip uninstall websocket-client websocket then pip install websocket-client). Details in CosyVoice Python SDK.
How do I restrict my API key to CosyVoice only?
More CosyVoice questions
<a id="qwen-omni-realtime" />
Qwen-Omni Em tempo real.
** APIS:** [Python SDK] (/api-reference/real-time-multimodal/realtime-python-sdk), [Java SDK] (/api-reference/real-time-multimodal/realtime-java-sdk), [Acontecimentos do cliente] (/api-reference/real-time-multimodal/client-events), [Eventos de servidor] (/api-reference/real-time-multimodal/server-events)
Como o áudio de entrada e as imagens estão alinhados?
Audio é a linha do tempo. Imagens anexadas no momento do envio; você pode ligar ou desligar o vídeo durante a sessão.
Quais taxas de entrada são recomendadas?
Cerca de 2 fps para imagens e ~100 ms pacotes de áudio para uso em tempo real.
Qual é a diferença entre turn_detection - Liga e desliga?
Com turn_detection Ativado (VAD servidor):
- Fim do enunciado é detectado, inferência é feita automaticamente, respostas de texto/áudio retornam.
- A entrada pode continuar durante a resposta do modelo, e então a sessão retorna à escuta.
- ** Barge-in:** falando durante a reprodução ** para a resposta e retorna à entrada.
Com **turn_detection Deficientes:
-
Você termina a curva e chama
commit** ecreate_response/createResponseVocê mesmo. -
Pausa* áudio e vídeo enquanto o modelo está respondendo; retomar após terminar.
-
Use
cancel_response/cancelResponsepara interromper.Com
turn_detection- Ainda pode usar.commit,create_response, ecancel_responsemanualmente.
Por que usar outro modelo para input_audio_transcription?
Omni responde a entrada, não é um oleoduto dedicado. Use um modelo de fala-texto separado para transcrição literal.
<a id="common-audio-issues" />
Problemas comuns de áudio
Problemas de reconhecimento geralmente vêm de um erro de codec ou erro de reconhecimento. sample_rate / format**. Verifique a codificação real, não só a extensão do arquivo.
Converta áudio com FFmpeg.
Use [FFmpeg] (https://ffmpeg.org/ffmpeg.html) para transcodificar em um formato suportado.
ffmpeg -i input_audio.ext -c:a encoder_name -b:a bit_rate -ar sample_rate -ac number_of_channels output.ext
ffmpeg -i input.wav -c:a libmp3lame -q:a 0 output.mp3
ffmpeg -i input.mp3 -c:a pcm_s16le -ar 44100 -ac 2 output.wav
ffmpeg -i input.m4a -c:a copy output.aac
ffmpeg -i input.m4a -c:a aac -b:a 256k output.aac
ffmpeg -i input.flac -c:a libopus -b:a 128k -vbr on output.opus
Inspecione o contêiner, codec, taxa de amostragem e canais.
Usem [esperidoria] (https://ffmpeg.org/ffprobe.html):
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx
Use os valores relatados para format, sample_rate / sampleRateE canais, quando for o caso.
<a id="fun-asr-realtime" />
Fun-ASR Em tempo real.
** APIS:** [Python SDK] (/api-reference/speech-recognition/fun-asr-realtime/python-sdk), [Java SDK] (/api-reference/speech-recognition/fun-asr-realtime/java-sdk), [WebSocket] (/api-reference/speech-recognition/fun-asr-realtime/websocket-api)
Como mantenho uma conexão viva durante o silêncio?
Preparar. heartbeat para real e enviar ** áudio silencioso** continuamente.
Gere áudio silencioso com FFmpeg:
# Generate 1 second of silent audio at 16kHz, mono
ffmpeg -f lavfi -i anullsrc=r=16000:cl=mono -t 1 -acodec pcm_s16le silent.wav
Alternativamente, use Audacity ou Adobe Audition para criar segmentos silenciosos.
Como reconheço um arquivo de áudio local?
- ?Python: ?
callna classe de reconhecimento (/api-reference/speech-recognition/fun-asr-realtime/python-sdk#recognition-class) para um arquivo completo ([não-streaming] (/api-reference/speech-recognition/fun-asr-realtime/python-sdk#non-streaming-call)), ousend_audio_framepara streaming ([ streaming bidirecional])/api-reference/speech-recognition/fun-asr-realtime/python-sdk#bidirectional-streaming-call)). - Java:
call(Não-streaming) (/api-reference/speech-recognition/fun-asr-realtime/java-sdk#synchronous-call)), ousendAudioFrame/streamCall([chamada de volta])/api-reference/speech-recognition/fun-asr-realtime/java-sdk#bidirectional-streaming-call-callback-based(Flowable) (/api-reference/speech-recognition/fun-asr-realtime/java-sdk#bidirectional-streaming-call-flowable-based) streaming).
Por que usar WebSocket em vez de HTTP?
WebSocket é full-duplex; Só a solicitação/resposta HTTP não é adequada para áudio contínuo em tempo real.
Por que o discurso não é reconhecido?
- Combinar
formatesample_rate/sampleRatePara o áudio real. Veja [Questões de áudio comuns] (#common-audio-issues). - Combinar
language_hints(Python) /languageHintsPara a língua falada. - Use vocabulário personalizado para termos de negócios, nomes de produtos ou substantivos adequados que precisam de reconhecimento preciso. Veja [Personalismo palavras] (/developer-guides/speech/improve-recognition-accuracy).
<a id="fun-asr-file-transcription" />
Fun-ASR transcrição do arquivo
** APIS:** [Python SDK] (/api-reference/speech-recognition/fun-asr-recording/python-sdk), [A API de verdade] (/api-reference/speech-recognition/fun-asr-recording/restful-api), [Java SDK] (/api-reference/speech-recognition/fun-asr-recording/java-sdk)
O áudio codificado da base 64 é suportado?
Não. Use URLs públicas HTTP(S) apenas** - não Base64, uploads binários brutos, ou caminhos locais como referência de arquivo.
Como faço para hospedar áudio em uma URL pública?
1. Escolha um método de armazenamento.
- Armazenamento de objetos (recomendado): URLs públicas lidas ou assinadas; - Sim. - Sim.
- Servidor web: HTTPS para pequenos testes.
- Por alta concorrência.
2. Envie o arquivo
- Armazenamento de objetos: Balde, upload, leitura pública ou ligação temporária.
- ** Servidor web:** Diretório servido (por exemplo
/var/www/html/audio/).
3. Get the public URL
- Armazenamento:
https://<bucket>.<region>.aliyuncs.com/<object-key>ou domínio personalizado. - Web:
https://your-domain.com/audio/file.mp3 -
- O que é isso?
https://cdn.your-domain.com/audio/file.mp3
- O que é isso?
4. Verify the URL
Navegador ou... curl-Postman, HTTP 200 e áudio jogável.
Veja também [Limitações] (/api-reference/speech-recognition/fun-asr-recording/python-sdk#limitations).
Quanto tempo leva o reconhecimento?
Tarefas vão ** Pending** → ** running** ** Sucedeu** ou ** Falhou**. Tempo de fila depende da carga e do tamanho do arquivo.
Por que não consigo um resultado depois da votação?
Possível limitação de taxa: inspecionar respostas e recuar.
E se uma URL temporária da OSS for inacessível?
Definir cabeçalho X-DashScope-OssResourceResolve para enable.
Destinado para o repouso cru. Os SDKs oficiais Java/Python não podem suportar esse cabeçalho, preferem URLs públicas estáveis, onde possível.
Por que o áudio não é reconhecido?
Verifique o formato e a taxa de amostragem, use o ffsprobe em [Questões de áudio comuns] (#common-audio-issues).