QwenCloudBRASIL
Tradução de apoio para consulta. Código e identificadores técnicos preservados. Consultar referência original ↗

Qwen-Audio-3.x-ASR-Flash-Streaming/Fun-ASR-Realtime SDK Android

Este guia mostra como usar o Android SDK para Qwen-Audio-3.x-ASR-Flash-Streaming e Fun-ASR-Realtime reconhecimento de fala em tempo real para converter fala em texto.

Guia do usuário: Para apresentações de modelos e conselhos de seleção, consulte Fala para texto.

Início rápido

  1. Obtenha uma chave API

  2. Baixe o SDK e execute o código de exemplo:

    • Baixe o pacote SDK mais recente.
    • Extraia o pacote ZIP. O SDK em formato AAR está no app/libs diretório. Adicione-o às dependências do seu projeto. Para integração com Android C++, use android_libs e android_include do pacote ZIP para obter as bibliotecas dinâmicas e arquivos de cabeçalho.
    • Abra o projeto no Android Studio. O código de exemplo está em DashFunAsrSpeechTranscriberActivity.java. Substitua a chave API para experimentar o recurso.

Procedimento de chamada

  1. Inicialize o SDK.
  2. Defina os parâmetros para seu caso de uso. Use o parameters argumento do inicializar método para definir os Parâmetros de conexão e controle e use o setParams método para definir os Parâmetros de reconhecimento de fala.
  3. Chame startDialog para iniciar o reconhecimento.
  4. No onNuiAudioStateChanged retorno de chamada, inicia o dispositivo de gravação com base no estado do áudio.
  5. Forneça continuamente dados de gravação no onNuiNeedAudioData retorno de chamada ou enviar ativamente dados de gravação chamando updateAudio.
  6. No onNuiEventCallback retorno de chamada, ouça eventos e obtenha os resultados de reconhecimento de fala.
  7. Chame stopDialog para interromper o reconhecimento e ouvir o evento EVENT_TRANSCRIBER_COMPLETE para confirmar que o reconhecimento terminou.
  8. Quando você não precisar mais de reconhecimento, ligue para release para liberar os recursos do SDK.

Parâmetros de solicitação

Parâmetros de conexão e controle

Para configurar esses parâmetros, passe uma string JSON no arquivo parameters argumento do inicializar método.

{
    "url": "wss://maas.qwencloudapi.com/api-ws/v1/inference",
    "apikey": "st-****",
    "device_id": "my_device_id",
    "service_mode": "1"
}
Parâmetro Tipo Obrigatório Descrição
url String Sim Endereço do serviço: wss://maas.qwencloudapi.com/api-ws/v1/inference.
apikey String Sim A chave da API.
service_mode String Sim O modo de execução. Corrigido para "1" para reconhecimento de fala em tempo real.
device_id String Sim Uma string exclusiva que identifica o usuário final. Você pode configurá-lo para um ID de usuário no aplicativo ou um identificador de dispositivo exclusivo gerado pelo cliente. Esse ID é usado principalmente para rastreamento de log e solução de problemas.
audio_update_manually String Não Se deve ativar o envio ativo de dados de áudio. Padrão: "false". Se definido para "true" e a versão SDK oferece suporte a recursos de processamento de áudio no dispositivo, como AEC e VAD, esses recursos são habilitados por padrão.
workspace String Não O caminho onde os arquivos de recursos no dispositivo são armazenados. Este parâmetro é necessário quando audio_update_manually está definido para "true" e um recurso de processamento de áudio no dispositivo, como AEC ou VAD, está habilitado.
debug_path String Não O caminho de armazenamento para arquivos de log. Este parâmetro entra em vigor somente quando save_log é definido como verdadeiro no initialize método. Nesse caso, você deve definir o caminho do arquivo de log ou ocorrerá um erro. No máximo dois arquivos de log são mantidos localmente.
save_wav String Não Se deseja salvar o arquivo de áudio de depuração. O arquivo de áudio é salvo em debug_path. Padrão: "falso". Valores válidos: "true": salva o arquivo. "false": não salva o arquivo. Este parâmetro entra em vigor somente quando save_log é definido como verdadeiro no initialize método. Além disso, debug_path também deve ser definido.
max_log_file_size int Não O tamanho máximo de um arquivo de log, em bytes. Este parâmetro entra em vigor somente quando save_log é definido como verdadeiro no initialize método. Padrão: 104857600 (100 * 1024 * 1024 bytes, ou seja, 100 MiB).
log_track_level int Não O nível de filtro para o conteúdo do log enviado por meio do retorno de chamada do log (onNuiLogTrackCallback). Padrão: 2. Valores válidos: 0: LOG_LEVEL_VERBOSE, 1: LOG_LEVEL_DEBUG, 2: LOG_LEVEL_INFO, 3: LOG_LEVEL_WARNING, 4: LOG_LEVEL_ERROR, 5: LOG_LEVEL_NONE (desabilita este recurso). Nota: log_track_level e level (definido através do initialize) juntos determinam quais logs serão enviados para o retorno de chamada. Um log é enviado para o retorno de chamada somente quando seu valor de nível é maior ou igual a ambos log_track_level e level. Por exemplo, se log_track_level está definido como 2 (INFO) e level estiver definido como 3 (WARNING), somente logs de nível WARNING ou superior (valor >= 3) serão enviados para o retorno de chamada.
enable_reconnection String Não Se a transmissão deve ser retomada após a rede ser reconectada. Padrão: "false".
aec_params object Não O objeto de configuração avançada para cancelamento de eco acústico (AEC) no dispositivo. Este objeto entra em vigor somente quando audio_update_manually está definido para "true".
aec_params.enable_aec boolean Não Se deve ativar o AEC no dispositivo. Se audio_update_manually está definido para "true" e a versão do SDK oferece suporte a AEC no dispositivo, esse recurso é habilitado por padrão.
aec_params.save_audio boolean Não Se deseja salvar o áudio processado pelo módulo AEC no dispositivo. Se save_wav está definido para "true" e debug_path for especificado, esse recurso será ativado por padrão e os dados de áudio AEC serão salvos em debug_path.
aec_params.enable_aec_data_callback boolean Não Se os dados processados ​​pelo AEC devem ser retornados ao seu aplicativo. Padrão: falso. Se habilitado, receba os dados do EVENT_AEC_DATA evento em onNuiAssistEventCallback.
vad_params object Não O objeto de configuração avançada para detecção de atividade de voz (VAD) no dispositivo. Este objeto entra em vigor somente quando audio_update_manually está definido para "true".
vad_params.enable_aec boolean Não Se deve ativar o VAD no dispositivo. Se audio_update_manually está definido para "true" e a versão do SDK oferece suporte ao VAD no dispositivo, esse recurso é habilitado por padrão.
vad_params.save_audio boolean Não Se deseja salvar o áudio processado pelo módulo VAD no dispositivo. Se save_wav está definido para "true" e debug_path é especificado, esse recurso é ativado por padrão e os dados de áudio VAD são salvos em debug_path.

Parâmetros de reconhecimento de fala

Para configurar esses parâmetros, passe uma string JSON no arquivo params argumento do setParams método.

{
    "service_type": 4,
    "nls_config": {
        "model": "qwen-audio-3.0-asr-flash-streaming",
        "sr_format": "pcm",
        "sample_rate": "16000"
    }
}
Parâmetro de nível superior Tipo Obrigatório Descrição
service_type int Sim O tipo de serviço de fala. Corrigido para 4 para reconhecimento de fala em tempo real.
nls_config object Sim O objeto de configuração principal para reconhecimento de fala. Ele contém parâmetros importantes, como seleção de modelo e controles de qualidade de reconhecimento.
nls_config.model string Sim O nome do modelo. O Qwen-Audio-3.x-ASR-Flash-Streaming e Fun-ASR-Realtime séries de modelos são suportadas. Para obter detalhes, consulte Modelos suportados.
nls_config.sr_format string Sim O formato de áudio. Valores válidos: pcm, opus. Observação: Para áudio Opus, passe o áudio PCM para o SDK. O SDK o codifica como Opus internamente.
nls_config.sample_rate int Sim A taxa de amostragem, em Hz. Valores válidos: modelos de 8 kHz suportam apenas 8.000 Hz; outros modelos suportam qualquer taxa de amostragem. Observação: 8.000 Hz não é compatível quando um recurso de processamento de áudio no dispositivo, como AEC ou VAD, está ativado.
nls_config.semantic_punctuation_enabled boolean Não Seja para ativar a segmentação semântica. Valor padrão: falso. true: ativa a segmentação semântica e desativa a segmentação VAD. false (padrão): habilita a segmentação VAD e desabilita a segmentação semântica. A segmentação semântica é mais precisa e mais adequada para atender cenários de transcrição. A segmentação VAD (Voice Activity Detection) tem menor latência e é mais adequada para cenários interativos.
nls_config.max_sentence_silence int Não O limite de silêncio do VAD para segmentação, em ms. Quando o silêncio após um segmento de fala ultrapassa esse limite, o sistema determina que a frase terminou. Quando semantic_punctuation_enabled estiver definido como verdadeiro, este parâmetro não será usado como critério para retornar sentence_end, mas defini-lo muito baixo pode afetar o desempenho do reconhecimento. Valor padrão: 1300. Valores válidos: [200, 6000].
nls_config.multi_threshold_mode_enabled boolean Não Importante: entra em vigor somente quando semantic_punctuation_enabled é falso. Se deve ativar o modo multi-limite. Quando ativado, evita que os segmentos VAD se tornem muito longos. Valor padrão: falso.
nls_config.heartbeat boolean Não Se deve ativar pacotes de pulsação. Valor padrão: falso. true: mantém a conexão com o servidor ativa mesmo quando o áudio silencioso é enviado continuamente. false (padrão): Mesmo quando o áudio silencioso é enviado continuamente, a conexão atinge o tempo limite e fecha após um período de tempo. Áudio silencioso refere-se ao conteúdo de um arquivo de áudio ou fluxo de dados que não contém sinal sonoro. Você pode gerar áudio silencioso de várias maneiras, como usando software de edição de áudio como Audacity ou Adobe Audition, ou usando uma ferramenta de linha de comando como FFmpeg.
nls_config.vocabulary_id string Não O ID de uma lista de hot word pré-compilada. Gere esse ID antecipadamente chamando a API de criação de lista de palavras quentes. Passe o ID durante o reconhecimento para usar as palavras quentes da lista. Adequado para cenários onde o vocabulário é conhecido e relativamente estável, e onde é necessário reutilizar a mesma lista de palavras em solicitações. Para obter detalhes de uso, consulte Hotwords pré-compiladas.
nls_config.instant_vocabulary object Não Palavras quentes instantâneas. Passados como pares de valores-chave, onde a chave é o texto da palavra quente (string) e o valor é o peso da palavra quente (integer). Nenhuma lista de palavras quentes precisa ser criada com antecedência. O peso varia de [1, 5] ou é definido como 50: um valor em [1, 5] aumenta a probabilidade de o modelo gerar a palavra à medida que o valor aumenta; um valor de 50 designa uma palavra superquente, o que melhora muito a recuperação, mas o número de palavras superquentes não pode exceder 50. Adequado para otimização de palavra quente temporária em nível de sessão. Quando hotwords instantâneas e pré-compiladas são configuradas juntas, o sistema mescla os dois conjuntos. Se o conjunto mesclado contiver mais de 2.000 hotwords, o sistema selecionará aleatoriamente 2.000 para usar. Para obter detalhes de uso, consulte Hotwords instantâneas. Importante: apenas qwen-audio-3.1-asr-flash-streaming e qwen-audio-3.0-asr-flash-streaming suporta palavras quentes instantâneas.
nls_config.language_hints array[string] Não O idioma do áudio a ser reconhecido. Não há valor padrão; se não for definido, o modelo detectará o idioma automaticamente. Para o Qwen-Audio-3.x-ASR-Flash-Streaming série de modelos, você pode definir até 4 valores; se você definir mais de 4, apenas os 4 primeiros terão efeito. Para o Fun-ASR-Realtime série de modelos, você pode definir apenas 1 valor; se você definir vários valores, apenas o primeiro terá efeito.
qwen-audio-3.1-asr-flash-streaming, qwen-audio-3.0-asr-flash-streaming, fun-asr-realtime: zh (chinês), en (Inglês), ja (japonês), ko (coreano), vi (vietnamita), th (tailandês), id (indonésio), ms (malaio), tl (Filipino), hi (hindi), ar (Árabe), fr (francês), de (Alemão), es (Espanhol), pt (português), ru (Russo), it (italiano), nl (holandês), sv (sueco), da (dinamarquês), fi (finlandês), no (norueguês), el (Grego), pl (polonês), cs (Tcheco), hu (húngaro), ro (Romeno), bg (búlgaro), hr (croata), sk (Eslovaco)
nls_config.speech_noise_threshold float Não O limite para distinguir fala de ruído, usado para ajustar a sensibilidade da Detecção de Atividade de Voz (VAD). Valores válidos: [-1,0, 1,0]. Quanto mais próximo o valor estiver de -1: o limite de ruído diminui, então é mais provável que o ruído seja reconhecido como fala, o que pode fazer com que mais ruído seja transcrito. Quanto mais próximo o valor estiver de +1: O limite de ruído aumenta, então é mais provável que a fala seja mal avaliada como ruído, o que pode fazer com que parte da fala seja filtrada. Este é um parâmetro de configuração avançado. Ajustá-lo pode afetar significativamente os resultados do reconhecimento. Recomendações: Teste e verifique minuciosamente os resultados antes de ajustar. Ajuste em pequenos incrementos com base no ambiente de áudio real (recomenda-se um passo de 0,1).
nls_config.special_word_filter object Não Especifica as palavras sensíveis a serem processadas durante o reconhecimento de fala e suporta a configuração de diferentes métodos de processamento para diferentes palavras sensíveis. Para obter detalhes, consulte Filtragem de palavras sensíveis.
nls_config.enable_connection_fast_check boolean Não Seja para detectar rapidamente interrupções na rede e reportá-las o mais rápido possível. Padrão: falso.

Interfaces principais

NativoNui

inicializar

Inicializa uma instância do SDK de reconhecimento de fala. O SDK é um singleton. Não inicialize mais de uma vez antes de chamar release.

Este método é bloqueado, então chame-o em um thread que não seja da UI.

public synchronized int initialize(final INativeNuiCallback callback,
                                   String parameters,
                                   final Constants.LogLevel level,
                                   final boolean save_log)
Parâmetro Tipo Descrição
callback INativeNuiCallback A implementação da interface de retorno de chamada de eventos e dados.
parameters String Uma string JSON que contém os parâmetros de autenticação, conexão e depuração. Consulte Parâmetros de conexão e controle.
level Constants.LogLevel Controla o nível de impressão dos próprios logs do SDK.
save_log boolean Se deseja salvar logs locais. Se definido para true, especifique o caminho através debug_path em Parâmetros de conexão e controle e, opcionalmente, defina o tamanho do arquivo por meio max_log_file_size.

####setParams

Define os Parâmetros de reconhecimento de fala no formato JSON. Chame esse método antes de startDialog.

public synchronized int setParams(String params)
Parâmetro Tipo Descrição
params String Parâmetros de reconhecimento de fala.

startDialog

Inicia o reconhecimento.

public synchronized int startDialog(VadMode vad_mode, String dialog_params)
Parâmetro Tipo Descrição
vad_mode VadMode O modo VAD. Corrigido para VadMode.TYPE_P2T.
dialog_params String Se o apikey parâmetro em Parâmetros de conexão e controle usa uma chave de API temporária, você pode atualizá-lo aqui quando ele expirar. Para melhorar a precisão do reconhecimento usando o contexto, atualize o contexto aqui. O conteúdo está no formato JSON, conforme mostrado no exemplo a seguir.
{
  "apikey": "st-****",
  "input_context": [
    {
      "role": "user",
      "content": [
        {
          "text": "xxxxx",
          "type": "input_text"
        }
      ]
    }
  ]
}

stopDialog

Termina o reconhecimento. Depois de chamar esse método, o servidor retorna o resultado final do reconhecimento e encerra a tarefa.

public synchronized int stopDialog();

cancelarDialog

Termina o reconhecimento imediatamente. Depois de chamar esse método, a tarefa termina imediatamente, sem esperar que o servidor retorne o resultado final do reconhecimento.

public synchronized int cancelDialog();

atualizaçãoAção

Envia um comando de ação durante uma interação para atualizar o comportamento do tempo de execução, como o contexto de reconhecimento.

public synchronized int updateAction(String params);
Parâmetro Tipo Descrição
params String Uma string JSON usada para atualizar o comportamento do tempo de execução, como o contexto de reconhecimento.
params.type String Definir como "action".
params.command String O comando de tempo de execução. Valores válidos: context: atualiza imediatamente o contexto para melhorar a precisão do reconhecimento. play_start: quando o AEC no dispositivo é usado, notifica o SDK de que o player começou a reproduzir áudio. play_over: quando o AEC no dispositivo é usado, notifica o SDK de que o player concluiu a reprodução do áudio.
params.context String Quando command está definido para context, atualiza imediatamente o contexto para melhorar a precisão do reconhecimento. O valor é uma string JSON, conforme mostrado no exemplo a seguir.
{
  "context": [
    {
      "role": "user",
      "content": [
        {
          "text": "xxx",
          "type": "input_text"
        }
      ]
    }
  ]
}

atualizaçãoÁudio

Quando audio_update_manually está definido para "true", chame esse método para enviar ativamente os dados de gravação em vez de fornecer os dados por meio onNuiNeedAudioData.

public synchronized int updateAudio(byte[] data, int len,
                                    boolean first_pack);
Parâmetro Tipo Descrição
data byte[] Os dados de áudio a serem enviados.
len int O número de bytes de dados de áudio a serem enviados.
first_pack boolean Ignore este parâmetro.

atualizaçãoRefAudio

Quando audio_update_manually está definido para "true" e o AEC no dispositivo estiver ativado, chame esse método para enviar o áudio reproduzido pelo player como sinal de referência.

public synchronized int updateRefAudio(byte[] data, int len,
                                       boolean first_pack);
Parâmetro Tipo Descrição
data byte[] Os dados de áudio a serem enviados.
len int O número de bytes de dados de áudio a serem enviados.
first_pack boolean Ignore este parâmetro.

lançamento

Libera todos os recursos internos do SDK. Depois de chamar esse método, a instância do SDK fica indisponível. Para usá-lo novamente, você deve reinicializá-lo chamando initialize.

public synchronized int release();

Obter versão

Obtém as informações da versão atual do SDK.

public synchronized String GetVersion();

INativeNuiCallback: retornos de chamada do ouvinte

onNuiEventCallback

Escuta eventos e resultados de reconhecimento de fala.

void onNuiEventCallback(NuiEvent event, final int resultCode, final int arg2, KwsResult kwsResult, AsrResult asrResult);
Parâmetro Tipo Descrição
event Evento Nui O evento de retorno de chamada.
resultCode int O código de erro. Válido quando ocorre o evento EVENT_ASR_ERROR.
arg2 int Um parâmetro reservado.
asrResult AsrResult O resultado do reconhecimento de fala.
kwsResult KwsResult O recurso de despertar por voz. Você não precisa usar este parâmetro.

onNuiAudioStateChanged

Escuta o estado do áudio. O SDK usa esse retorno de chamada para notificá-lo quando iniciar ou interromper a gravação.

void onNuiAudioStateChanged(AudioState state);
Estado Descrição
STATE_OPEN A interação começou. Você pode abrir o dispositivo de gravação e começar a gravar.
STATE_PAUSE A interação foi interrompida. Você pode parar de gravar.
STATE_CLOSE A instância do SDK foi lançada. Você pode fechar totalmente o dispositivo de gravação.

onNuiNeedAudioData

Fornece os dados de áudio para reconhecimento. Após o início do reconhecimento, esse retorno de chamada é acionado continuamente. Forneça os dados de áudio para reconhecer neste retorno de chamada.

int onNuiNeedAudioData(byte[] buffer, int len);
Parâmetro Tipo Descrição
buffer byte[] Os dados de áudio a serem preenchidos.
len int O número de bytes de dados de áudio a serem preenchidos.

onNuiAssistEventCallback

Recebe eventos e dados auxiliares. Este retorno de chamada recebe eventos auxiliares e dados relacionados do SDK.

void onNuiAssistEventCallback_(int event, byte[] info, int info_len,
                               byte[] data);
Parâmetro Tipo Descrição
event int A NuiEvent evento.
info String Ignore este parâmetro.
info_len int Ignore este parâmetro.
data byte[] Dados auxiliares, como dados de áudio processados ​​pelo AEC.

onNuiLogTrackCallback

Escuta logs de rastreamento. Esse retorno de chamada recebe logs internos detalhados do SDK para ajudar na solução de problemas e na depuração.

default void onNuiLogTrackCallback(Constants.LogLevel level, String log)

NuiEvent: tipos de eventos

Evento Descrição
EVENTO_TRANSCRIBER_STARTED A tarefa foi iniciada com sucesso.
EVENTO_VAD_START Acionado logo após o início da tarefa. Isto não significa que o início da fala seja detectado.
EVENTO_VAD_END O fim da fala é detectado.
EVENTO_ASR_PARTIAL_RESULT Um resultado intermediário de reconhecimento de fala.
EVENTO_ASR_WARN Ocorreu um aviso que não interrompe o reconhecimento de fala, como uma interrupção da rede quando a reconexão está habilitada.
EVENTO_ASR_ERRO Ocorreu um erro durante o reconhecimento de fala.
EVENTO_MIC_ERRO Disparado quando nenhum dado de áudio é recebido por 2 segundos consecutivos.
EVENTO_SENTÊNCIA_END O final de uma frase é detectado. Um resultado de reconhecimento completo para a sentença é retornado.
EVENTO_TRANSCRIBER_COMPLETE O reconhecimento de fala terminou.
EVENTO_AEC_DADOS Dados de áudio processados ​​pelo AEC.