Skip to main content
Referência da API de reconhecimento de fala em tempo real do Paraformer

Python SDK

Parâmetros e interfaces do SDK Python para reconhecimento de fala em tempo real do Paraformer.

Este documento aplica-se apenas à região China (Beijing). Para usar os modelos, utilize uma chave de API da região China (Beijing).
O Alibaba Cloud Model Studio lançou um domínio específico por workspace para a região China (Beijing). O novo domínio dedicado oferece desempenho superior e maior estabilidade para solicitações de inferência. Recomendamos migrar de dashscope.aliyuncs.com para {WorkspaceId}.cn-beijing.maas.aliyuncs.com.Substitua {WorkspaceId} pelo seu Workspace ID real. O domínio existente permanece totalmente funcional.
Guia do usuário: Para introdução aos modelos e recomendações de seleção, consulte Real-time speech recognition - Fun-ASR/Paraformer.

Pré-requisitos

Ative o serviço e Obtain an API key. Configure API key as an environment variable em vez de codificá-la diretamente no código para evitar riscos de segurança causados por vazamento de código.
Para fornecer acesso temporário a aplicativos ou usuários terceiros, ou para controlar rigorosamente operações de alto risco, como acessar ou excluir dados sensíveis, recomendamos o uso de temporary authentication tokens.Em comparação com as chaves de API de longo prazo, os tokens de autenticação temporários possuem curto período de validade (60 segundos) e maior segurança. Eles são adequados para cenários de chamada temporária e reduzem efetivamente o risco de vazamento da chave de API.Uso: No seu código, substitua a chave de API originalmente usada para autenticação pelo token de autenticação temporário obtido.

Lista de modelos

paraformer-realtime-v2paraformer-realtime-8k-v2
CenáriosTransmissões ao vivo, reuniões e cenários semelhantesReconhecimento de áudio de 8 kHz em cenários como atendimento telefônico e correio de voz
Taxa de amostragemQualquer8kHz
IdiomaChinê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êsChinê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
O reconhecimento de emoção possui as seguintes restrições:
  • Aplica-se apenas ao modelo paraformer-realtime-8k-v2.
  • É necessário desativar a pontuação semântica (controlada pelo request parameter semantic_punctuation_enabled). A pontuação semântica vem desativada por padrão.
  • O resultado do reconhecimento de emoção é exibido apenas quando o método is_sentence_end de RecognitionResult retorna True.
Para obter os resultados da detecção de emoção, recupere a emoção e o nível de confiança da emoção da frase atual nos campos 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.
image
Instancie a classe Recognition, defina os parâmetros de solicitação e chame o método call para executar o reconhecimento ou tradução e obter o RecognitionResult.
from http import HTTPStatus
from dashscope.audio.asr import Recognition
# China (Beijing): Replace {WorkspaceId} with your actual workspace ID. The configuration varies by region.
dashscope.base_websocket_api_url = "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference"

# If you have not configured the API key in the environment variable, uncomment the following line of code and replace apiKey with your API key.
# import dashscope
# dashscope.api_key = "apiKey"

recognition = Recognition(model='paraformer-realtime-v2',
                          format='wav',
                          sample_rate=16000,
                          # The "language_hints" parameter is supported only by the paraformer-realtime-v2 model.
                          language_hints=['zh', 'en'],
                          callback=None)
result = recognition.call('{YOUR_AUDIO_FILE}')
if result.status_code == HTTPStatus.OK:
    sentences = result.get_sentence()
    for sentence in sentences:
        print(sentence['text'])
else:
    print('Error: ', result.message)

print(
    '[Metric] requestId: {}, first package delay ms: {}, last package delay ms: {}'
    .format(
        recognition.get_last_request_id(),
        recognition.get_first_package_delay(),
        recognition.get_last_package_delay(),
    ))
Em uma chamada sem streaming, 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.
image
  1. 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 start para iniciar o reconhecimento de fala em streaming.
  2. Streaming Chame repetidamente o método send_audio_frame da 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étodo on_event da 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.
  3. Encerramento do processamento Chame o método stop da classe Recognition para interromper o reconhecimento de fala. Este método bloqueia a thread atual até que o callback on_complete ou on_error da interface de callback (RecognitionCallback) seja acionado.
import os
import signal  # for keyboard events handling (press "Ctrl+C" to terminate recording)
import sys

import dashscope
import pyaudio
from dashscope.audio.asr import *
# China (Beijing): Replace {WorkspaceId} with your actual workspace ID. The configuration varies by region.
dashscope.base_websocket_api_url = "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference"

mic = None
stream = None

# Set recording parameters
sample_rate = 16000  # sampling rate (Hz)
channels = 1  # mono channel
dtype = 'int16'  # data type
format_pcm = 'pcm'  # the format of the audio data
block_size = 3200  # number of frames per buffer

def init_dashscope_api_key():
    """
        Set your DashScope API-key. More information:
        https://github.com/aliyun/alibabacloud-bailian-speech-demo/blob/master/PREREQUISITES.md
    """

    if 'DASHSCOPE_API_KEY' in os.environ:
        dashscope.api_key = os.environ[
            'DASHSCOPE_API_KEY']  # load API-key from environment variable DASHSCOPE_API_KEY
    else:
        dashscope.api_key = '<your-dashscope-api-key>'  # set API-key manually

# Real-time speech recognition callback
class Callback(RecognitionCallback):
    def on_open(self) -> None:
        global mic
        global stream
        print('RecognitionCallback open.')
        mic = pyaudio.PyAudio()
        stream = mic.open(format=pyaudio.paInt16,
                          channels=1,
                          rate=16000,
                          input=True)

    def on_close(self) -> None:
        global mic
        global stream
        print('RecognitionCallback close.')
        stream.stop_stream()
        stream.close()
        mic.terminate()
        stream = None
        mic = None

    def on_complete(self) -> None:
        print('RecognitionCallback completed.')  # recognition completed

    def on_error(self, message) -> None:
        print('RecognitionCallback task_id: ', message.request_id)
        print('RecognitionCallback error: ', message.message)
        # Stop and close the audio stream if it is running
        if 'stream' in globals() and stream.active:
            stream.stop()
            stream.close()
        # Forcefully exit the program
        sys.exit(1)

    def on_event(self, result: RecognitionResult) -> None:
        sentence = result.get_sentence()
        if 'text' in sentence:
            print('RecognitionCallback text: ', sentence['text'])
            if RecognitionResult.is_sentence_end(sentence):
                print(
                    'RecognitionCallback sentence end, request_id:%s, usage:%s'
                    % (result.get_request_id(), result.get_usage(sentence)))

def signal_handler(sig, frame):
    print('Ctrl+C pressed, stop recognition ...')
    # Stop recognition
    recognition.stop()
    print('Recognition stopped.')
    print(
        '[Metric] requestId: {}, first package delay ms: {}, last package delay ms: {}'
        .format(
            recognition.get_last_request_id(),
            recognition.get_first_package_delay(),
            recognition.get_last_package_delay(),
        ))
    # Forcefully exit the program
    sys.exit(0)

# main function
if __name__ == '__main__':
    init_dashscope_api_key()
    print('Initializing ...')

    # Create the recognition callback
    callback = Callback()

    # Call recognition service by async mode, you can customize the recognition parameters, like model, format,
    # sample_rate
    recognition = Recognition(
        model='paraformer-realtime-v2',
        format=format_pcm,
        # 'pcm', 'wav', 'opus', 'speex', 'aac', or 'amr'. You can check the supported formats in the document.
        sample_rate=sample_rate,
        # 8000 or 16000 is supported.
        semantic_punctuation_enabled=False,
        callback=callback)

    # Start recognition
    recognition.start()

    signal.signal(signal.SIGINT, signal_handler)
    print("Press 'Ctrl+C' to stop recording and recognition...")
    # Create a keyboard listener until "Ctrl+C" is pressed

    while True:
        if stream:
            data = stream.read(3200, exception_on_overflow=False)
            recognition.send_audio_frame(data)
        else:
            break

    recognition.stop()

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:

  • paraformer-realtime-v2 suporta qualquer taxa de amostragem.

  • paraformer-realtime-8k-v2 suporta apenas taxa de amostragem de 8000 Hz.

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:

  • true: Filtra palavras de preenchimento

  • false (padrão): Não filtra 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:

  • zh: Chinês

  • en: Inglês

  • ja: Japonês

  • yue: Cantonês

  • ko: Coreano

  • de: Alemão

  • fr: Francês

  • ru: Russo

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.

  • true: Ativa a segmentação semântica e desativa a segmentação VAD (Detecção de Atividade de Voz).

  • false (padrão): Ativa a segmentação VAD (Detecção de Atividade de Voz) e desativa a segmentação semântica.

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 semantic_punctuation_enabled, você pode alternar flexivelmente o método de segmentação do reconhecimento de fala para atender a diferentes cenários.

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 semantic_punctuation_enabled é false (segmentação VAD) e o modelo é v2 ou posterior.

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 semantic_punctuation_enabled é false (segmentação VAD) e o modelo é v2 ou posterior.

punctuation_prediction_enabled

bool

True

Não

Define se deve adicionar pontuação automaticamente nos resultados de reconhecimento:

  • true (padrão): Sim

  • false: Não

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:

  • true: A conexão com o servidor pode ser mantida sem interrupção ao enviar continuamente áudio silencioso.

  • false (padrão): Mesmo ao enviar áudio silencioso continuamente, a conexão atingirá o tempo limite e será encerrada após um período.

    Á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.

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

-

Interface RecognitionCallback.

Interfaces principais

Classe Recognition

A classe Recognition é importada usando from dashscope.audio.asr import *.
Método membroAssinatura do métodoDescrição
call
def call(self, file: str, phrase_id: str = None, **kwargs) -> RecognitionResult
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
def start(self, phrase_id: str = None, **kwargs)
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
def send_audio_frame(self, buffer: bytes)
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
def stop(self)
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
def get_last_request_id(self)
Obtém o request_id. Pode ser usado após a chamada do construtor (criação do objeto).
get_first_package_delay
def get_first_package_delay(self)
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
def get_last_package_delay(self)
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.
class Callback(RecognitionCallback):
    def on_open(self) -> None:
        print('Connection successful')

    def on_event(self, result: RecognitionResult) -> None:
        # Implement the logic for receiving recognition results
        pass

    def on_complete(self) -> None:
        print('Task completed')

    def on_error(self, result: RecognitionResult) -> None:
        print('An exception occurred: ', result)

    def on_close(self) -> None:
        print('Connection closed')

callback = Callback()
MétodoParâmetroValor de retornoDescrição
def on_open(self) -> None
NoneNoneEste método é chamado imediatamente após o estabelecimento da conexão com o servidor.
def on_event(self, result: RecognitionResult) -> None
result: RecognitionResultNoneEste método é chamado quando o serviço envia uma resposta.
def on_complete(self) -> None
NoneNoneEste método é chamado após todos os resultados de reconhecimento terem sido retornados.
def on_error(self, result: RecognitionResult) -> None
result: Resultado de reconhecimentoNoneEste método é chamado quando ocorre uma exceção.
def on_close(self) -> None
NoneNoneEste 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 membroAssinatura do métodoDescrição
get_sentence
def get_sentence(self) -> Union[Dict[str, Any], List[Any]]
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
def get_request_id(self) -> str
Obtém o request_id da solicitação.
is_sentence_end
@staticmethod
def is_sentence_end(sentence: Dict[str, Any]) -> bool
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:

  • positive: Emoção positiva, como feliz ou satisfeito

  • negative: Emoção negativa, como irritado ou triste

  • neutral: Sem emoção evidente

O reconhecimento de emoção possui as seguintes restrições:

  • Aplica-se apenas ao modelo paraformer-realtime-8k-v2.

  • É necessário desativar a pontuação semântica (controlada pelo request parameter semantic_punctuation_enabled). A pontuação semântica vem desativada por padrão.

  • O resultado do reconhecimento de emoção é exibido apenas quando o método is_sentence_end de RecognitionResult retorna True.

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:

  • Aplica-se apenas ao modelo paraformer-realtime-8k-v2.

  • É necessário desativar a pontuação semântica (controlada pelo request parameter semantic_punctuation_enabled). A pontuação semântica vem desativada por padrão.

  • O resultado do reconhecimento de emoção é exibido apenas quando o método is_sentence_end de RecognitionResult retorna True.

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.
# Basic conversion command (universal template)
# -i: Input file path. Example: audio.wav
# -c:a: Audio codec. Example: aac, libmp3lame, pcm_s16le
# -b:a: Bitrate (quality control). Example: 192k, 320k
# -ar: Sample rate. Example: 44100 (CD), 48000, 16000
# -ac: Number of channels. Example: 1 (mono), 2 (stereo)
# -y: Overwrite existing file (no value needed)
ffmpeg -i input_audio.ext -c:a codec_name -b:a bitrate -ar sample_rate -ac channels output.ext

# Example: WAV -> MP3 (preserve original quality)
ffmpeg -i input.wav -c:a libmp3lame -q:a 0 output.mp3
# Example: MP3 -> WAV (16-bit PCM standard format)
ffmpeg -i input.mp3 -c:a pcm_s16le -ar 44100 -ac 2 output.wav
# Example: M4A -> AAC (extract/convert Apple audio)
ffmpeg -i input.m4a -c:a copy output.aac  # Direct extraction without re-encoding
ffmpeg -i input.m4a -c:a aac -b:a 256k output.aac  # Re-encode for higher quality
# Example: FLAC lossless -> Opus (high compression)
ffmpeg -i input.flac -c:a libopus -b:a 128k -vbr on output.opus

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 call da 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_frame da 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)?

  1. 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 format está 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_rate está definido como 48000 (configuração incorreta de parâmetro).
    Use a ferramenta ffprobe para obter informações sobre container, codec, taxa de amostragem, canal e outros dados do áudio:
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxx
  1. Ao usar o modelo paraformer-realtime-v2, verifique se o idioma definido em language_hints corresponde ao idioma real do áudio. Por exemplo: O áudio está realmente em chinês, mas language_hints está definido como en (inglês).
  2. Se todas as verificações acima forem aprovadas, utilize palavras-chave personalizadas para melhorar a precisão do reconhecimento de palavras específicas.
Referência da API de Geração de Texto
Geração de Imagens
  • FAQ
Geração de Vídeo
Áudio
API em tempo real
Incorporação de Texto
Produção de Modelos