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

Qwen-Audio-3.0-ASR-Flash-Streaming/Fun-ASR-Realtime iOS SDK

Este guia mostra como usar o Qwen-Audio-3.0-ASR-Flash-Streaming/Fun-ASR-Realtime SDK do iOS com reconhecimento de fala em tempo real para transcrever fala em texto.

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

Início rápido

  1. Obter uma chave de API: Obter uma chave de API

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

    • Baixe o pacote SDK mais recente.
    • Extraia o pacote ZIP e adicione o nuisdk.xcframework incluído ao seu projeto.
    • Em Fases de construção → Vincular binário a bibliotecas, adicione nuisdk.xcframework.
    • Em Geral → Estruturas, Bibliotecas e Conteúdo Incorporado, defina nuisdk.xcframework como Incorporar e Assinar.
    • Abra o projeto de amostra no Xcode. O código de exemplo está em DashFunAsrSpeechTranscriberViewController.m. Substitua a chave de API pela sua própria para experimentar o recurso.

Sequência de chamada

  1. Inicialize o SDK.
  2. Defina parâmetros para seu caso de uso: use o nui_initialize API para definir Parâmetros de conexão e controle e use o nui_set_params API para definir parâmetros de qualidade de reconhecimento.
  3. Chame nui_dialog_start para iniciar o processo de reconhecimento.
  4. No onNuiAudioStateChanged retorno de chamada, abra o dispositivo de gravação com base no estado do áudio.
  5. No onNuiNeedAudioData retorno de chamada, fornecimento contínuo de dados de gravação ou chamada nui_update_audio_data para enviar ativamente dados de gravação.
  6. No onNuiEventCallback retorno de chamada, ouvir eventos e recuperar resultados de reconhecimento de fala.
  7. Ligue para nui_dialog_cancel para interromper o reconhecimento e confirmar que o reconhecimento foi concluído ouvindo o evento EVENT_TRANSCRIBER_COMPLETE.
  8. Quando você não precisar mais do recurso de reconhecimento, ligue para nui_release para liberar os recursos do SDK.

Parâmetros de solicitação

Parâmetros de conexão e controle

Configure esses parâmetros passando uma string JSON no arquivo parameters argumento do nui_initialize API.

{
    "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 Chave de API.
service_mode String Sim 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 gerado no 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 do SDK oferece suporte a recursos de processamento de áudio no dispositivo, como AEC ou 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 Caminho de armazenamento para o arquivo de log. Este parâmetro entra em vigor somente quando save_log está definido para YES no nui_initialize API. Nesse caso, você deve definir o caminho do arquivo de log, caso contrário ocorrerá um erro. No máximo dois arquivos de log são mantidos localmente.
save_wav String Não Se deseja salvar um arquivo de áudio para 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 nui_initialize API. Além disso, debug_path também deve ser definido.
max_log_file_size int Não Tamanho máximo do arquivo de log, em bytes. Este parâmetro entra em vigor somente quando save_log está definido para YES no nui_initialize API. Padrão: 104857600 (100 * 1024 * 1024 bytes, ou seja, 100 MiB).
log_track_level int Nã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 nui_initialize API) 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 os logs no nível WARNING ou superior (valor >= 3) serão enviados para o retorno de chamada.

Parâmetros de qualidade de reconhecimento

Configure esses parâmetros passando uma string JSON no arquivo params argumento do nui_set_params API.

{
    "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 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 de reconhecimento principal. 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.0-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. Nota: Se você fornecer dados de áudio PCM e definir este parâmetro como opus, o SDK codifica os dados no 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 são suportados quando os recursos de processamento de áudio no dispositivo, como AEC ou VAD, estão ativados.
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.0-asr-flash-streaming e qwen-audio-3.1-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.0-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.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 BOOL Não Seja para ativar verificações rápidas de rede para que as desconexões possam ser relatadas o mais rápido possível. Padrão: NO.

Principais APIs

NeoNui

nui_initialize

Inicializa a instância do SDK de reconhecimento de fala. O SDK é um singleton. Não inicialize-o novamente antes de chamar nui_release.

-(NuiResultCode) nui_initialize:(const char *)parameters
                       logLevel:(NuiSdkLogLevel)level
                        saveLog:(BOOL)save_log;
Parâmetro Tipo Descrição
parameters char* Uma string JSON que contém parâmetros de autenticação, conexão e depuração. Consulte Parâmetros de conexão e controle.
level NuiSdkLogLevel Nível de impressão para os próprios logs do SDK.
save_log BOOL Se os logs devem ser salvos localmente. Se definido para YES, especifique um caminho com debug_path em Parâmetros de conexão e controle e, opcionalmente, defina o tamanho do arquivo com max_log_file_size.

####nui_set_params

Define os Parâmetros de qualidade de reconhecimento no formato JSON. Chame este método antes de nui_dialog_start.

-(NuiResultCode) nui_set_params:(const char *)params;
Parâmetro Tipo Descrição
params char* Parâmetros de qualidade de reconhecimento.

nui_dialog_start

Inicia o reconhecimento.

-(NuiResultCode) nui_dialog_start:(NuiVadMode)vad_mode
                      dialogParam:(const char *)dialog_params;
Parâmetro Tipo Descrição
vad_mode NuiVadMode Modo VAD. Corrigido para MODE_P2T.
dialog_params char* Se o apikey parâmetro em Parâmetros de conexão e controle é uma chave de API temporária, você pode atualizá-lo aqui quando ele expirar. Você também pode fornecer contexto aqui para melhorar a precisão do reconhecimento por meio do aprimoramento do contexto. 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"
        }
      ]
    }
  ]
}

nui_dialog_cancel

Termina o reconhecimento ou cancela a interação atual imediatamente.

-(NuiResultCode) nui_dialog_cancel:(BOOL)force;
Parâmetro Tipo Descrição
force BOOL Seja para terminar à força e descartar o resultado final. YES: Encerre a tarefa imediatamente, sem esperar que o servidor retorne o resultado final do reconhecimento. NO: Finalize a tarefa, mas aguarde o retorno do resultado completo.

nui_dialog_action

Envia uma ação de diálogo durante uma interação para atualizar o contexto de reconhecimento ou outro comportamento de tempo de execução.

-(NuiResultCode) nui_dialog_action:(const char *)action_params;
Parâmetro Tipo Descrição
action_params char* Uma string JSON usada para atualizar o contexto de reconhecimento ou outro comportamento de tempo de execução.
action_params.type String Corrigido para "action".
action_params.command String Comando de tempo de execução. Valores válidos: context: atualiza o aprimoramento de contexto imediatamente para melhorar a precisão do reconhecimento. play_start: Quando o AEC no dispositivo é usado, notifica o reprodutor AEC interno de que a reprodução de áudio foi iniciada. play_over: Quando o AEC no dispositivo é usado, notifica o reprodutor AEC interno de que a reprodução de áudio foi encerrada.
action_params.context String Quando command é "context", fornece o aprimoramento de contexto para atualização imediata. O valor é uma string JSON, conforme mostrado no exemplo a seguir.
{
  "context": [
    {
      "role": "user",
      "content": [
        {
          "text": "xxx",
          "type": "input_text"
        }
      ]
    }
  ]
}

nui_update_audio_data

Quando audio_update_manually está definido para "true", os dados de gravação não são mais fornecidos através onNuiNeedAudioData. Use este método para pressioná-lo ativamente.

-(NuiResultCode) nui_update_audio_data:(const char *)data
                                    Len:(int)length
                              FirstPack:(BOOL)first_pack;
Parâmetro Tipo Descrição
data const char * Os dados de áudio a serem enviados.
length int O comprimento dos dados de áudio, em bytes.
first_pack BOOL Você não precisa usar este parâmetro.

nui_push_referência_data

Quando audio_update_manually está definido para "true" e o cancelamento de eco acústico (AEC) no dispositivo estiver ativado, use este método para enviar o áudio reproduzido pelo player como sinal de referência.

-(NuiResultCode) nui_push_reference_data:(const char *)data
                                     Len:(int)length
                               FirstPack:(BOOL)first_pack;
Parâmetro Tipo Descrição
data const char * Os dados de áudio a serem enviados.
length int O comprimento dos dados de áudio, em bytes.
first_pack BOOL Você não precisa usar este parâmetro.

nui_lançamento

Libera todos os recursos internos do SDK e encerra à força todas as tarefas em execução. Depois de chamar esse método, a instância do SDK fica indisponível. Para usá-lo novamente, você deve chamar nui_initialize para inicializá-lo novamente.

-(NuiResultCode) nui_release;

nui_get_version

Obtém a versão atual do SDK. Este método retorna um valor somente após nui_initialize é chamado.

-(const char*) nui_get_version;

nui_get_all_response

Obtém as informações completas do retorno de chamada do evento atual.

-(const char*) nui_get_all_response;

NeoNuiSdkDelegate: ouvintes de retorno de chamada

onNuiEventCallback

Escuta eventos e resultados de reconhecimento de fala.

-(void) onNuiEventCallback:(NuiCallbackEvent)nuiEvent
                    dialog:(long)dialog
                 kwsResult:(const char *)wuw
                 asrResult:(const char *)asr_result
                  ifFinish:(BOOL)finish
                   retCode:(int)code;
Parâmetro Tipo Descrição
nuiEvent NuiCallbackEvent Evento de retorno de chamada.
dialog long ID da sessão. Você não precisa usar este parâmetro.
wuw char* Ativação por voz. Você não precisa usar este parâmetro.
asr_result char* Resultado do reconhecimento de fala.
finish BOOL Se a atual rodada de reconhecimento terminou.
code int Código de erro. Válido quando ocorre o evento EVENT_ASR_ERROR. Consulte Referência do código de erro.

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:(NuiAudioState)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 o dispositivo de gravação completamente.

onNuiNeedAudioData

Fornece 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 serem reconhecidos nele.

-(int) onNuiNeedAudioData:(char *)audioData length:(int)len;
Parâmetro Tipo Descrição
audioData char * Os dados de áudio a serem fornecidos.
len int O tamanho dos dados de áudio fornecidos, em bytes.

onNuiAssistEventCallback

Recebe dados e informações auxiliares. Recebe eventos auxiliares e dados relacionados do SDK.

-(void) onNuiAssistEventCallback:(NuiCallbackEvent)nuiEvent
                            info:(char*)info
                         infoLen:(int)info_len
                          buffer:(char*)buffer
                             len:(int)len;
Parâmetro Tipo Descrição
nuiEvent NuiCallbackEvent O evento de retorno de chamada.
info char * Você não precisa usar este parâmetro.
info_len int Você não precisa usar este parâmetro.
buffer char * Dados auxiliares, como dados de áudio após processamento AEC.
len int O comprimento dos dados auxiliares, em bytes.

onNuiLogTrackCallback

Escuta registros de rastreamento. Esse retorno de chamada recebe logs internos detalhados do SDK para ajudar você a localizar e depurar problemas.

-(void) onNuiLogTrackCallback:(NuiSdkLogLevel)level
                   logMessage:(const char *)log;

NuiCallbackEvent: 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. Isso não significa que o início da fala foi detectado.
EVENTO_VAD_END O final da fala foi detectado.
EVENTO_ASR_PARTIAL_RESULT Um resultado intermediário de reconhecimento de fala.
EVENTO_ASR_ERRO Ocorreu um erro durante o reconhecimento de fala.
EVENTO_MIC_ERRO Acionado porque nenhum dado de áudio foi recebido por 2 segundos consecutivos.
EVENTO_SENTÊNCIA_END O final de uma frase foi detectado. Um resultado de reconhecimento completo para a sentença é retornado.
EVENTO_TRANSCRIBER_COMPLETE Reconhecimento de fala concluído.
EVENTO_AEC_DADOS Dados de áudio após processamento de cancelamento de eco acústico (AEC).