Sobre el proyecto
SenseVoice es un modelo fundacional de voz con múltiples capacidades de comprensión del habla: reconocimiento automático del habla (ASR), identificación del idioma hablado (LID), reconocimiento de emociones en el habla (SER) y detección de eventos de audio (AED).
Alcance del checkpoint publicado: SenseVoiceSmall admite ASR e identificación de idioma para mandarín, cantonés, inglés, japonés y coreano, junto con etiquetas de emoción y eventos de audio. El trabajo de investigación más amplio de SenseVoice informa entrenamiento en más de 400.000 horas y soporte para más de 50 idiomas, pero el checkpoint pequeño publicado cubre los cinco idiomas anteriores. La diarización de hablantes no es una salida del checkpoint en sí; es un pipeline compuesto de FunASR que utiliza modelos separados FSMN-VAD y CAM++.
Aspectos destacados
- Transcripción enriquecida: etiquetas de reconocimiento de emociones y detección de eventos sonoros para eventos como música de fondo, aplausos, risas, llanto, tos y estornudos.
- Inferencia eficiente: un marco end-to-end no autorregresivo para inferencia de baja latencia. En la configuración de benchmark del proyecto, se reporta que SenseVoiceSmall se ejecuta más de 5 veces más rápido que Whisper-Small y 15 veces más rápido que Whisper-Large con un número similar de parámetros.
- Scripts y estrategias de ajuste fino para adaptarse a datos de cola larga.
- Pipeline de despliegue de servicio que admite múltiples solicitudes concurrentes, con lenguajes del lado del cliente que incluyen Python, C++, HTML, Java y C#.
Uso
Instale las dependencias con pip install -r requirements.txt. Los ejemplos y la ruta compuesta de diarización requieren funasr>=1.3.26 (la ruta de despliegue actual recomienda funasr==1.4.14).
La inferencia básica utiliza AutoModel de FunASR con el modelo iic/SenseVoiceSmall, segmentación opcional con FSMN-VAD para audio largo, selección de idioma (auto, zh, en, yue, ja, ko, nospeech), normalización inversa de texto, batching dinámico y fusión de VAD. Un helper rich_transcription_postprocess formatea la salida sin procesar.
Audio largo sin VAD: pasar una forma de onda de una hora a una sola llamada generate puede hacer crecer la memoria del encoder mucho más allá del tamaño del audio. El script long_audio_no_vad.py decodifica mediante ffmpeg y ejecuta SenseVoice en ventanas fijas de 30 segundos con 2 segundos de solapamiento, manteniendo las salidas de los fragmentos sin procesar en un archivo JSONL. Los desplazamientos de ventana describen límites de entrada, no marcas de tiempo de palabras, y los límites fijos aún pueden afectar el reconocimiento alrededor de un corte.
Diarización de hablantes: compuesta mediante FunASR con FSMN-VAD, etiquetas de hablante CAM++ y un modelo de puntuación. Las etiquetas de hablante son clústeres anónimos, no identidades personales reconocidas. Con output_timestamp=True, las marcas de tiempo son pares [start_ms, end_ms] alineados uno a uno con las palabras.
Exportación y despliegue en el borde: se documentan rutas de exportación ONNX y Libtorch, y un runtime llama.cpp/GGUF permite ejecutar SenseVoice como un binario autocontenido con FSMN-VAD integrado y sin Python en tiempo de ejecución, orientado a CPU y dispositivos de borde.
Servicio y contenedores: un despliegue FastAPI escucha en el puerto 50000, y los archivos Docker/Docker Compose admiten ejecuciones en CPU y GPU con un volumen de caché de modelos.
Ajuste fino: la preparación de datos utiliza registros JSONL con etiquetas key, source, target, language, emotion y event; comandos auxiliares convierten wav.scp y archivos de texto en JSONL de train/val. Las etiquetas de emoción incluyen HAPPY, SAD, ANGRY, NEUTRAL, FEARFUL, DISGUSTED y SURPRISED; las etiquetas de evento incluyen BGM, Speech, Applause, Laughter, Cry, Sneeze, Breath y Cough. Se proporcionan un script finetune.sh y una demo webui.py.
Benchmarks: el proyecto compara ASR multilingüe contra Whisper en AISHELL-1, AISHELL-2, Wenetspeech, LibriSpeech y Common Voice, reportando ventajas para el reconocimiento de chino y cantonés. Para el reconocimiento de emociones reporta resultados zero-shot competitivos en conjuntos de prueba en chino e inglés, con un contrato de evaluación SER reproducible. Para la detección de eventos de audio compara contra BEATS y PANN en ESC-50, señalando brechas frente a modelos AED especializados.
Ecosistema: SenseVoice forma parte de la familia FunAudioLLM junto con FunASR, Fun-ASR y CosyVoice. Las integraciones de terceros incluyen despliegue con Triton/TensorRT, sherpa-onnx (compatible con muchos lenguajes de programación y plataformas como iOS, Android y Raspberry Pi), SenseVoice.cpp, streaming-sensevoice, OmniSenseVoice y variantes mejoradas con hotword.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.