Une boîte à outils de reconnaissance vocale de bout en bout basée sur ModelScope, prenant en charge diverses fonctions telles que la reconnaissance vocale, la détection d'activité vocale et la restauration de la ponctuation.
FunASR - Boîte à outils fondamentale de reconnaissance vocale de bout en bout
Aperçu du projet
FunASR est une boîte à outils fondamentale de reconnaissance vocale, offrant diverses fonctionnalités telles que la reconnaissance automatique de la parole (ASR), la détection d'activité vocale (VAD), la restauration de la ponctuation, les modèles de langage, la vérification du locuteur, la séparation des locuteurs et l'ASR multi-locuteurs. Ce projet, développé par l'Institut Damo d'Alibaba, vise à jeter un pont entre la recherche académique et les applications industrielles.
Adresse du projet: https://github.com/modelscope/FunASR
Fonctionnalités clés
1. Traitement vocal multifonctionnel
- Reconnaissance automatique de la parole (ASR): Prend en charge la reconnaissance en continu (streaming) et hors ligne (non-streaming)
- Détection d'activité vocale (VAD): Détecte les segments d'activité vocale
- Restauration de la ponctuation: Ajoute automatiquement les signes de ponctuation
- Identification du locuteur: Prend en charge la vérification et la séparation des locuteurs
- Reconnaissance d'émotions: Analyse des émotions vocales
- Détection de mots-clés: Prend en charge l'activation par mots-clés
2. Bibliothèque de modèles pré-entraînés
FunASR a publié un grand nombre de modèles pré-entraînés de niveau académique et industriel sur ModelScope et Hugging Face, incluant principalement :
Nom du modèle | Description de la fonction | Données d'entraînement | Nombre de paramètres |
---|---|---|---|
SenseVoiceSmall | Capacités de compréhension vocale multiples, incluant ASR, ITN, LID, SER et AED | 300 000 heures | 234M |
paraformer-zh | Reconnaissance vocale chinoise, avec horodatage, non-streaming | 60 000 heures, chinois | 220M |
paraformer-zh-streaming | Reconnaissance vocale chinoise, streaming | 60 000 heures, chinois | 220M |
paraformer-en | Reconnaissance vocale anglaise, non-streaming | 50 000 heures, anglais | 220M |
ct-punc | Restauration de la ponctuation | 100 millions d'entrées, chinois et anglais | 290M |
fsmn-vad | Détection d'activité vocale | 5 000 heures, chinois et anglais | 0.4M |
Whisper-large-v3 | Reconnaissance vocale multilingue | Multilingue | 1550M |
3. Présentation des modèles clés
Paraformer
Paraformer-large est un modèle de reconnaissance vocale de bout en bout non autorégressif, offrant les avantages d'une grande précision, d'une efficacité élevée et d'un déploiement facile, permettant de construire rapidement des services de reconnaissance vocale.
SenseVoice
SenseVoice est un modèle de base vocal doté de multiples capacités de compréhension vocale, incluant ASR, LID, SER et AED, et prenant en charge plusieurs langues telles que le chinois, le cantonais, l'anglais, le japonais et le coréen.
Installation et utilisation
Méthodes d'installation
Installation via pip
pip3 install -U funasr
Installation depuis les sources
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
Installation du support de la bibliothèque de modèles (facultatif)
pip3 install -U modelscope huggingface_hub
Démarrage rapide
1. Utilisation en ligne de commande
funasr ++model=paraformer-zh ++vad_model="fsmn-vad" ++punc_model="ct-punc" ++input=asr_example_zh.wav
2. API Python - Modèle 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",
)
# Reconnaissance anglaise
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 Python - Modèle Paraformer
from funasr import AutoModel
# paraformer-zh est un modèle ASR multifonctionnel
model = AutoModel(
model="paraformer-zh",
vad_model="fsmn-vad",
punc_model="ct-punc",
# spk_model="cam++", # Identification du locuteur facultative
)
res = model.generate(
input=f"{model.model_path}/example/asr_example.wav",
batch_size_s=300,
hotword='魔搭' # Mot-clé
)
print(res)
4. Reconnaissance en streaming
from funasr import AutoModel
import soundfile
import os
chunk_size = [0, 10, 5] # [0, 10, 5] configuration de latence 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)
Déploiement de services
FunASR prend en charge le déploiement de modèles pré-entraînés ou affinés pour des services. Actuellement, les types de déploiement de services suivants sont pris en charge :
Types de services pris en charge
- Service de transcription de fichiers hors ligne (chinois, version CPU)
- Service de transcription en temps réel (chinois, version CPU)
- Service de transcription de fichiers hors ligne (anglais, version CPU)
- Service de transcription de fichiers hors ligne (chinois, version GPU)
Recommandations de configuration de déploiement
Configurations recommandées :
- Configuration 1 : (Type de calcul X86) 4 cœurs vCPU, 8 Go de RAM, prend en charge environ 32 requêtes par machine
- Configuration 2 : (Type de calcul X86) 16 cœurs vCPU, 32 Go de RAM, prend en charge environ 64 requêtes par machine
Caractéristiques techniques
1. Innovation des modèles
- Architecture non autorégressive: Paraformer utilise une conception non autorégressive pour améliorer l'efficacité de l'inférence
- Mode 2Pass: Combine les avantages du streaming et du non-streaming
- Support des mots-clés (hotwords): Prend en charge les mots-clés personnalisés pour améliorer la précision de la reconnaissance de vocabulaire spécifique
2. Optimisation de l'ingénierie
- Exportation ONNX: Prend en charge l'exportation des modèles au format ONNX pour un déploiement facile
- Support multiplateforme: Prend en charge diverses plateformes telles que CPU, GPU, ARM64
- Déploiement conteneurisé: Fournit un support d'image Docker
3. Facilité de développement
- Interface unifiée: AutoModel unifie les interfaces d'inférence de ModelScope, Hugging Face et FunASR
- Conception modulaire (plug-in): Prend en charge la combinaison flexible de composants tels que VAD, ponctuation, locuteur
- Documentation riche: Fournit des tutoriels et des exemples détaillés
Scénarios d'application
1. Transcription vocale en temps réel
- Compte-rendus de réunions
- Sous-titres de diffusions en direct
- Assistants vocaux
2. Traitement audio hors ligne
- Transcription de fichiers audio
- Analyse de données vocales
- Modération de contenu
3. Support multilingue
- Reconnaissance vocale interlingue
- Traduction vocale
- Service client multilingue
Dernières mises à jour
Principales mises à jour en 2024
- 29/10/2024: Lancement du service de transcription en temps réel 1.12, le mode 2pass-offline prend en charge le modèle SenseVoice
- 10/10/2024: Ajout du support pour le modèle Whisper-large-v3-turbo
- 26/09/2024: Correction d'un problème de fuite de mémoire, support du modèle SenseVoice ONNX
- 04/07/2024: Lancement du modèle de base vocal SenseVoice
- 27/06/2024: Lancement du service de transcription de fichiers hors ligne GPU 1.0
Communauté et support
Licence open source
- Le projet utilise la licence MIT
- Les modèles pré-entraînés utilisent une licence de modèle spécifique
Participation communautaire
- GitHub Issues: Questions techniques et rapports de bugs
- Groupe DingTalk: Échanges et discussions quotidiens
- ModelScope: Téléchargement et partage de modèles
Citation
Si vous avez utilisé FunASR dans vos recherches, veuillez citer l'article suivant :
@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},
}
Résumé
FunASR est une boîte à outils de reconnaissance vocale complète et performante, qui réussit à combiner les technologies de pointe de la recherche académique avec les besoins pratiques des applications industrielles. Que ce soit pour les chercheurs validant des algorithmes ou les développeurs créant des applications vocales, FunASR offre un support technique puissant et une expérience de développement pratique. Grâce à sa riche bibliothèque de modèles pré-entraînés, ses solutions de déploiement flexibles et sa communauté open source active, FunASR est en train de devenir une infrastructure essentielle dans le domaine de la reconnaissance vocale.