Um kit de ferramentas de reconhecimento de fala de ponta a ponta baseado no ModelScope, que suporta reconhecimento de fala, detecção de atividade de voz, restauração de pontuação e outras funções.
FunASR - Kit de Ferramentas Fundamental de Reconhecimento de Fala Ponta a Ponta
Visão Geral do Projeto
FunASR é um kit de ferramentas fundamental de reconhecimento de fala que oferece diversas funcionalidades, incluindo Reconhecimento Automático de Fala (ASR), Detecção de Atividade de Voz (VAD), Restauração de Pontuação, Modelos de Linguagem, Verificação de Locutor, Separação de Locutor e ASR para Múltiplos Locutores. Este projeto foi desenvolvido pelo Alibaba DAMO Academy com o objetivo de construir uma ponte entre a pesquisa acadêmica e as aplicações industriais.
Endereço do Projeto: https://github.com/modelscope/FunASR
Principais Características
1. Processamento de Fala Multifuncional
- Reconhecimento de Fala (ASR): Suporta reconhecimento em fluxo (streaming) e não em fluxo (non-streaming)
- Detecção de Atividade de Voz (VAD): Detecta segmentos de atividade de voz
- Restauração de Pontuação: Adiciona automaticamente sinais de pontuação
- Identificação de Locutor: Suporta verificação e separação de locutor
- Reconhecimento de Emoções: Análise de emoções na fala
- Detecção de Palavras-chave: Suporta ativação por palavras-chave
2. Biblioteca de Modelos Pré-treinados
FunASR publicou uma vasta quantidade de modelos pré-treinados de nível acadêmico e industrial no ModelScope e Hugging Face, incluindo principalmente:
Nome do Modelo | Descrição da Função | Dados de Treinamento | Número de Parâmetros |
---|---|---|---|
SenseVoiceSmall | Capacidade de compreensão de múltiplas vozes, incluindo ASR, ITN, LID, SER e AED | 300 mil horas | 234M |
paraformer-zh | Reconhecimento de fala em chinês, com timestamp, não em fluxo | 60 mil horas, chinês | 220M |
paraformer-zh-streaming | Reconhecimento de fala em chinês, em fluxo | 60 mil horas, chinês | 220M |
paraformer-en | Reconhecimento de fala em inglês, não em fluxo | 50 mil horas, inglês | 220M |
ct-punc | Restauração de pontuação | 100 milhões de entradas, chinês e inglês | 290M |
fsmn-vad | Detecção de atividade de voz | 5000 horas, chinês e inglês | 0.4M |
Whisper-large-v3 | Reconhecimento de fala multilíngue | Multilíngue | 1550M |
3. Introdução aos Modelos Principais
Paraformer
Paraformer-large é um modelo de reconhecimento de fala ponta a ponta não autorregressivo, que oferece vantagens como alta precisão, alta eficiência e fácil implantação, suportando a construção rápida de serviços de reconhecimento de fala.
SenseVoice
SenseVoice é um modelo base de fala com diversas capacidades de compreensão de voz, incluindo ASR, LID, SER e AED, suportando múltiplos idiomas como chinês, cantonês, inglês, japonês e coreano.
Instalação e Uso
Métodos de Instalação
Instalação via pip
pip3 install -U funasr
Instalação a partir do código-fonte
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
Instalação do suporte à biblioteca de modelos (opcional)
pip3 install -U modelscope huggingface_hub
Início Rápido
1. Uso via linha de comando
funasr ++model=paraformer-zh ++vad_model="fsmn-vad" ++punc_model="ct-punc" ++input=asr_example_zh.wav
2. API 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",
)
# Reconhecimento em 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 Python - Modelo Paraformer
from funasr import AutoModel
# paraformer-zh é um modelo ASR multifuncional
model = AutoModel(
model="paraformer-zh",
vad_model="fsmn-vad",
punc_model="ct-punc",
# spk_model="cam++", # Reconhecimento de locutor opcional
)
res = model.generate(
input=f"{model.model_path}/example/asr_example.wav",
batch_size_s=300,
hotword='魔搭' # Palavra-chave
)
print(res)
4. Reconhecimento em Fluxo (Streaming)
from funasr import AutoModel
import soundfile
import os
chunk_size = [0, 10, 5] # [0, 10, 5] configuração de latência 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)
Implantação de Serviço
FunASR suporta a implantação de modelos pré-treinados ou ajustados para serviços, e atualmente suporta os seguintes tipos de implantação de serviço:
Tipos de Serviço Suportados
- Serviço de Transcrição de Arquivos Offline (Chinês, Versão CPU)
- Serviço de Transcrição em Tempo Real (Chinês, Versão CPU)
- Serviço de Transcrição de Arquivos Offline (Inglês, Versão CPU)
- Serviço de Transcrição de Arquivos Offline (Chinês, Versão GPU)
Recomendações de Configuração para Implantação
Configurações recomendadas:
- Configuração 1: (Tipo de computação X86) 4 vCPUs, 8GB de RAM, uma única máquina suporta aproximadamente 32 requisições
- Configuração 2: (Tipo de computação X86) 16 vCPUs, 32GB de RAM, uma única máquina suporta aproximadamente 64 requisições
Características Técnicas
1. Inovação de Modelo
- Arquitetura Não Autorregressiva: Paraformer adota um design não autorregressivo para melhorar a eficiência da inferência
- Modo 2Pass: Combina as vantagens dos modos em fluxo e não em fluxo
- Suporte a Palavras-chave (Hotwords): Suporta palavras-chave personalizadas para melhorar a precisão do reconhecimento de vocabulário específico
2. Otimização de Engenharia
- Exportação ONNX: Suporta a exportação de modelos no formato ONNX para facilitar a implantação
- Suporte Multiplataforma: Suporta diversas plataformas como CPU, GPU, ARM64
- Implantação em Contêineres: Oferece suporte a imagens Docker
3. Amigável ao Desenvolvedor
- Interface Unificada: AutoModel unifica as interfaces de inferência do ModelScope, Hugging Face e FunASR
- Design Modular (Plug-in): Suporta a combinação flexível de componentes como VAD, pontuação e locutor
- Documentação Abrangente: Fornece tutoriais e exemplos detalhados
Cenários de Aplicação
1. Transcrição de Fala em Tempo Real
- Atas de reunião
- Legendas de transmissões ao vivo
- Assistentes de voz
2. Processamento de Áudio Offline
- Transcrição de arquivos de áudio
- Análise de dados de fala
- Moderação de conteúdo
3. Suporte Multilíngue
- Reconhecimento de fala interlinguístico
- Tradução de fala
- Atendimento ao cliente multilíngue
Últimas Atualizações
Principais Atualizações de 2024
- 29/10/2024: Lançamento do Serviço de Transcrição em Tempo Real 1.12, modo 2pass-offline suporta o modelo SenseVoice
- 10/10/2024: Adicionado suporte ao modelo Whisper-large-v3-turbo
- 26/09/2024: Corrigido problema de vazamento de memória, suporte ao modelo SenseVoice ONNX
- 04/07/2024: Lançamento do modelo base de fala SenseVoice
- 27/06/2024: Lançamento do Serviço de Transcrição de Arquivos Offline GPU 1.0
Comunidade e Suporte
Licença de Código Aberto
- O projeto adota a Licença MIT
- Os modelos pré-treinados utilizam um acordo de licença de modelo específico
Participação na Comunidade
- GitHub Issues: Problemas técnicos e feedback de bugs
- Grupo DingTalk: Comunicação e discussão diárias
- ModelScope: Download e compartilhamento de modelos
Citação
Se você utilizou FunASR em sua pesquisa, por favor, cite o seguinte artigo:
@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},
}
Conclusão
FunASR é um kit de ferramentas de reconhecimento de fala completo e de excelente desempenho, que combina com sucesso as tecnologias de ponta da pesquisa acadêmica com as necessidades práticas das aplicações industriais. Seja para pesquisadores que realizam validação de algoritmos ou para desenvolvedores que constroem aplicações de fala, o FunASR oferece um suporte técnico robusto e uma experiência de desenvolvimento conveniente. Através de sua rica biblioteca de modelos pré-treinados, soluções de implantação flexíveis e uma comunidade de código aberto ativa, o FunASR está se tornando uma infraestrutura importante no campo do reconhecimento de fala.