Parâmetros e interfaces do SDK Python para reconhecimento de fala em tempo real do Paraformer.
Pré-requisitos
Lista de modelos
| paraformer-realtime-v2 | paraformer-realtime-8k-v2 | |
|---|---|---|
| Cenários | Transmissões ao vivo, reuniões e cenários semelhantes | Reconhecimento de áudio de 8 kHz em cenários como atendimento telefônico e correio de voz |
| Taxa de amostragem | Qualquer | 8kHz |
| Idioma | Chinês (incluindo mandarim e vários dialetos), inglês, japonês, coreano, alemão, francês, russoDialetos chineses suportados: Xangai, Wu, Minnan, Nordeste, Gansu, Guizhou, Henan, Hubei, Hunan, Jiangxi, Ningxia, Shanxi, Shaanxi, Shandong, Sichuan, Tianjin, Yunnan, Cantonês | Chinês |
| Previsão de pontuação | ✅ Suportado por padrão. Nenhuma configuração necessária. | ✅ Suportado por padrão. Nenhuma configuração necessária. |
| Normalização Inversa de Texto (ITN) | ✅ Suportado por padrão. Nenhuma configuração necessária. | ✅ Suportado por padrão. Nenhuma configuração necessária. |
| Vocabulário personalizado | ✅ Consulte Customize hotwords | ✅ Consulte Customize hotwords |
| Especificar idioma de reconhecimento | ✅ Especifique o idioma usando o parâmetro language_hints. | ❌ |
| Reconhecimento de emoção | ❌ |
✅ (Clique para ver o uso) O reconhecimento de emoção possui as seguintes restrições:
emo_tag e emo_confidence do single-sentence information (Sentence), respectivamente. |
Primeiros passos
A classe Recognition fornece métodos para chamadas sem streaming e com streaming bidirecional. Selecione o método apropriado conforme suas necessidades:
- Chamada sem streaming: Reconhece um arquivo local e retorna o resultado completo de uma só vez. Adequado para processamento de áudio pré-gravado.
- Chamada com streaming bidirecional: Reconhece um fluxo de áudio e gera resultados em tempo real. O fluxo pode vir de um dispositivo externo, como um microfone, ou ser lido de um arquivo local. Ideal para cenários que exigem feedback imediato.
Chamada sem streaming
Este método envia uma tarefa de transcrição de fala em tempo real para um arquivo local. O processo bloqueia a execução até que o resultado completo da transcrição seja retornado.
call para executar o reconhecimento ou tradução e obter o RecognitionResult.
Clique para ver o exemplo completo
Clique para ver o exemplo completo
result.get_sentence() retorna uma lista de frases (List[Dict]). Cada elemento contém campos como text (texto reconhecido), begin_time / end_time (carimbos de data/hora) e words (carimbos de data/hora por palavra). Itere pela lista e use sentence['text'] para extrair o texto simples.Isso difere de um callback de streaming, onde result.get_sentence() retorna uma única frase (Dict[str, Any]). Para detalhes, consulte Sentence.Chamada com streaming bidirecional
Este método envia uma tarefa de transcrição de fala em tempo real e retorna resultados de reconhecimento em tempo real por meio de uma interface de callback.
-
Inicie o reconhecimento de fala em streaming
Instancie a classe Recognition, vincule os parâmetros de solicitação e a interface de callback (RecognitionCallback), e chame o método
startpara iniciar o reconhecimento de fala em streaming. -
Streaming
Chame repetidamente o método
send_audio_frameda classe Recognition para enviar o fluxo de áudio binário de um arquivo local ou dispositivo (como um microfone) ao servidor em segmentos. Conforme os dados de áudio são enviados, o servidor usa o métodoon_eventda interface de callback RecognitionCallback para retornar os resultados de reconhecimento ao cliente em tempo real. Recomenda-se que a duração de cada segmento de áudio enviado seja de aproximadamente 100 milissegundos, com tamanho de dados entre 1 KB e 16 KB. -
Encerramento do processamento
Chame o método
stopda classe Recognition para interromper o reconhecimento de fala. Este método bloqueia a thread atual até que o callbackon_completeouon_errorda interface de callback (RecognitionCallback) seja acionado.
Clique para ver o exemplo completo
Clique para ver o exemplo completo
Chamadas concorrentes
No Python, devido ao Global Interpreter Lock (GIL), apenas uma thread pode executar código Python por vez (embora algumas bibliotecas focadas em desempenho possam remover essa limitação). Para aproveitar melhor os recursos computacionais de um computador multicore, recomendamos o uso de multiprocessing ou concurrent.futures.ProcessPoolExecutor. O multithreading pode aumentar significativamente a latência das chamadas do SDK sob alta concorrência.
Parâmetros de solicitação
Os parâmetros de solicitação são definidos no construtor (init) da classe Recognition.
Parâmetro | Tipo | Padrão | Obrigatório | Descrição |
|---|---|---|---|---|
model | str | - | Sim | Modelo usado para reconhecimento de fala em tempo real. Para mais informações, consulte Model List. |
sample_rate | int | - | Sim | Define a taxa de amostragem (em Hz) do áudio a ser reconhecido. Varia conforme o modelo:
|
format | str | - | Sim | Define o formato de áudio a ser reconhecido. Formatos de áudio suportados: pcm, wav, mp3, opus, speex, aac, amr. opus/speex: Deve usar encapsulamento Ogg. wav: Deve ser codificado em PCM. amr: Apenas o tipo AMR-NB é suportado. |
vocabulary_id | str | - | Não | Define o ID de palavras-chave. Se não definido, as palavras-chave não terão efeito. Use este campo para definir o ID de palavras-chave para modelos v2 e posteriores. Na sessão atual de reconhecimento de fala, as informações de palavras-chave correspondentes a este ID serão aplicadas. Para uso detalhado, consulte Custom hotwords. |
disfluency_removal_enabled | bool | False | Não | Define se deve filtrar palavras de preenchimento:
|
language_hints | list[str] | ["zh", "en"] | Não | Define os códigos de idioma para reconhecimento. Se não for possível determinar o idioma antecipadamente, deixe este campo indefinido e o modelo detectará automaticamente o idioma. Códigos de idioma suportados atualmente:
Este parâmetro aplica-se apenas a modelos multilíngues. Para mais informações, consulte Model list. |
semantic_punctuation_enabled | bool | False | Não | Define se deve ativar a segmentação semântica. Desativado por padrão.
A segmentação semântica oferece maior precisão e é adequada para cenários de transcrição de reuniões. A segmentação VAD (Detecção de Atividade de Voz) tem menor latência e é adequada para cenários interativos. Ao ajustar o parâmetro Este parâmetro só tem efeito quando o modelo é v2 ou posterior. |
max_sentence_silence | int | 800 | Não | Define o limiar de duração de silêncio (em ms) para segmentação VAD (Detecção de Atividade de Voz). Quando a duração do silêncio após um segmento de fala excede esse limiar, o sistema determina que a frase terminou. O intervalo do parâmetro é de 200 ms a 6000 ms, com valor padrão de 800 ms. Este parâmetro só tem efeito quando o parâmetro |
multi_threshold_mode_enabled | bool | False | Não | Quando esta opção está ativada (true), impede que a segmentação VAD corte frases excessivamente longas. Desativado por padrão. Este parâmetro só tem efeito quando o parâmetro |
punctuation_prediction_enabled | bool | True | Não | Define se deve adicionar pontuação automaticamente nos resultados de reconhecimento:
Este parâmetro só tem efeito quando o modelo é v2 ou posterior. |
heartbeat | bool | False | Não | Quando for necessário manter uma conexão longa com o servidor, use esta opção para controlar o comportamento:
Este parâmetro só tem efeito quando o modelo é v2 ou posterior. Ao usar este campo, a versão do SDK deve ser 1.23.1 ou superior. |
inverse_text_normalization_enabled | bool | True | Não | Define se deve ativar a ITN (Normalização Inversa de Texto). Ativado por padrão (true). Quando ativado, numerais chineses são convertidos para numerais arábicos. Este parâmetro só tem efeito quando o modelo é v2 ou posterior. |
callback | RecognitionCallback | - |
Interfaces principais
Classe Recognition
A classe Recognition é importada usando from dashscope.audio.asr import *.
| Método membro | Assinatura do método | Descrição |
|---|---|---|
| call | Chamada sem streaming que utiliza um arquivo local. Este método bloqueia a thread atual até que todo o arquivo de áudio seja lido. O arquivo deve ter permissões de leitura.O resultado do reconhecimento é retornado como tipo RecognitionResult. | |
| start | Inicia o reconhecimento de fala.Trata-se de um método de reconhecimento em tempo real via streaming baseado em callback, que não bloqueia a thread atual. Deve ser usado em conjunto com send_audio_frame e stop. | |
| send_audio_frame | Envia um fluxo de áudio. O fluxo de áudio enviado a cada vez não deve ser muito grande nem muito pequeno. Recomenda-se que cada pacote de áudio tenha duração de cerca de 100 ms e tamanho entre 1 KB e 16 KB.Os resultados de reconhecimento podem ser obtidos através do método on_event da interface de callback (RecognitionCallback). | |
| stop | Interrompe o reconhecimento de fala. Este método bloqueia a execução até que o serviço tenha reconhecido todo o áudio recebido e a tarefa esteja concluída. | |
| get_last_request_id | Obtém o request_id. Pode ser usado após a chamada do construtor (criação do objeto). | |
| get_first_package_delay | Obtém o atraso do primeiro pacote, que corresponde à latência entre o envio do primeiro pacote de áudio e o recebimento do primeiro pacote de resultado de reconhecimento. Use após a conclusão da tarefa. | |
| get_last_package_delay | Obtém o atraso do último pacote, que corresponde ao tempo decorrido entre o envio da instrução stop e o recebimento do último pacote de resultado de reconhecimento. Use após a conclusão da tarefa. |
Interface de callback (RecognitionCallback)
Durante uma chamada com streaming bidirecional, o servidor usa callbacks para retornar informações e dados importantes do processo ao cliente. É necessário implementar um método de callback para processar as informações e dados retornados.
Clique para ver o exemplo
Clique para ver o exemplo
| Método | Parâmetro | Valor de retorno | Descrição |
|---|---|---|---|
| None | None | Este método é chamado imediatamente após o estabelecimento da conexão com o servidor. | |
result: RecognitionResult | None | Este método é chamado quando o serviço envia uma resposta. | |
| None | None | Este método é chamado após todos os resultados de reconhecimento terem sido retornados. | |
result: Resultado de reconhecimento | None | Este método é chamado quando ocorre uma exceção. | |
| None | None | Este método é chamado após o serviço ter encerrado a conexão. |
Resultados da resposta
Resultado de reconhecimento (RecognitionResult)
RecognitionResult representa o resultado de reconhecimento de um único reconhecimento em tempo real em uma chamada com streaming bidirecional ou em uma chamada sem streaming.
| Método membro | Assinatura do método | Descrição |
|---|---|---|
| get_sentence | Obtém a frase reconhecida atual e informações de carimbo de data/hora. Em um callback, uma única frase é retornada, portanto este método retorna um tipo Dict[str, Any].Para mais informações, consulte Sentence. | |
| get_request_id | Obtém o request_id da solicitação. | |
| is_sentence_end | Determina se a frase fornecida terminou. |
Frase (Sentence)
Os membros da classe Sentence são os seguintes:
Parâmetro | Tipo | Descrição |
|---|---|---|
begin_time | int | Hora de início da frase, em ms. |
end_time | int | Hora de término da frase, em ms. |
text | str | Texto reconhecido. |
words | Uma lista de Informações de carimbo de data/hora por palavra (Word) | Informações de carimbo de data/hora por palavra. |
emo_tag | str | Emoção da frase atual:
O reconhecimento de emoção possui as seguintes restrições:
|
emo_confidence | float | Nível de confiança da emoção reconhecida para a frase atual. O valor varia de 0,0 a 1,0. Um valor maior indica maior nível de confiança. O reconhecimento de emoção possui as seguintes restrições:
|
Informações de carimbo de data/hora por palavra (Word)
Os membros da classe Word são os seguintes:
Parâmetro | Tipo | Descrição |
|---|---|---|
begin_time | int | Hora de início da palavra, em ms. |
end_time | int | Hora de término da palavra, em ms. |
text | str | A palavra. |
punctuation | str | A pontuação. |
Códigos de erro
Se encontrar erros, consulte Error codes para solução de problemas.
Se o problema persistir, junte-se à comunidade de desenvolvedores para relatar seu problema e forneça o Request ID para investigação adicional.
Mais exemplos
Para mais exemplos, consulte o GitHub.
FAQ
Recursos
P: Como manter uma conexão longa com o servidor durante silêncio prolongado?
Defina o parâmetro de solicitação heartbeat como true e envie continuamente áudio silencioso ao servidor.
Áudio silencioso refere-se a arquivos de áudio ou fluxos de dados que não contêm sinal sonoro. Áudio silencioso pode ser gerado por vários métodos, como softwares de edição de áudio (Audacity ou Adobe Audition) ou ferramentas de linha de comando como FFmpeg.
P: Como converter áudio para um formato suportado?
Utilize a ferramenta FFmpeg. Para mais informações de uso, consulte o site oficial do FFmpeg.
P: Há suporte para visualizar o intervalo de tempo de cada frase?
Sim. Os resultados do reconhecimento de fala incluem os carimbos de data/hora de início e fim de cada frase, que podem ser usados para determinar o intervalo de tempo de cada frase.
P: Como reconheço um arquivo local (arquivo de áudio gravado)?
Existem duas maneiras de reconhecer um arquivo local:
-
Passar diretamente o caminho do arquivo local: Este método retorna o resultado completo do reconhecimento após o arquivo ser totalmente processado. Não é adequado para cenários que exigem feedback imediato.
Passe o caminho do arquivo para o método
callda classe Recognition para reconhecer diretamente o arquivo de áudio. Para mais informações, consulte Chamada sem streaming. -
Converter o arquivo local em um fluxo binário para reconhecimento: Este método retorna resultados de reconhecimento como um fluxo enquanto o arquivo está sendo processado. É adequado para cenários que exigem feedback imediato.
Use o método
send_audio_frameda classe Recognition para enviar um fluxo binário ao servidor para reconhecimento. Para mais informações, consulte Chamada com streaming bidirecional.
Solução de problemas
P: O que causa falha no reconhecimento de fala (sem resultados de reconhecimento)?
-
Verifique se o formato de áudio (
format) e a taxa de amostragem (sampleRate/sample_rate) nos parâmetros de solicitação estão definidos corretamente e cumprem as restrições de parâmetros. Veja abaixo exemplos comuns de erros:- A extensão do arquivo de áudio é .wav, mas o formato real é MP3, e o parâmetro de solicitação
formatestá definido como mp3 (configuração incorreta de parâmetro). - A taxa de amostragem do áudio é 3600 Hz, mas o parâmetro de solicitação
sampleRate/sample_rateestá definido como 48000 (configuração incorreta de parâmetro).
- A extensão do arquivo de áudio é .wav, mas o formato real é MP3, e o parâmetro de solicitação
-
Ao usar o modelo
paraformer-realtime-v2, verifique se o idioma definido emlanguage_hintscorresponde ao idioma real do áudio. Por exemplo: O áudio está realmente em chinês, maslanguage_hintsestá definido comoen(inglês). - Se todas as verificações acima forem aprovadas, utilize palavras-chave personalizadas para melhorar a precisão do reconhecimento de palavras específicas.