Todos los productos
Search
Centro de documentos

Alibaba Cloud Model Studio:SDK de HarmonyOS para reconocimiento de voz Qwen-Audio-ASR-Streaming

Última actualización: Oct 15, 2026

Obtenga información sobre la integración del SDK de HarmonyOS, los parámetros de solicitud, las API, las devoluciones de llamada y el código de ejemplo para el reconocimiento de voz en tiempo real de Qwen-Audio-ASR-Streaming.

Inicio rápido

  1. Obtenga una clave API. No codifique de forma rígida una clave API de larga duración en una aplicación cliente. Recomendamos que el servidor de su aplicación obtenga una clave API temporal y la envíe al cliente.

  2. Descargue el paquete SDK más reciente. Extraiga el paquete, copie entry/libs/neonui.har en el directorio entry/libs de su aplicación y agregue la dependencia a entry/oh-package.json5:

    {
      "dependencies": {
        "neonui": "file:libs/neonui.har"
      }
    }
    

    Para una integración C++ en HarmonyOS, utilice las bibliotecas compartidas en native/libs y los archivos de encabezado en native/include.

  3. Declare los permisos de red y micrófono en el archivo module.json5 de la aplicación, y solicite el permiso de micrófono en tiempo de ejecución. reason_internet y reason_microphone son nombres de recursos de ejemplo. Defina las descripciones correspondientes en los recursos de su aplicación.

    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET",
        "reason": "$string:reason_internet",
        "usedScene": { "abilities": ["EntryAbility"], "when": "always" }
      },
      {
        "name": "ohos.permission.MICROPHONE",
        "reason": "$string:reason_microphone",
        "usedScene": { "abilities": ["EntryAbility"], "when": "always" }
      }
    ]
    
  4. Abra el proyecto de ejemplo del paquete SDK en DevEco Studio. La página de ejemplo es entry/src/main/ets/pages/dashscope/DashFunAsrSpeechTranscriberPage.ets. Configure una clave API y ejecute el proyecto.

Secuencia de llamadas

  1. Cree una instancia de NativeNui(Constants.ModeType.MODE_DIALOG).
  2. Invoque initialize para inicializar el SDK y configurar los parámetros de conexión y control.
  3. Invoque setParams para configurar el modelo y los parámetros de reconocimiento.
  4. Llame a startDialog para iniciar el reconocimiento.
  5. En onNuiAudioStateChanged, inicie, pause o cierre el dispositivo de grabación según el estado del audio.
  6. Suministre continuamente datos de grabación en onNuiNeedAudioData. Si el envío activo de audio está habilitado, invoque updateAudio en su lugar.
  7. Recupere los resultados de reconocimiento y los estados de la tarea en onNuiEventCallback.
  8. Invoque stopDialog y espere EVENT_TRANSCRIBER_COMPLETE.
  9. Cuando ya no se necesite el reconocimiento, invoque release para liberar recursos.

Parámetros de solicitud

Parámetros de conexión y control

Pase una cadena JSON en el argumento parameters de initialize.

{
  "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
  "device_id": "my_device_id",
  "service_mode": "1",
  "audio_update_manually": "false"
}
ParámetroTipoObligatorioDescripción
urlstringSíEndpoints de servicio:
  • Endpoint público: wss://dashscope.aliyuncs.com/api-ws/v1/inference
  • Endpoint específico del espacio de trabajo para Pekín: wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference
  • Endpoint específico del espacio de trabajo para Singapur: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference
Reemplace {WorkspaceId} con su ID de espacio de trabajo.
service_modestringSíModo de ejecución. Establézcalo en "1", que corresponde a Constants.ModeFullCloud, para el reconocimiento de voz en tiempo real.
device_idstringSíUn identificador único de usuario final, como un ID de usuario dentro de la aplicación o un ID de dispositivo generado por el cliente. Se utiliza principalmente para el rastreo de registros y la solución de problemas.
apikeystringNoClave de API. Puede pasarla durante la inicialización. Se recomienda pasar una clave de API temporal en el argumento dialog_params de startDialog.
audio_update_manuallystringNoIndica si se debe habilitar el modo de envío activo de audio. Valor predeterminado: "false". Si se configura en "true", llame a updateAudio. Si se configura en "false", el SDK extrae audio a través de onNuiNeedAudioData. Cuando este campo es "true" y el SDK admite procesamiento de audio en el dispositivo, como AEC o VAD, las capacidades admitidas se habilitan de forma predeterminada.
workspacestringNoDirectorio que almacena los archivos de recursos en el dispositivo. Este parámetro es obligatorio cuando audio_update_manually es "true" y está habilitado el procesamiento de audio en el dispositivo, como AEC o VAD.
debug_pathstringNoDirectorio de registros. Este parámetro es obligatorio cuando save_log es true. El SDK conserva como máximo dos archivos de registro.
save_wavstringNoIndica si se debe guardar el audio de depuración. Valor predeterminado: "false". Los archivos de audio se guardan en debug_path. Si se configura en "true", también configure debug_path y pase true para save_log a initialize.
save_wav_by_idstringNoIndica si se deben nombrar los archivos de audio guardados mediante task_id para facilitar su recuperación cuando save_wav está habilitado. Valor predeterminado: "false".
max_log_file_sizenumberNoTamaño máximo de un solo archivo de registro en bytes. Valor predeterminado: 104857600 (100 MiB). Este parámetro solo surte efecto cuando save_log es true.
log_track_levelnumberNoNivel de filtro para los registros devueltos a través de onNuiLogTrackCallback. Valor predeterminado: 2. Valores válidos: 0 (VERBOSE), 1 (DEBUG), 2 (INFO), 3 (WARNING), 4 (ERROR) y 5 (NONE). Un registro se devuelve solo si su nivel es mayor o igual tanto a log_track_level como al argumento level de initialize. Por ejemplo, si los valores son 2 y 3, solo se devuelven registros de nivel WARNING y superiores.
enable_reconnectionstringNoIndica si se habilita la reconexión y la reanudación de la transmisión tras una interrupción de red. Valor predeterminado: "false".
aec_paramsobjectNoConfiguración de AEC en el dispositivo. Se utiliza únicamente cuando audio_update_manually es "true".
aec_params.enable_aecbooleanNoIndica si se habilita AEC en el dispositivo. Está habilitado de forma predeterminada cuando la compilación del SDK lo admite.
aec_params.save_audiobooleanNoIndica si se debe guardar el audio procesado por AEC. Está habilitado de forma predeterminada cuando save_wav está habilitado y debug_path está configurado.
aec_params.enable_aec_data_callbackbooleanNoIndica si se deben devolver los datos procesados por AEC a través del evento EVENT_AEC_DATA de onNuiAssistEventCallback. Valor predeterminado: false.
vad_paramsobjectNoConfiguración de VAD en el dispositivo. Se utiliza únicamente cuando audio_update_manually es "true".
vad_params.enable_vadbooleanNoIndica si se habilita VAD en el dispositivo. Está habilitado de forma predeterminada cuando la compilación del SDK lo admite.
vad_params.save_audiobooleanNoIndica si se debe guardar el audio procesado por VAD. Está habilitado de forma predeterminada cuando save_wav está habilitado y debug_path está configurado.
audio_configobjectNoConfiguración de captura de audio para el modo pull del SDK. Se utiliza únicamente cuando audio_update_manually es "false".
audio_config.mic.enable_volume_calculationbooleanNoIndica si se calcula y reporta el volumen. Valor predeterminado: true. Desactive esta opción si no se necesitan devoluciones de llamada de volumen.
audio_config.mic.volume_modestringNoModo de cálculo de volumen. Configure este valor en "dbfs" para calcular dBFS estándar como 20*log10(rms/32768), donde la escala completa es 0 dB.

Parámetros de reconocimiento

Pase una cadena JSON en el argumento params de setParams.

{
  "service_type": 4,
  "nls_config": {
    "model": "qwen-audio-3.0-asr-flash-streaming",
    "sr_format": "opus",
    "sample_rate": 16000
  }
}
ParámetroTipoObligatorioDescripción
service_typenumberSíTipo de servicio de voz. Configure este valor en 4, que es Constants.kServiceTypeSpeechTranscriber.
nls_configobjectSíObjeto de configuración de reconocimiento.
nls_config.modelstringSíEl nombre del modelo.
nls_config.sr_formatstringSíFormato de audio: pcm o opus. Cuando se configura en opus, su aplicación aún suministra datos PCM y el SDK los codifica como Opus.
nls_config.sample_ratenumberSíFrecuencia de muestreo en Hz. Se admite cualquier frecuencia de muestreo. No se admite una frecuencia de muestreo de 8000 Hz cuando AEC o VAD en el dispositivo están habilitados.
nls_config.max_sentence_silencenumberNoUmbral de silencio VAD en milisegundos. El sistema determina que una emisión ha terminado cuando el silencio posterior al habla supera este umbral. Valor predeterminado: 800. Rango válido: [200, 6000].
nls_config.multi_threshold_mode_enabledbooleanNoIndica si se debe habilitar el modo de umbrales múltiples. Valor predeterminado: false. Este modo ayuda a prevenir segmentos VAD excesivamente largos.
nls_config.heartbeatbooleanNoIndica si se deben habilitar los paquetes de latido. Valor predeterminado: false. Cuando está habilitado, enviar audio silencioso continuamente puede mantener activa la conexión. De lo contrario, la conexión expira después de un período de tiempo. El audio silencioso no contiene ninguna señal audible en el archivo o flujo de audio.
nls_config.vocabulary_idstringNoID de una lista de palabras clave precompilada. Cree la lista con antelación. Utilice este campo cuando el vocabulario sea conocido y relativamente estable, y la misma lista deba reutilizarse en varias solicitudes. Consulte Palabras clave precompiladas.
nls_config.instant_vocabularyobjectNoPalabras clave a nivel de solicitud. Las claves son cadenas de palabras clave y los valores son pesos enteros. No es necesario crear una lista con antelación, lo que hace que este campo sea adecuado para la optimización temporal a nivel de sesión. Los pesos válidos son [1, 5] o 50. Para [1, 5], un valor mayor hace que sea más probable que el modelo genere la palabra. Se permiten como máximo 50 superpalabras clave con un peso de 50. Cuando se configuran tanto palabras clave precompiladas como a nivel de solicitud, los conjuntos se fusionan. Si el conjunto fusionado supera las 2000 entradas, se seleccionan 2000 al azar. Consulte Palabras clave a nivel de solicitud.
nls_config.language_hintsstring[]NoIdiomas en el audio. Sin valor predeterminado. Si se omite este campo, el modelo detecta el idioma. Se utilizan como máximo los primeros cuatro valores. Para consultar los códigos de idioma compatibles, vea la guía de reconocimiento de voz en tiempo real.
nls_config.speech_noise_thresholdnumberNoUmbral de voz/ruido VAD. Rango válido: [-1.0, 1.0]. Los valores más cercanos a -1 clasifican más ruido como voz y pueden transcribir más ruido. Los valores más cercanos a 1 clasifican más voz como ruido y pueden filtrar parte de la voz. Esta configuración avanzada puede afectar significativamente el reconocimiento. Pruébela exhaustivamente y ajústela en pequeños incrementos de 0.1.
nls_config.special_word_filterobjectNoConfiguración de filtrado de palabras sensibles. Consulte Filtrado de palabras sensibles.
nls_config.enable_connection_fast_checkbooleanNoIndica si se debe habilitar la detección rápida de interrupciones de red. Valor predeterminado: false.

APIs

NativeNui

Importe el SDK:

import { AsrResult, Constants, INativeNuiCallback, KwsResult, NativeNui } from 'neonui';

Crear una instancia

constructor(mode_type: Constants.ModeType, flag?: string)
ParámetroTipoDescripción
mode_typeConstants.ModeTypeModo del SDK: MODE_DIALOG para diálogo o reconocimiento, MODE_TTS para síntesis de voz, o MODE_STREAM_INPUT_TTS para texto a voz con entrada por flujo. Configure este valor en MODE_DIALOG para reconocimiento de voz en tiempo real.
flagstringIdentificador de instancia opcional utilizado para distinguir registros.

initialize

initialize(
  callback: INativeNuiCallback,
  parameters: string,
  level: number,
  save_log: boolean = false
): number

Inicializa el SDK. Este método puede bloquear la ejecución. No lo invoque en el hilo de la interfaz de usuario.

ParámetroTipoDescripción
callbackINativeNuiCallbackCallback de eventos y datos.
parametersstringCadena JSON de parámetros de conexión y control.
levelnumberNivel de registro del SDK: LOG_LEVEL_VERBOSE (0), LOG_LEVEL_DEBUG (1), LOG_LEVEL_INFO (2), LOG_LEVEL_WARNING (3), LOG_LEVEL_ERROR (4), o LOG_LEVEL_NONE (5).
save_logbooleanIndica si se deben guardar los registros locales. Valor predeterminado: false. Si se configura en true, configure debug_path en parameters. También puede configurar max_log_file_size.

setParams

setParams(params: string): number

Establece los parámetros de reconocimiento antes de startDialog. params es una cadena JSON que contiene los parámetros de reconocimiento.

startDialog

startDialog(vad_mode: Constants.VadMode, dialog_params: string): number

Inicia el reconocimiento.

ParámetroTipoDescripción
vad_modeConstants.VadModeModo VAD. Configure este valor en Constants.VadMode.TYPE_P2T para reconocimiento de voz en tiempo real.
dialog_paramsstringCadena JSON. Úsela para renovar una clave de API temporal caducada o pasar contexto de entrada en input_context.

Ejemplo:

{
  "apikey": "st-****",
  "input_context": [
    { "role": "user", "content": [{ "type": "input_text", "text": "Example context" }] }
  ]
}

stopDialog

stopDialog(): number

Notifica al servidor que finalice el reconocimiento y devuelva el resultado final. La tarea termina cuando se recibe EVENT_TRANSCRIBER_COMPLETE.

cancelDialog

cancelDialog(): number

Finaliza inmediatamente el reconocimiento sin esperar un resultado final del servidor.

dialogAction

dialogAction(action_params: string): number

Envía una acción en tiempo de ejecución para notificar al AEC en el dispositivo el estado de reproducción.

ParámetroTipoDescripción
action_paramsstringCadena JSON que contiene la acción.
action_params.typestringConfigure este valor en "action".
action_params.commandstringplay_start:Cuando se utiliza AEC en el dispositivo, notifica al SDK que el reproductor ha comenzado a reproducir audio. play_over:Cuando se utiliza AEC en el dispositivo, notifica al SDK que el reproductor ha terminado de reproducir audio.

updateAudio

updateAudio(data: ArrayBuffer, first_pack: boolean): number

Cuando audio_update_manually es "true", envía activamente datos de grabación a través de este método en lugar de llenar onNuiNeedAudioData.

ParámetroTipoDescripción
dataArrayBufferDatos de audio a reconocer.
first_packbooleanIndica si este es el primer paquete de audio. Configure este valor en true para el primer paquete y false para los paquetes subsiguientes.

pushReferenceData

pushReferenceData(data: ArrayBuffer, first_pack: boolean): number

Cuando audio_update_manually es "true" y AEC en el dispositivo está habilitado, envía el audio reproducido por el reproductor como señal de referencia AEC.

ParámetroTipoDescripción
dataArrayBufferDatos de audio de referencia.
first_packbooleanIndica si este es el primer paquete de audio. Configure este valor en true para el primer paquete y false para los paquetes subsiguientes.

release

release(): number

Libera todos los recursos internos del SDK. La instancia no se puede utilizar después de esta llamada. Para volver a usarla, invoque primero initialize.

GetVersion

GetVersion(): string

Devuelve la versión actual del SDK.

refreshApikey

refreshApikey(apikey: string, url: string = ''): string

Actualiza una API key y devuelve un token de autenticación temporal. Este método realiza una llamada de red síncrona. No lo invoque en el hilo de la interfaz de usuario.

ParámetroTipoDescripción
apikeystringClave de API existente.
urlstringEndpoint de autenticación opcional. Valor predeterminado: una cadena vacía, que utiliza el endpoint predeterminado.

INativeNuiCallback

onNuiEventCallback

onNuiEventCallback: (
  event: Constants.NuiEvent,
  resultCode: number,
  arg2: number,
  kwsResult: KwsResult,
  asrResult: AsrResult
) => void;

Recibe eventos y resultados de reconocimiento.

ParámetroTipoDescripción
eventConstants.NuiEventEvento de callback.
resultCodenumberVálido solo cuando ocurre el evento EVENT_ASR_ERROR .
arg2numberReservado.
kwsResultKwsResultResultado de palabra de activación. Ignore este campo para el reconocimiento de voz en tiempo real.
asrResultAsrResultResultado de reconocimiento. allResponse contiene la respuesta JSON completa del servidor. Obtenga el ID de tarea de header.task_id y el texto de la emisión de payload.output.sentence.text.

Eventos:

EventoDescripción
EVENT_TRANSCRIBER_STARTEDLa tarea ha comenzado. header.task_id en asrResult.allResponse contiene el ID de tarea. Registre este ID para solucionar problemas.
EVENT_VAD_STARTSe activa después de que comienza la tarea. Este evento no indica que se haya detectado el inicio del habla.
EVENT_VAD_ENDSe detectó el final del habla.
EVENT_SENTENCE_STARTSe detectó el inicio de una emisión.
EVENT_ASR_PARTIAL_RESULTHay disponible un resultado de reconocimiento intermedio.
EVENT_SENTENCE_ENDSe detectó el final de una emisión y está disponible el resultado completo de la misma.
EVENT_ASR_WARNOcurrió una advertencia no fatal durante el reconocimiento, como una interrupción de red cuando la reconexión está habilitada.
EVENT_ASR_ERROROcurrió un error durante el reconocimiento. resultCode contiene el código de error.
EVENT_MIC_ERRORNo se recibieron datos de audio durante dos segundos consecutivos. Verifique el código de grabación, los permisos o si otra aplicación está utilizando el grabador.
EVENT_TRANSCRIBER_COMPLETEEl reconocimiento ha terminado.
EVENT_AEC_DATADatos de audio procesados por AEC devueltos a través de onNuiAssistEventCallback.

onNuiAudioStateChanged

onNuiAudioStateChanged: (state: Constants.AudioState) => void;

El SDK utiliza esta devolución de llamada para notificar a la aplicación cuándo iniciar o detener la grabación.

EstadoDescripción
STATE_OPENLa interacción ha comenzado. Se puede abrir el dispositivo de grabación.
STATE_PAUSELa interacción se ha detenido. Se puede detener la grabación.
STATE_CLOSELa instancia del SDK ha sido liberada. El dispositivo de grabación se puede cerrar por completo.

En HarmonyOS, AudioCapturer se crea de forma asíncrona. Cree la instancia del grabador durante la inicialización. Cuando se reciba STATE_CLOSE, detenga la grabación pero conserve la instancia para reutilizarla. Libérela en el flujo unificado de release. Esto evita que un grabador recreado ignore una llamada inmediata a start cuando llegue el siguiente evento STATE_OPEN.

onNuiNeedAudioData

onNuiNeedAudioData: (buffer: ArrayBuffer) => number;

Se llama continuamente cuando el SDK extrae audio. Llene buffer.byteLength bytes, típicamente 20 ms de PCM mono de 16 bits, y devuelva el número de bytes escritos. Un valor menor o igual a 0 indica un error o que no hay datos disponibles.

onNuiAudioRMSChanged

onNuiAudioRMSChanged: (val: number) => number;

Reporta el volumen de audio actual para actualizaciones de la interfaz de usuario. Cuando audio_config.mic.volume_mode es "dbfs", val varía entre -160 y 0. La implementación del callback puede devolver 0.

onNuiAssistEventCallback

onNuiAssistEventCallback?: (
  event: Constants.NuiEvent,
  info: string,
  infoLen: number,
  data: ArrayBuffer
) => void;

Devolución de llamada opcional para eventos y datos auxiliares internos del SDK. Omita esta devolución de llamada si no se necesita la información.

ParámetroTipoDescripción
eventConstants.NuiEventEvento auxiliar.
infostringInformación adicional, generalmente una cadena JSON.
infoLennumberLongitud de la información adicional.
dataArrayBufferDatos auxiliares, como audio procesado por AEC.

onNuiLogTrackCallback

onNuiLogTrackCallback: (level: Constants.LogLevel, log: string) => void;

Recibe registros de seguimiento del SDK. Los niveles devueltos están determinados tanto por log_track_level como por el argumento level de initialize.

Objetos de resultado

AsrResult

PropiedadTipoDescripción
finishbooleanIndica si el resultado actual es final.
resultCodenumberCódigo de estado del resultado.
asrResultstringTexto de reconocimiento. Para EVENT_ASR_ERROR, este campo contiene el mensaje de error.
allResponsestringRespuesta completa del servidor como una cadena JSON, que incluye el ID de tarea y el texto de la expresión.

KwsResult

PropiedadTipoDescripción
typeConstants.WuwTypeTipo de palabra de activación. Ignore este campo para el reconocimiento de voz en tiempo real.
kwsstringPalabra de activación. Ignore este campo para el reconocimiento de voz en tiempo real.

Constantes y enumeraciones

NombreDescripción
Constants.ModeTypeModos del SDK: MODE_DIALOG, MODE_TTS, y MODE_STREAM_INPUT_TTS.
Constants.VadModeModo VAD. El reconocimiento de voz en tiempo real utiliza TYPE_P2T, donde el usuario llama a stopDialog para finalizar el reconocimiento.
Constants.AudioStateEstados de audio: STATE_OPEN, STATE_PAUSE, y STATE_CLOSE.
Constants.LogLevelNiveles de registro desde LOG_LEVEL_VERBOSE (0) hasta LOG_LEVEL_NONE (5).
Constants.NuiResultCodeCódigos de error del SDK, como SUCCESS (0), ILLEGAL_PARAM (240002), NECESSARY_PARAM_LACK (240004), y SDK_NOT_INIT (240011).
Constants.kServiceTypeSpeechTranscriberservice_type valor para el reconocimiento de voz en tiempo real. El valor es 4.
Constants.ModeFullCloudModo de nube completa. El service_mode valor es "1".

Código de ejemplo

El siguiente código muestra el flujo principal del SDK. Para el manejo completo de permisos, la cola de grabación y el análisis de respuestas, consulte DashFunAsrSpeechTranscriberPage.ets en el paquete del SDK.

import { AsrResult, Constants, INativeNuiCallback, KwsResult, NativeNui } from 'neonui';

const callback: INativeNuiCallback = {
  onNuiEventCallback: (event: Constants.NuiEvent, resultCode: number, arg2: number,
    kwsResult: KwsResult, asrResult: AsrResult): void => {
    if (event == Constants.NuiEvent.EVENT_ASR_PARTIAL_RESULT
      || event == Constants.NuiEvent.EVENT_SENTENCE_END) {
      // Parse payload.output.sentence.text from asrResult.allResponse.
    } else if (event == Constants.NuiEvent.EVENT_TRANSCRIBER_COMPLETE) {
      // Recognition is complete.
    } else if (event == Constants.NuiEvent.EVENT_ASR_ERROR) {
      // resultCode contains the error code.
    }
  },
  onNuiAudioStateChanged: (state: Constants.AudioState): void => {
    // Control AudioCapturer for STATE_OPEN, STATE_PAUSE, and STATE_CLOSE.
  },
  onNuiNeedAudioData: (buffer: ArrayBuffer): number => {
    // Copy recording data to buffer and return the number of bytes written.
    return 0;
  },
  onNuiAudioRMSChanged: (val: number): number => 0,
  onNuiLogTrackCallback: (level: Constants.LogLevel, log: string): void => {}
};

const nuiInstance = new NativeNui(Constants.ModeType.MODE_DIALOG);

const initParams: Record<string, Object> = {};
initParams['url'] = 'wss://dashscope.aliyuncs.com/api-ws/v1/inference';
initParams['device_id'] = 'my_device_id';
initParams['service_mode'] = Constants.ModeFullCloud;
initParams['audio_update_manually'] = 'false';

const initResult = nuiInstance.initialize(
  callback,
  JSON.stringify(initParams),
  Constants.LogLevel.LOG_LEVEL_DEBUG,
  false
);

if (initResult == Constants.NuiResultCode.SUCCESS) {
  const nlsConfig: Record<string, Object> = {
    'model': 'qwen-audio-3.0-asr-flash-streaming',
    'sr_format': 'opus',
    'sample_rate': 16000
  };
  const params: Record<string, Object> = {
    'service_type': Constants.kServiceTypeSpeechTranscriber,
    'nls_config': nlsConfig
  };
  nuiInstance.setParams(JSON.stringify(params));

  const dialogParams: Record<string, Object> = { 'apikey': 'st-****' };
  nuiInstance.startDialog(Constants.VadMode.TYPE_P2T, JSON.stringify(dialogParams));
}

// Stop recognition when the user finishes recording, and wait for EVENT_TRANSCRIBER_COMPLETE.
function stopRecognition(): void {
  nuiInstance.stopDialog();
}
// Call nuiInstance.release() from the EVENT_TRANSCRIBER_COMPLETE handler.

Utilice AudioCapturer de @kit.AudioKit para la grabación. El audio debe ser PCM mono de 16 bits con una frecuencia de muestreo admitida por el modelo seleccionado.

import { audio } from '@kit.AudioKit';

const options: audio.AudioCapturerOptions = {
  streamInfo: {
    samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_16000,
    channels: audio.AudioChannel.CHANNEL_1,
    sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
    encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
  },
  capturerInfo: {
    source: audio.SourceType.SOURCE_TYPE_MIC,
    capturerFlags: 0
  }
};

const capturer = await audio.createAudioCapturer(options);
capturer.on('readData', (buffer: ArrayBuffer): void => {
  // Pull mode: enqueue data for onNuiNeedAudioData.
  // Push mode: call nuiInstance.updateAudio(buffer, firstPack).
});
await capturer.start();