Un conjunto de herramientas de reconocimiento de voz de extremo a extremo basado en ModelScope, que admite múltiples funciones como reconocimiento de voz, detección de actividad de voz y recuperación de puntuación.
FunASR - Kit de herramientas fundamental de reconocimiento de voz de extremo a extremo
Resumen del Proyecto
FunASR es un kit de herramientas fundamental de reconocimiento de voz que ofrece múltiples funciones, incluyendo reconocimiento automático de voz (ASR), detección de actividad de voz (VAD), restauración de puntuación, modelos de lenguaje, verificación de hablante, separación de hablantes y ASR multihablante. Este proyecto, desarrollado por Alibaba DAMO Academy, tiene como objetivo construir un puente entre la investigación académica y las aplicaciones industriales.
Dirección del Proyecto: https://github.com/modelscope/FunASR
Características Principales
1. Procesamiento de Voz Multifuncional
- Reconocimiento de Voz (ASR): Soporta reconocimiento en tiempo real (streaming) y no en tiempo real (offline)
- Detección de Actividad de Voz (VAD): Detecta segmentos de actividad de voz
- Restauración de Puntuación: Añade automáticamente signos de puntuación
- Identificación de Hablante: Soporta verificación y separación de hablantes
- Reconocimiento de Emociones: Análisis de emociones en voz
- Detección de Palabras Clave: Soporta activación por palabras clave
2. Biblioteca de Modelos Preentrenados
FunASR ha publicado una gran cantidad de modelos preentrenados de nivel académico e industrial en ModelScope y Hugging Face, incluyendo principalmente:
Nombre del Modelo | Descripción de la Función | Datos de Entrenamiento | Número de Parámetros |
---|---|---|---|
SenseVoiceSmall | Capacidades de comprensión multilingüe, incluyendo ASR, ITN, LID, SER y AED | 300 mil horas | 234M |
paraformer-zh | Reconocimiento de voz en chino, con marcas de tiempo, no en tiempo real | 60 mil horas, chino | 220M |
paraformer-zh-streaming | Reconocimiento de voz en chino, en tiempo real | 60 mil horas, chino | 220M |
paraformer-en | Reconocimiento de voz en inglés, no en tiempo real | 50 mil horas, inglés | 220M |
ct-punc | Restauración de puntuación | 100 millones de entradas, chino e inglés | 290M |
fsmn-vad | Detección de actividad de voz | 5000 horas, chino e inglés | 0.4M |
Whisper-large-v3 | Reconocimiento de voz multilingüe | Multilingüe | 1550M |
3. Introducción a los Modelos Principales
Paraformer
Paraformer-large es un modelo de reconocimiento de voz de extremo a extremo no autorregresivo, que ofrece alta precisión, alta eficiencia y fácil implementación, lo que permite construir rápidamente servicios de reconocimiento de voz.
SenseVoice
SenseVoice es un modelo fundamental de voz con diversas capacidades de comprensión de voz, incluyendo ASR, LID, SER y AED, y soporta múltiples idiomas como chino, cantonés, inglés, japonés y coreano.
Instalación y Uso
Métodos de Instalación
Instalación con pip
pip3 install -U funasr
Instalación desde el código fuente
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
Instalación del soporte de la biblioteca de modelos (Opcional)
pip3 install -U modelscope huggingface_hub
Inicio Rápido
1. Uso por línea de comandos
funasr ++model=paraformer-zh ++vad_model="fsmn-vad" ++punc_model="ct-punc" ++input=asr_example_zh.wav
2. API de Python - Modelo SenseVoice
from funasr import AutoModel
from funasr.utils.postprocess_utils import rich_transcription_postprocess
model_dir = "iic/SenseVoiceSmall"
model = AutoModel(
model=model_dir,
vad_model="fsmn-vad",
vad_kwargs={"max_single_segment_time": 30000},
device="cuda:0",
)
# Reconocimiento en inglés
res = model.generate(
input=f"{model.model_path}/example/en.mp3",
cache={},
language="auto", # "zn", "en", "yue", "ja", "ko", "nospeech"
use_itn=True,
batch_size_s=60,
merge_vad=True,
merge_length_s=15,
)
text = rich_transcription_postprocess(res[0]["text"])
print(text)
3. API de Python - Modelo Paraformer
from funasr import AutoModel
# paraformer-zh es un modelo ASR multifuncional
model = AutoModel(
model="paraformer-zh",
vad_model="fsmn-vad",
punc_model="ct-punc",
# spk_model="cam++", # Reconocimiento de hablante opcional
)
res = model.generate(
input=f"{model.model_path}/example/asr_example.wav",
batch_size_s=300,
hotword='魔搭' # Palabra clave
)
print(res)
4. Reconocimiento en tiempo real (Streaming)
from funasr import AutoModel
import soundfile
import os
chunk_size = [0, 10, 5] # [0, 10, 5] Configuración de latencia de 600ms
encoder_chunk_look_back = 4
decoder_chunk_look_back = 1
model = AutoModel(model="paraformer-zh-streaming")
wav_file = os.path.join(model.model_path, "example/asr_example.wav")
speech, sample_rate = soundfile.read(wav_file)
chunk_stride = chunk_size[1] * 960 # 600ms
cache = {}
total_chunk_num = int(len((speech)-1)/chunk_stride+1)
for i in range(total_chunk_num):
speech_chunk = speech[i*chunk_stride:(i+1)*chunk_stride]
is_final = i == total_chunk_num - 1
res = model.generate(
input=speech_chunk,
cache=cache,
is_final=is_final,
chunk_size=chunk_size,
encoder_chunk_look_back=encoder_chunk_look_back,
decoder_chunk_look_back=decoder_chunk_look_back
)
print(res)
Despliegue de Servicios
FunASR soporta el despliegue de modelos preentrenados o afinados para servicios, y actualmente soporta los siguientes tipos de despliegue de servicios:
Tipos de Servicios Soportados
- Servicio de Transcripción de Archivos Offline (Chino, versión CPU)
- Servicio de Transcripción en Tiempo Real (Chino, versión CPU)
- Servicio de Transcripción de Archivos Offline (Inglés, versión CPU)
- Servicio de Transcripción de Archivos Offline (Chino, versión GPU)
Recomendaciones de Configuración para el Despliegue
Configuración recomendada:
- Configuración 1: (Tipo de cómputo X86) 4 vCPU, 8GB de RAM, una sola máquina soporta aproximadamente 32 solicitudes
- Configuración 2: (Tipo de cómputo X86) 16 vCPU, 32GB de RAM, una sola máquina soporta aproximadamente 64 solicitudes
Características Técnicas
1. Innovación del Modelo
- Arquitectura No Autorregresiva: Paraformer adopta un diseño no autorregresivo para mejorar la eficiencia de inferencia
- Modo 2Pass: Combina las ventajas del procesamiento en tiempo real (streaming) y no en tiempo real (offline)
- Soporte de Palabras Clave: Soporta palabras clave personalizadas para mejorar la precisión del reconocimiento de vocabulario específico
2. Optimización de Ingeniería
- Exportación a ONNX: Soporta la exportación de modelos en formato ONNX para facilitar el despliegue
- Soporte Multiplataforma: Soporta múltiples plataformas como CPU, GPU, ARM64
- Despliegue Contenerizado: Ofrece soporte para imágenes Docker
3. Facilidad para Desarrolladores
- Interfaz Unificada: AutoModel unifica las interfaces de inferencia de ModelScope, Hugging Face y FunASR
- Diseño Modular (Plug-in): Soporta la combinación flexible de componentes como VAD, puntuación y hablante
- Documentación Completa: Proporciona tutoriales y ejemplos detallados
Escenarios de Aplicación
1. Transcripción de Voz en Tiempo Real
- Actas de reuniones
- Subtítulos en vivo
- Asistentes de voz
2. Procesamiento de Audio Offline
- Transcripción de archivos de audio
- Análisis de datos de voz
- Moderación de contenido
3. Soporte Multilingüe
- Reconocimiento de voz interlingüe
- Traducción de voz
- Servicio al cliente multilingüe
Últimas Actualizaciones
Principales Actualizaciones de 2024
- 29/10/2024: Lanzamiento del servicio de transcripción en tiempo real 1.12, el modo 2pass-offline soporta el modelo SenseVoice
- 10/10/2024: Añadido soporte para el modelo Whisper-large-v3-turbo
- 26/09/2024: Solucionado el problema de fuga de memoria, soporte para el modelo SenseVoice ONNX
- 04/07/2024: Lanzamiento del modelo fundamental de voz SenseVoice
- 27/06/2024: Lanzamiento del servicio de transcripción de archivos offline GPU 1.0
Comunidad y Soporte
Licencia de Código Abierto
- El proyecto utiliza la Licencia MIT
- Los modelos preentrenados utilizan un acuerdo de licencia de modelo específico
Participación en la Comunidad
- GitHub Issues: Problemas técnicos y comentarios sobre errores
- Grupo DingTalk: Comunicación y discusión diaria
- ModelScope: Descarga y compartición de modelos
Citas
Si ha utilizado FunASR en su investigación, por favor cite el siguiente artículo:
@inproceedings{gao2023funasr,
author={Zhifu Gao and Zerui Li and Jiaming Wang and Haoneng Luo and Xian Shi and Mengzhe Chen and Yabin Li and Lingyun Zuo and Zhihao Du and Zhangyu Xiao and Shiliang Zhang},
title={FunASR: A Fundamental End-to-End Speech Recognition Toolkit},
year={2023},
booktitle={INTERSPEECH},
}
Conclusión
FunASR es un kit de herramientas de reconocimiento de voz completo y de excelente rendimiento, que combina con éxito las tecnologías de vanguardia de la investigación académica con las necesidades prácticas de las aplicaciones industriales. Ya sea para investigadores que validan algoritmos o para desarrolladores que construyen aplicaciones de voz, FunASR proporciona un potente soporte técnico y una cómoda experiencia de desarrollo. A través de su rica biblioteca de modelos preentrenados, sus flexibles soluciones de despliegue y su activa comunidad de código abierto, FunASR se está convirtiendo en una infraestructura importante en el campo del reconocimiento de voz.