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-3.1-ASR-Flash-Message.
Inicio rápido
-
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.
-
Descargue el paquete SDK más reciente. Extraiga el paquete, copie
entry/libs/neonui.haren el directorioentry/libsde su aplicación y agregue la dependencia aentry/oh-package.json5:{ "dependencies": { "neonui": "file:libs/neonui.har" } }Para una integración C++ en HarmonyOS, utilice las bibliotecas compartidas en
native/libsy los archivos de encabezado ennative/include. -
Declare los permisos de red y micrófono en el archivo
module.json5de la aplicación, y solicite el permiso de micrófono en tiempo de ejecución.reason_internetyreason_microphoneson 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" } } ] -
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
- Cree una instancia de
NativeNui(Constants.ModeType.MODE_DIALOG). - Llame a initialize para inicializar el SDK y configurar los parámetros de conexión y control.
- Llame a setParams para configurar el modelo y los parámetros de reconocimiento.
- Llame a startDialog para iniciar el reconocimiento.
- En onNuiAudioStateChanged, inicie, pause o cierre el dispositivo de grabación según el estado del audio.
- Proporcione continuamente datos de grabación en onNuiNeedAudioData. Si el envío activo de audio está habilitado, llame a updateAudio en su lugar.
- Recupere los resultados del reconocimiento y los estados de la tarea en onNuiEventCallback.
- Llame a stopDialog y espere a
EVENT_TRANSCRIBER_COMPLETE. - Cuando ya no se necesite el reconocimiento, llame a 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ámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
url | string | Sí | Puntos de conexión del servicio:
Reemplace |
service_mode | string | Sí | Modo de ejecución. Establézcalo en "1", que corresponde a Constants.ModeFullCloud, para el reconocimiento de voz en tiempo real. |
device_id | string | Sí | 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. |
apikey | string | No | Clave de API. Puede pasarla durante la inicialización. Le recomendamos que pase una clave de API temporal en el argumento dialog_params de startDialog. |
audio_update_manually | string | No | Indica si se debe habilitar el modo de envío activo de audio. Valor predeterminado: "false". Si se establece en "true", llame a updateAudio. Si se establece 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. |
workspace | string | No | Directorio 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_path | string | No | Directorio de registros. Este parámetro es obligatorio cuando save_log es true. El SDK conserva como máximo dos archivos de registro. |
save_wav | string | No | Indica 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_id | string | No | Indica 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_size | number | No | Tamañ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_level | number | No | Nivel 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_reconnection | string | No | Indica si se habilita la reconexión y la reanudación de la transmisión tras una interrupción de red. Valor predeterminado: "false". |
aec_params | object | No | Configuración de AEC en el dispositivo. Se utiliza únicamente cuando audio_update_manually es "true". |
aec_params.enable_aec | boolean | No | Indica si se habilita AEC en el dispositivo. Está habilitado de forma predeterminada cuando la compilación del SDK lo admite. |
aec_params.save_audio | boolean | No | Indica 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_callback | boolean | No | Indica si se deben devolver datos procesados por AEC a través del evento EVENT_AEC_DATA de onNuiAssistEventCallback. Valor predeterminado: false. |
vad_params | object | No | Configuración de VAD en el dispositivo. Se utiliza únicamente cuando audio_update_manually es "true". |
vad_params.enable_vad | boolean | No | Indica si se habilita VAD en el dispositivo. Está habilitado de forma predeterminada cuando la compilación del SDK lo admite. |
vad_params.save_audio | boolean | No | Indica 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_config | object | No | Configuració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_calculation | boolean | No | Indica 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_mode | string | No | Modo 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.1-asr-flash-message",
"sr_format": "opus",
"sample_rate": 16000
}
}
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
service_type | number | Sí | Tipo de servicio de voz. Configure este valor en 4, que es Constants.kServiceTypeSpeechTranscriber. |
nls_config | object | Sí | Objeto de configuración de reconocimiento. |
nls_config.model | string | Sí | El nombre del modelo. Establézcalo en qwen-audio-3.1-asr-flash-message. |
nls_config.sr_format | string | Sí | 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_rate | number | Sí | Frecuencia de muestreo en Hz. Solo 16000 Hz es compatible. |
nls_config.language_hints | string[] | No | Idiomas 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. Este parámetro solo se aplica a los resultados finales (sentence_end=true) y no es compatible con los resultados intermedios (sentence_end=false). Para consultar los códigos de idioma compatibles, vea Eventos del cliente. |
nls_config.max_sentence_silence | number | No | Umbral 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]. Cuando la segmentación semántica está habilitada, este parámetro no se utiliza para determinar sentence_end, pero un valor excesivamente pequeño aún puede afectar el reconocimiento. |
nls_config.heartbeat | boolean | No | Indica 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.disfluency_removal_enabled | boolean | No | Indica si se deben filtrar las muletillas y pulir la salida. El valor predeterminado es false. Establézcalo en true para habilitar esta función. |
nls_config.intermediate_result_enabled | boolean | No | Indica si se deben devolver resultados de transmisión intermedios. El valor predeterminado es false. Establézcalo en true para devolver resultados de transmisión intermedios. |
nls_config.vocabulary_id | string | No | ID 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_vocabulary | object | No | Palabras 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.speech_noise_threshold | number | No | Umbral 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.enable_connection_fast_check | boolean | No | Indica 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ámetro | Tipo | Descripción |
|---|---|---|
mode_type | Constants.ModeType | Modo 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. |
flag | string | Identificador 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ámetro | Tipo | Descripción |
|---|---|---|
callback | INativeNuiCallback | Callback de eventos y datos. |
parameters | string | Cadena JSON de parámetros de conexión y control. |
level | number | Nivel 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_log | boolean | Indica 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. |
El método devuelve un código de error.
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. El método devuelve un código de error.
startDialog
startDialog(vad_mode: Constants.VadMode, dialog_params: string): number
Inicia el reconocimiento.
| Parámetro | Tipo | Descripción |
|---|---|---|
vad_mode | Constants.VadMode | Modo VAD. Configure este valor en Constants.VadMode.TYPE_P2T para reconocimiento de voz en tiempo real. |
dialog_params | string | Cadena 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" }] }
]
}
El método devuelve un código de error.
stopDialog
stopDialog(): number
Notifica al servidor que finalice el reconocimiento y devuelva el resultado final. La tarea termina cuando se recibe EVENT_TRANSCRIBER_COMPLETE. El método devuelve un código de error.
cancelDialog
cancelDialog(): number
Termina inmediatamente el reconocimiento sin esperar un resultado final del servidor. El método devuelve un código de error.
dialogAction
dialogAction(action_params: string): number
Envía una acción en tiempo de ejecución para actualizar el contexto de reconocimiento o notificar a AEC sobre cambios en el estado de reproducción.
| Parámetro | Tipo | Descripción |
|---|---|---|
action_params | string | Cadena JSON que contiene la acción. |
action_params.type | string | Configure este valor en "action". |
action_params.command | string | Comando de acción: "context" actualiza el contexto de entrada, "play_start" notifica a AEC que ha comenzado la reproducción de audio de referencia, y "play_over" notifica a AEC que la reproducción ha terminado. |
action_params.context | object[] | Contexto de entrada a utilizar cuando command es "context". |
Ejemplo para actualizar el contexto:
{
"type": "action",
"command": "context",
"context": [
{
"role": "user",
"content": [
{ "text": "Example context", "type": "input_text" }
]
}
]
}
El método devuelve un código de error.
updateAudio
updateAudio(data: ArrayBuffer, first_pack: boolean): number
Cuando audio_update_manually es "true", envíe activamente datos de grabación a través de este método en lugar de llenar onNuiNeedAudioData.
| Parámetro | Tipo | Descripción |
|---|---|---|
data | ArrayBuffer | Datos de audio a reconocer. |
first_pack | boolean | Indica si este es el primer paquete de audio. Configure este valor en true para el primer paquete y false para los paquetes subsiguientes. |
El método devuelve un código de error.
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ámetro | Tipo | Descripción |
|---|---|---|
data | ArrayBuffer | Datos de audio de referencia. |
first_pack | boolean | Indica si este es el primer paquete de audio. Configure este valor en true para el primer paquete y false para los paquetes subsiguientes. |
El método devuelve un código de error.
release
release(): number
Libera todos los recursos internos del SDK. La instancia no se puede utilizar después de esta llamada. Para usarla nuevamente, llame primero a initialize. El método devuelve un código de error.
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ámetro | Tipo | Descripción |
|---|---|---|
apikey | string | Clave de API existente. |
url | string | Endpoint 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ámetro | Tipo | Descripción |
|---|---|---|
event | Constants.NuiEvent | Evento de callback. |
resultCode | number | Código de error. Este campo es válido para EVENT_ASR_ERROR. |
arg2 | number | Reservado. |
kwsResult | KwsResult | Resultado de palabra de activación. Ignore este campo para el reconocimiento de voz en tiempo real. |
asrResult | AsrResult | Resultado 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:
| Evento | Descripción |
|---|---|
EVENT_TRANSCRIBER_STARTED | La tarea ha comenzado. header.task_id en asrResult.allResponse contiene el ID de tarea. Registre este ID para solucionar problemas. |
EVENT_VAD_START | Se activa después de que comienza la tarea. Este evento no indica que se haya detectado el inicio del habla. |
EVENT_VAD_END | Se detectó el final del habla. |
EVENT_SENTENCE_START | Se detectó el inicio de una emisión. |
EVENT_ASR_PARTIAL_RESULT | Hay disponible un resultado de reconocimiento intermedio. |
EVENT_SENTENCE_END | Se detectó el final de una emisión y está disponible el resultado completo de la misma. |
EVENT_ASR_WARN | Ocurrió una advertencia no fatal durante el reconocimiento, como una interrupción de red cuando la reconexión está habilitada. |
EVENT_ASR_ERROR | Ocurrió un error durante el reconocimiento. resultCode contiene el código de error. |
EVENT_MIC_ERROR | No 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_COMPLETE | El reconocimiento ha terminado. |
EVENT_AEC_DATA | Datos 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.
| Estado | Descripción |
|---|---|
STATE_OPEN | La interacción ha comenzado. Se puede abrir el dispositivo de grabación. |
STATE_PAUSE | La interacción se ha detenido. Se puede detener la grabación. |
STATE_CLOSE | La 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ámetro | Tipo | Descripción |
|---|---|---|
event | Constants.NuiEvent | Evento auxiliar. |
info | string | Información adicional, generalmente una cadena JSON. |
infoLen | number | Longitud de la información adicional. |
data | ArrayBuffer | Datos 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
| Propiedad | Tipo | Descripción |
|---|---|---|
finish | boolean | Indica si el resultado actual es final. |
resultCode | number | Código de estado del resultado. |
asrResult | string | Texto de reconocimiento. Para EVENT_ASR_ERROR, este campo contiene el mensaje de error. |
allResponse | string | Respuesta completa del servidor como una cadena JSON, que incluye el ID de tarea y el texto de la expresión. |
KwsResult
| Propiedad | Tipo | Descripción |
|---|---|---|
type | Constants.WuwType | Tipo de palabra de activación. Ignore este campo para el reconocimiento de voz en tiempo real. |
kws | string | Palabra de activación. Ignore este campo para el reconocimiento de voz en tiempo real. |
Constantes y enumeraciones
| Nombre | Descripción |
|---|---|
Constants.ModeType | Modos del SDK: MODE_DIALOG, MODE_TTS, y MODE_STREAM_INPUT_TTS. |
Constants.VadMode | Modo VAD. El reconocimiento de voz en tiempo real utiliza TYPE_P2T, donde el usuario llama a stopDialog para finalizar el reconocimiento. |
Constants.AudioState | Estados de audio: STATE_OPEN, STATE_PAUSE, y STATE_CLOSE. |
Constants.LogLevel | Niveles de registro desde LOG_LEVEL_VERBOSE (0) hasta LOG_LEVEL_NONE (5). |
Constants.NuiResultCode | Códigos de error del SDK, como SUCCESS (0), ILLEGAL_PARAM (240002), NECESSARY_PARAM_LACK (240004), y SDK_NOT_INIT (240011). |
Constants.kServiceTypeSpeechTranscriber | service_type valor para el reconocimiento de voz en tiempo real. El valor es 4. |
Constants.ModeFullCloud | Modo 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.1-asr-flash-message',
'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();