Saltar al contenido principal

Voz en Retail: Transcripción en Dispositivo o una Pila de Servidor Redactora y Borrable

Aviso de uso

Esta es una implementación de referencia, no un producto de transcripción certificado ni una herramienta de cumplimiento normativo. Las etiquetas de hablante son resultados de agrupamiento, no identidades.

Ambos modos escriben resultados en el backend de retail. Se diferencian en dónde se ejecuta el ASR: el dispositivo transcribe y solo sube JSON de texto, o un Clip sube audio a través de un teléfono y el servidor ejecuta el ASR.

  • Transcripción en dispositivo: la caja ejecuta ASR y sube el JSON de texto final al backend de retail; opcionalmente se puede conservar el WAV localmente.
  • Pila de servidor: un host arm64 añade redacción previa a la inserción, MySQL, MinIO, una consola de administración, exportación por sujeto y endpoints de eliminación definitiva. El audio proviene de una matriz de micrófonos en un colector perimetral o de una app de teléfono que ya tengas.

Un sitio que empieza con el preset en dispositivo puede pasar a la pila de servidor más adelante sin cambiar la matriz, el host ni el reconocedor.

Lo que hace esta solución​

Preajuste: Transcripción en el dispositivo​

Una matriz de micrófonos en el mostrador capta la conversación, y una pequeña caja junto a ella convierte el audio en texto y sube el JSON de la transcripción final al backend de retail para almacenamiento y visualización. En modo Clip, SenseCraft Voice App envía el audio a través de la pasarela a voice-service, que llama a OpenVoiceStream para ASR y escribe el resultado en el mismo backend.

Adecuado para: tiendas individuales o pilotos donde las grabaciones no deben salir del edificio; sitios con un enlace ascendente poco fiable; normas de adquisición que prohíben el procesamiento de voz de terceros; validar la ruta de audio y la calidad de reconocimiento en el sitio antes de pasar a la nube.

  • Micrófono plug-and-play

    El reSpeaker XVF3800 se enumera como un dispositivo de audio USB estándar. La cancelación de eco, la formación de haz y la supresión de ruido se ejecutan en el propio DSP de la matriz, no en la CPU del host.

  • El audio puede quedarse en la tienda

    La transcripción en dispositivo solo sube JSON de texto. Los clips WAV se escriben solo cuando la salida a archivo está activada; con ella desactivada, el dispositivo conserva solo texto.

  • Redactado antes de insertar, borrable por persona

    La pila de servidor sustituye nombres y números de teléfono por marcadores de posición antes de escribir en la base de datos. El borrado por sujeto devuelve un recuento de residuos; la exportación por sujeto también está disponible.

  • Funciona con tu app y tus sistemas de negocio

    reSpeaker Clip con SenseCraft Voice App sube audio directamente; los sistemas de BI, CRM y ticketing leen texto redactado y llaman a borrar y exportar por HTTP.

Preajuste: Pila de Servidor​

Llega el audio y la transcripción redactada se escribe en la base de datos; el contenido almacenado puede borrarse por sujeto, devolviendo un recuento de residuos. El paquete es un Docker compose con versiones fijadas: reconocimiento, huella de voz, el servicio que redacta y almacena, MySQL, MinIO y la consola de administración, además de un endpoint WebSocket de ASR para la ingesta de audio.

Hay dos rutas de captura. En el modo de subida de transcripción en el dispositivo, una matriz reSpeaker XVF3800 en la caja perimetral captura audio, ejecuta detección de actividad de voz y transcribe localmente con OpenVoiceStream; la app entonces solo sube JSON de texto al backend de retail, y el WAV puede quedarse opcionalmente en el dispositivo. En modo Clip, el reSpeaker Clip entrega audio a SenseCraft Voice App, la app lo sube al backend, y voice-service llama a OpenVoiceStream y almacena el resultado. La app usa la clave de operador del .env del host de despliegue; las credenciales de base de datos y el secreto JWT los genera el despliegue.

Casos de uso: el personal y los clientes hablan en el mostrador y el operador quiere saber qué se preguntó sin conservar quién lo preguntó; las solicitudes de eliminación deben responderse con prueba de que las filas de la base de datos, los objetos y las huellas de voz han desaparecido; una app ya captura audio y falta la cadena de backend; pilotos que requieren que el audio permanezca en el sitio.

Lo que muestra la consola​

En el preset de Pila de Servidor, después de iniciar sesión en la consola de administración, la lista de grabaciones muestra la transcripción, la duración y el dispositivo de origen de cada enunciado en orden temporal.

Inicio de sesión en la consola; aquí se distinguen los tres tokens de rol

El texto de la lista ya está redactado: los nombres y números de teléfono se sustituyen por marcadores de posición antes de la inserción, y el original nunca se almacena.

Lista de grabaciones: transcripción redactada, duración y dispositivo de origen por fila

Qué hardware necesitas​

Preajuste: Transcripción en el dispositivo​

Dos dispositivos por zona de habla, más un directorio con permisos de escritura.

① Matriz de micrófonos: una reSpeaker XVF3800 en un puerto host USB. La cancelación de eco, la formación de haz y la supresión de ruido se ejecutan en el DSP XMOS de la matriz; el host recibe un flujo mono de 16 kHz, y el procesamiento de front-end no consume CPU del host. La matriz se enumera como un dispositivo de audio USB estándar.

② Host de transcripción: determina si dispones de datos medidos y si la puntuación y las etiquetas de hablante pueden ejecutarse junto al reconocimiento.

HostDónde se ejecuta el ASRCuándo elegirlo
reRouter CM4reRouter CM4
Caja solo CPU, BCM2711, 4 núcleos, 4 GB
4 núcleos Cortex-A72, Paraformer en streamingEl presupuesto es lo primero y el primer sitio es un piloto
reComputer RK3576-30reComputer RK3576-30
NPU de 6 TOPS, 8 GB
NPU RK3576, SenseVoice RKNN fp16Necesitas un host con datos medidos, o puntuación y etiquetas de hablante juntas

Cobertura. Una matriz cubre una zona de habla: con ruido de fondo estable en o por debajo de 70 dB, la formación de haz del XVF3800 cubre a los hablantes dentro de 3 m. No hay modo multi-matriz; un segundo mostrador necesita una segunda matriz y una segunda caja.

También se necesita: un puerto host USB libre; un directorio con permisos de escritura para transcripciones (y audio opcional): el compose limita el tamaño del log de los contenedores y mantiene los modelos en volúmenes con nombre, así que solo el directorio de transcripciones crece con el uso; una red para la subida al backend y la descarga del modelo en el primer arranque.

Preajuste: Pila de Servidor​

Como máximo dos cosas: el host que ejecuta la pila y una matriz de micrófonos en la ruta del colector perimetral.

① Host de la pila: cualquier host Linux arm64 con Docker y 20 GB libres. Las imágenes fijadas son solo arm64, y la imagen de reconocimiento incluida está compilada para la NPU RK3576; un host sin una NPU RKNN necesita la imagen de reconocimiento correspondiente.

HostFunciónCuándo elegirlo
—reComputer RK3576-30 (SKU 100052518)Host de la pila; también el colector en la ruta del colector perimetralLas imágenes incluidas están compiladas para esta placa, y el reconocimiento se ejecuta en la NPU
—reRouter CM4 (SKU 110110110)Solo colectorYa tienes un CM4; el reconocimiento se ejecuta en la CPU, y el paquete no incluye ninguna imagen fijada para esta ruta, así que la aportas tú

② Matriz de micrófonos (solo ruta del colector perimetral): reSpeaker XVF3800 USB 4-Mic Array (SKU 101991441). La supresión de ruido, la cancelación de eco y la formación de haz se ejecutan en el DSP de la matriz; el host recibe un flujo mono de 16 kHz por USB.

Inicia un host de stack con 1–2 flujos. La concurrencia solo de ASR está en la tabla de cinco dispositivos bajo "Rendimiento y datos medidos".

Otros requisitos previos: el colector debe poder alcanzar el puerto ASR del host de stack; coloca una terminación TLS delante al cruzar una red no confiable, porque el token puede viajar como un parámetro de consulta en la URL.

Límites de selección negativa​

  • Límite de canales de audio: reComputer RK3576 está evaluado para hasta 12 flujos de audio concurrentes. Para tiendas minoristas con más de 16 cajas, añade una segunda puerta de enlace o escala a un stack de servidor Jetson.
  • Redacción de PII: las transcripciones conservan los números sin procesar de forma predeterminada. Para el cumplimiento financiero y de GDPR, habilita explícitamente la canalización de redacción local en la capa de servidor.

Cómo desplegar en sitio​

Preajuste: Transcripción en el dispositivo​

Coloca primero el array y luego levanta los dos contenedores.

Parte uno — colocar el array​

Mantén a los hablantes dentro de 3 m y el ruido en 70 dB o menos

Hablantes dentro de 3 m del array, ruido de fondo constante en 70 dB o menos (aproximadamente el nivel de una conversación normal). Más allá de eso, la supresión de ruido del array no puede separar al hablante de la sala, aumentan los errores de reconocimiento y un host más rápido no ayuda.

Coloca el array en el mostrador mirando hacia la zona de habla, no detrás de una pantalla ni bajo un voladizo. Se conecta a un puerto host USB de la caja, por lo que ambos deben estar dentro del alcance del cable.

Parte dos — levantar el software​

Los pasos por dispositivo están en la página del diseño de referencia. El flujo:

  1. Elige una configuración: la página pregunta qué debe contener la transcripción (solo texto / texto con puntuación / más etiquetas de hablante) y si necesitas un host con datos medidos antes de la puesta en producción. El host y el array se derivan de esas dos respuestas.
  2. Despliega el paquete: ambos preajustes ejecutan los mismos dos contenedores, el servicio de voz y el cliente de voz. Cambiar de preajuste modifica la etiqueta de la imagen y el perfil, no el formato de salida.
  3. Rellena las entradas del dispositivo: directorio de salida, si se conservan los WAV, si se habilitan la restauración de puntuación y los vectores de huella de voz. Cada uno de los dos últimos carga un modelo; habilitar ambos en una placa solo CPU de 4 GB reduce el margen.
  4. Verifica: envía un WAV corto a POST /asr. Texto correcto y un campo backend que nombra el runtime real significan que la cadena funciona. La página web local en el puerto 8090 muestra entonces transcripciones en vivo, estado del micrófono y el registro de huellas de voz.

Tiempo: unos 40 minutos por despliegue una vez descargados los modelos. Con el volumen de modelos ya poblado, el tiempo de reinicio a estado saludable en RK3576 fue de unos 25 s.

Preajuste: Pila de Servidor​

Dos preajustes, ambos de nivel intermedio, unos 60 minutos, ambos terminan en un paso de aceptación manual. Las operaciones por dispositivo están en la página del diseño de referencia, donde eliges una configuración para tu sitio y descargas el paquete de aplicación correspondiente.


Server Stack + App móvil: despliega el stack en el host arm64 (Paso 1), configura la app con http://<deployment-device-IP>:18621 y la clave de operador del .env del host (Paso 2), abre la consola de administración (Paso 3) y luego verifica (Paso 4). Para la ruta Clip, SenseCraft Voice App recibe el audio del Clip y envía un archivo de audio compatible a POST http://<stt-host>:18621/v1/audio/transcriptions; el backend transcribe, redacta, almacena y muestra el resultado.

Server Stack + Edge Collector: despliega el colector (Paso 1); el compose fijado es una unidad, por lo que el colector trae todo el stack con él. Abre la consola de administración (Paso 2) y verifica (Paso 3).

Qué comprobar manualmente en la aceptación. Que el texto almacenado esté redactado y que no quede nada tras el borrado. Alguien dice una frase que contenga un número de teléfono en la app o en el array de micrófonos. Luego: lee la fila que llegó (el número debe aparecer como un marcador de posición), llama al endpoint de borrado para ese sujeto y lee el recuento de residuo que devuelve, y comprueba la exportación.

Antes de entrar en una tienda: elige la familia de dispositivos y ten listo el dispositivo y el acceso SSH. El despliegue genera credenciales de base de datos, secretos JWT y la clave de operador. La clave de operador se almacena como OPERATOR_TOKEN en el .env del directorio de despliegue; úsala con http://<deployment-device-IP>:18621 en la app.

Interfaces disponibles​

Preajuste: Transcripción en el dispositivo​

El modo dispositivo produce JSON de transcripción final y lo sube al backend de retail; el modo Clip envía audio a través del teléfono y la puerta de enlace a voice-service. Proporcionas la URL del backend cliente y la clave de acceso en el despliegue; la base de datos interna y los secretos JWT se generan automáticamente.

  • Solo texto: lee los archivos JSON. <output dir>/cache/asr/ recibe un archivo por enunciado segmentado con transcripción, marcas de tiempo e idioma, más una etiqueta de hablante cuando la coincidencia de huella de voz está activada.
  • Texto en vivo: conéctate al WebSocket en 8621. Envía tramas PCM mono de 16 kHz y termina un enunciado con una trama vacía; cada resultado lleva transcripción, puntuación y un vector CAM++ de 192 dimensiones.
  • Entrada de archivo completo: haz POST de un WAV a 8621. El paso de aceptación en la guía de despliegue llama a esto.

Tabla completa de interfaces y cargas útiles​

Interfaz / puertoContenido¿Sale del dispositivo?
<output dir>/cache/asr/<id>.json{"id","text","lang","start_ms","end_ms","speaker"}, un archivo por enunciado segmentadoNo
<output dir>/voice/*.wavClips WAV mono de 16 kHz, escritos solo cuando la salida a archivo está activadaNo
ws://<device-IP>:8621/asr/stream?vad=none&punctuate=true&speaker_embedding=trueASR en streaming: PCM de entrada, transcripción, puntuación y vector CAM++ de 192 dimensiones de salidaNo
POST http://<device-IP>:8621/asrTranscripción de archivo completo, p. ej. {"text":"这个多少钱","backend":"rk:sensevoice_rknn"}No
http://<device-IP>:8090/Página local: transcripciones en vivo, estado del micrófono, registro de huellas de voz; solo accesible en la LAN de la tiendaNo

El campo speaker solo aparece cuando la coincidencia de huella de voz está activada. Es una etiqueta de clúster del registro local y no identifica a una persona. El campo backend en la respuesta offline nombra el runtime que atendió la solicitud, para que puedas distinguir SenseVoice en la NPU de un fallback en CPU.

Preajuste: Pila de Servidor​

Todos los datos se leen desde endpoints HTTP o WebSocket en el host de stack. Los tokens son entradas name:role:token en .env (VOICE_API_TOKENS, ASR_API_TOKENS), y el rol determina a qué rutas puede llegar un token.

  • SenseCraft Voice App: la app convierte el audio de reSpeaker Clip a un formato compatible y lo sube con POST /v1/audio/transcriptions; el JSON de transcripción vuelve al teléfono.
  • Cliente de streaming PCM: WebSocket en 8080, rol operator. Tramas binarias PCM sin procesar de entrada, mensajes JSON de salida.
  • Sistema de BI o CRM: GET /api/v1/recordings en 8081, rol viewer. El texto ya está redactado; ningún endpoint devuelve el original.
  • Flujo de trabajo de privacidad o ticketing: POST /api/v1/privacy/erase y GET /api/v1/privacy/export en 8081, rol admin.
  • Personas: la consola de administración en 3000.

Tabla completa de interfaces y cargas útiles​

InterfazPuertoRutaRolContenido
WebSocket8080/ws?token=<operator>operatorCliente→servidor: tramas binarias PCM sin procesar, 16 kHz, mono, entero con signo de 16 bits little-endian, ≤ 2 MiB cada una. Servidor→cliente: JSON con type de connection, vad, final, error
HTTP8081/api/v1/recordingsoperator (POST), viewer (GET)Carga y consulta de transcripciones; la redacción ocurre antes de la inserción
HTTP8081/api/v1/privacy/eraseadminBorrado definitivo por sujeto / dispositivo / sesión
HTTP8081/api/v1/privacy/exportadminJSON de texto redactado más un manifiesto de audio
HTTP3000/viewer y superioresConsola de administración: grabaciones, palabras clave, dispositivos, exportar, borrar
HTTP8621/health—Comprobación de estado de OpenVoiceStream para sondas de orquestación

Un mensaje final:

{"type":"final","text":"我想找[[NAME]]咨询一下","timestamp":1757030400000,
"textLength":12,"wordCount":2,"sessionID":"a1b2","audioID":"c3d4",
"speaker":{"identified":true,"speaker_id":"spk-7","speaker_name":"staff-a","confidence":0.83}}

Qué significan tres campos:

  • text es el texto redactado. La base de datos almacena el propio marcador de posición [[NAME]]; el original no se escribe en ningún sitio y no hay copia cifrada.
  • speaker.identified es false en el despliegue predeterminado. Elige el perfil de huella de voz si necesitas coincidencia de hablante; el endpoint y la clave se entregan después del despliegue.
  • Los tokens pueden ir en un encabezado. Se aceptan tanto X-API-Token como Authorization: Bearer; el parámetro de consulta ?token= existe para clientes WebSocket en navegador que no pueden establecer encabezados personalizados.

La autenticación separa dos fallos: credenciales ausentes devuelven 401, rol insuficiente devuelve 403, de modo que un integrador sabe si debe cambiar el token o el rol. Las rutas sin una regla explícita requieren al menos viewer, por lo que los nuevos endpoints no son públicos de forma predeterminada; los tokens heredados sin rol se degradan a viewer.

Rendimiento y datos medidos​

Preajuste: Transcripción en el dispositivo​

Tiempos de ejecución y parámetros clave​

El repositorio del servicio de voz OpenVoiceStream no es público, por lo que no hay enlace de GitHub.

HostModelo de reconocimientoPrecisiónRuntimeCómo llega el modelo al dispositivo
reRouter CM4Paraformer en streamingCPUONNX / sherpa-onnx en 4 núcleos Cortex-A72Descargado en el primer arranque desde el mirror elegido en el despliegue
reComputer RK3576 seriesSenseVoicefp16RKNN en la NPU de 6 TOPSIgual; el .rknn está compilado para este SoC

La puntuación CT-Transformer y la huella de voz CAM++ se ejecutan en la CPU mediante sherpa-onnx en ambos hosts, por lo que habilitar ambos en una placa solo CPU de 4 GB compite con el reconocimiento por los mismos núcleos y memoria.

  • vad (parámetro de URL de stream): donde se divide un enunciado; vad=none deja la segmentación al llamador, que es el ajuste usado en las mediciones de abajo.
  • punctuate=true: carga CT-Transformer y devuelve oraciones con puntuación.
  • speaker_embedding=true: carga CAM++ y emite una etiqueta speaker tras comparar con el registro local con un umbral fijo. La comparación es heurística, sin procedimiento de registro, comprobación de vivacidad ni garantía de confianza; no lo uses para control de acceso, pagos ni ninguna decisión sobre una persona.

Mediciones de la serie reComputer RK3576​

MétricaValorCondiciones
Latencia de transcripción offline3.0 s de audio → unos 780 ms en caliente (RTF 0.26)SenseVoice RKNN fp16 en la NPU; POST /asr, contenedor en caliente
MemoriaRSS del contenedor 1.71 GiBASR + puntuación + huella de voz todo cargado
Reinicio hasta estado saludableUnos 25 sVolumen de modelos poblado
Transcripción de enunciados cortos5 enunciados cortos (3 zh + 2 en) devolvieron "backend":"rk:sensevoice_rknn" con texto correcto; p50 678 ms, p95 810 ms (n=5, incluye sobrecarga HTTP)compose sin modificar de este paquete y perfil rk3576-sensevoice, entrada por archivo
Precisión de reconocimiento en streaming ▲CER chino 9.4%, WER inglés 34.6%Conjunto corto bench/perf/corpus (5 zh + 5 en), codificador híbrido Paraformer RKNN + decodificador RKNN, ruta en vivo /asr/stream
Fin del habla a resultado final ▲326 ms / 347 ms (media zh / en)Misma ejecución, /asr/stream con 500 ms de adelanto de preparación
Vector de huella de vozRTF 0.09–0.13 (1 s → 125 ms, 3 s → 255 ms, 5 s → 428 ms)CAM++ vía sherpa-onnx en CPU, 2 hilos; clustering de 10 hablantes 1.45 ms
Vector de huella de voz, clase A72 *RTF alrededor de 0.10 (1 s → 114 ms, 3 s → 303 ms, 5 s → 508 ms), carga en frío 1.66 sreComputer serie R10 (Cortex-A72, 4 núcleos), misma generación de SoC que el CM4 en reRouter; CAM++ vía sherpa-onnx en CPU

Reproducir: assets/docker/docker-compose.local-rk3576.yml (cabecera del archivo), openvoicestream/docs/perf/paraformer-rk3576-streaming-ab-20260608.md, openvoicestream/docs/specs/diarization-capability.md

▲ Estas dos filas provienen del perfil de streaming Paraformer, no del perfil SenseVoice desplegado aquí; su latencia no es la latencia de la canalización actual. Para las cifras de fin del habla a resultado final de la canalización actual, consulta la tabla de concurrencia de cinco dispositivos en la sección Server Stack.

* Placa diferente, misma generación de SoC, así que esta fila es derivada: muestra el coste de CPU de los vectores de huella de voz en núcleos de clase A72.

Degradación conocida​

  • Fuera del rango de captación. Más allá de unos 3 m, o con ruido constante por encima de unos 70 dB, la matriz no puede separar al hablante y aumentan los errores de reconocimiento; ajustar los parámetros anteriores no ayuda.
  • El inglés es más débil que el chino en el perfil de streaming Paraformer. En el mismo conjunto corto: WER inglés 34.6%, CER chino 9.4%.

Preajuste: Pila de Servidor​

Capacidad y latencia de ASR: comparación de cinco dispositivos​

Familia de dispositivosModeloStreams concurrentes recomendadosp50 / p95
reComputer J4012SenseVoice48505 / 789 ms
reComputer J3011SenseVoice32167 / 293 ms
reComputer RK3576SenseVoice12583 / 1067 ms
reComputer RK3588SenseVoice8659 / 902 ms
reComputer serie R2000SenseVoice6625 / 1173 ms
reComputer J4012Whisper base16584 / 1177 ms
reComputer J3011Whisper base8492 / 837 ms
reComputer RK3576Whisper base2809 / 1380 ms
reComputer RK3588Whisper base4655 / 1380 ms
reComputer serie R2000Whisper base16752 / 1465 ms

Condiciones: cada clip por debajo de 4 s; SenseVoice con un corpus de concurrencia de 200 streams (Jetson) y 100 streams (RK), Whisper con 72 streams (Jetson/RK) y 100 streams (R2000). p50 / p95 se miden desde el fin del habla en ASR hasta el resultado final y excluyen VAD, huella de voz, puntuación, subida, redacción e inserción; esto es capacidad solo de ASR.

Precisión (en un corpus separado de 100 clips, no mezclado con el corpus de concurrencia): CER chino agregado 4.82%; WER inglés 7.62% en J4012, 7.62% en J3011, 8.51% en RK3576, 7.50% en RK3588, 8.39% en la serie R2000.

Reproducir: openvoicestream/bench/asr_bench/build_unified_report.py

Límites conocidos​

  • El texto original nunca se almacena. Números de móvil, números de identificación, nombres y direcciones se sustituyen por marcadores tipados antes de la escritura en MySQL; solo se enmascaran las entidades con confianza ≥ 0.85, y las que están por debajo del umbral se marcan para una cola de revisión sin enmascarar.
  • La puntuación de redacción es a nivel de texto. En un conjunto de referencia de 114 ítems de texto escrito en chino e inglés: precisión 0.98, recall 0.95. La puntuación se calcula sobre texto escrito; en la salida de ASR, los errores de transcripción desplazan los límites de las entidades. Reproducir: tools/pii_eval.py
  • Las cadenas de dígitos hablados tienen una brecha. La regla cn_mobile_spoken cubre números de móvil de 11 dígitos leídos en numerales chinos (incluido 幺); los números de identificación, números de línea fija y otros identificadores numéricos leídos como numerales chinos no están cubiertos.
  • El audio no se redacta. Se conserva 24 horas por defecto, con 6 horas o 1 hora seleccionables en el despliegue; la exportación contiene JSON de texto redactado más un manifiesto de audio, no el audio en sí.
  • El borrado por sujeto deja 0 residuo en la base de datos, el almacén de objetos y el audio local; lo que queda es una lápida que contiene solo el SHA-256 del sujeto, más un registro de auditoría. Reproducir: assets/tools/delete_proof.sh
  • La analítica fuera de la caja está desactivada por defecto. El contenedor c4-cloud-analytics solo se ejecuta cuando se elige el perfil cloud-analytics.

Próximos pasos​

  • Medir la cadena completa de ingesta del server stack en reComputer RK3576: 1 / 2 / 4 / 8 / 16 streams concurrentes, y latencia fin del habla → redacción → inserción (p50 / p95 / p99).
  • Medir la precisión de transcripción en chino e inglés (WER) en el server stack, y captura continua durante 1 / 10 / 60 / 240 minutos y 24 horas.
  • Construir la imagen de contenedor de huella de voz y luego medir la tasa de error de hablante.

Fuentes de datos y recursos​

Preajuste: Transcripción en el dispositivo​

  • Modelos de reconocimiento, puntuación, endpointing y huella de voz: SenseVoice y Paraformer para reconocimiento, CT-Transformer para puntuación, CAM++ para huella de voz, Silero VAD para endpointing. Cada uno sigue su licencia upstream; revisa la licencia de cada modelo que uses antes de un despliegue comercial. Los modelos se descargan en el primer arranque desde el mirror elegido en el despliegue.
  • Corpus de prueba: las filas de precisión usan el conjunto corto bench/perf/corpus (5 zh + 5 en); la fila de enunciados cortos usa 5 enunciados (3 zh + 2 en). Ninguno se distribuye con el paquete.
  • Fuentes de datos de rendimiento: openvoicestream/docs/perf/paraformer-rk3576-streaming-ab-20260608.md, openvoicestream/docs/specs/diarization-capability.md, openvoicestream/docs/perf-test-runbook.md. El repositorio de OpenVoiceStream no es público, por lo que estos documentos no tienen enlace público.
  • Diagrama de arquitectura: generado a partir del catálogo aprobado de pegatinas de producto. El nodo de micrófono usa un símbolo de rol genérico, no la carcasa real del XVF3800.

Preajuste: Pila de Servidor​

  • Conjunto de referencia PII: 114 muestras en chino e inglés detrás de las cifras de precisión y recall; no se distribuye con el paquete.
  • Listas de palabras para redacción: los Cien apellidos y la lista de divisiones chinas a nivel provincial, ambos de dominio público. La redacción no usa ningún modelo de terceros.
  • Servicios de la pila: sensecraft-asr-service, sensecraft-voice-client, sensecraft-voice-service y sensecraft-voice-web son propiedad de Seeed; el reconocimiento usa OpenVoiceStream. MySQL se obtiene bajo GPLv2 con la excepción FOSS, y la versión actual de MinIO es AGPLv3; revisa esa licencia antes de incrustar el almacén de objetos en un producto comercial.
  • El diagrama de arquitectura en la página de diseño de referencia se representa a partir de IR estructurado en este repositorio.
Loading Comments...