Sobre o projeto
SenseVoice é um modelo de fundação de fala com múltiplas capacidades de compreensão de fala: reconhecimento automático de fala (ASR), identificação de idioma falado (LID), reconhecimento de emoção na fala (SER) e detecção de eventos de áudio (AED).
Escopo do checkpoint disponibilizado: o SenseVoiceSmall suporta ASR e identificação de idioma para mandarim, cantonês, inglês, japonês e coreano, juntamente com rótulos de emoção e eventos de áudio. O trabalho de pesquisa mais amplo do SenseVoice relata treinamento com mais de 400.000 horas e suporte para mais de 50 idiomas, mas o pequeno checkpoint disponibilizado cobre os cinco idiomas acima. A diarização de locutores não é uma saída do próprio checkpoint; é um pipeline FunASR composto usando modelos separados FSMN-VAD e CAM++.
Destaques
- Transcrição rica: rótulos de reconhecimento de emoção e detecção de eventos sonoros para eventos como música de fundo, aplausos, risos, choro, tosse e espirros.
- Inferência eficiente: uma estrutura ponta a ponta não autorregressiva para inferência de baixa latência. Na configuração de benchmark do projeto, o SenseVoiceSmall é relatado como sendo mais de 5x mais rápido que o Whisper-Small e 15x mais rápido que o Whisper-Large com contagem de parâmetros semelhante.
- Scripts e estratégias de ajuste fino para adaptação a dados de cauda longa.
- Pipeline de implantação de serviço com suporte a solicitações multicorrentes, com linguagens no lado do cliente incluindo Python, C++, HTML, Java e C#.
Uso
Instale as dependências com pip install -r requirements.txt. Os exemplos e o caminho de diarização composto exigem funasr>=1.3.26 (o caminho de implantação atual recomenda funasr==1.4.14).
A inferência básica usa o AutoModel do FunASR com o modelo iic/SenseVoiceSmall, segmentação opcional por FSMN-VAD para áudio longo, seleção de idioma (auto, zh, en, yue, ja, ko, nospeech), normalização inversa de texto, agrupamento dinâmico e mesclagem de VAD. Um auxiliar rich_transcription_postprocess formata a saída bruta.
Áudio longo sem VAD: passar uma forma de onda de uma hora para uma única chamada generate pode aumentar a memória do codificador muito além do tamanho do áudio. O script long_audio_no_vad.py decodifica via ffmpeg e executa o SenseVoice em janelas fixas de 30 segundos com 2 segundos de sobreposição, mantendo as saídas brutas dos segmentos em um arquivo JSONL. Os deslocamentos das janelas descrevem os limites de entrada, não os timestamps das palavras, e limites fixos ainda podem afetar o reconhecimento ao redor de um corte.
Diarização de locutores: composta por meio do FunASR com FSMN-VAD, rótulos de locutor CAM++ e um modelo de pontuação. Os rótulos de locutor são agrupamentos anônimos, não identidades pessoais reconhecidas. Com output_timestamp=True, os timestamps são pares [start_ms, end_ms] alinhados um a um com as palavras.
Exportação e implantação em borda: os caminhos de exportação ONNX e Libtorch estão documentados, e um runtime llama.cpp/GGUF permite executar o SenseVoice como um binário autossuficiente com FSMN-VAD embutido e sem Python em tempo de execução, voltado para CPUs e dispositivos de borda.
Serviço e contêineres: uma implantação FastAPI escuta na porta 50000, e arquivos Docker/Docker Compose suportam execuções em CPU e GPU com um volume de cache de modelo.
Ajuste fino: a preparação de dados usa registros JSONL com campos key, source, target, language, emotion e event; comandos auxiliares convertem arquivos wav.scp e text em JSONL de treino/validação. Os rótulos de emoção incluem HAPPY, SAD, ANGRY, NEUTRAL, FEARFUL, DISGUSTED e SURPRISED; os rótulos de evento incluem BGM, Speech, Applause, Laughter, Cry, Sneeze, Breath e Cough. Um script finetune.sh e uma demonstração webui.py são fornecidos.
Benchmarks: o projeto compara ASR multilíngue contra o Whisper em AISHELL-1, AISHELL-2, Wenetspeech, LibriSpeech e Common Voice, relatando vantagens para o reconhecimento de chinês e cantonês. Para reconhecimento de emoção, relata resultados zero-shot competitivos em conjuntos de teste em chinês e inglês, com um contrato de avaliação SER reproduzível. Para detecção de eventos de áudio, compara com BEATS e PANN em ESC-50, observando lacunas em relação a modelos especializados em AED.
Ecossistema: o SenseVoice faz parte da família FunAudioLLM, juntamente com FunASR, Fun-ASR e CosyVoice. Integrações de terceiros incluem implantação com Triton/TensorRT, sherpa-onnx (com suporte a várias linguagens de programação e plataformas como iOS, Android e Raspberry Pi), SenseVoice.cpp, streaming-sensevoice, OmniSenseVoice e variantes com aprimoramento de hotword.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.