license: other
license_name: model-license
license_link: https://github.com/alibaba-damo-academy/FunASR/blob/main
tasks:
- 语音活动检测
pipeline_tag: 语音活动检测
FunASR:端到端语音识别基础工具包

FunASR致力于搭建语音识别领域学术研究与工业应用的桥梁。通过支持工业级语音识别模型的训练与微调,研究者与开发者可更便捷地进行语音识别模型的研究与生产,推动语音识别生态发展。让语音识别更有趣!
核心亮点 | 最新动态 | 安装指南 | 快速开始 | 运行时部署 | 模型库 | 联系我们
核心亮点
- FunASR作为基础语音识别工具包,提供语音识别(ASR)、语音活动检测(VAD)、标点恢复、语言模型、说话人验证、说话人日志及多说话人ASR等全栈功能,配套便捷脚本与教程,支持预训练模型的推理与微调
- 我们在ModelScope与huggingface开源了大量学术与工业级预训练模型,可通过模型库获取。代表性模型Paraformer-large作为非自回归端到端语音识别模型,兼具高精度、高效率与易部署优势,支持快速构建语音识别服务。服务部署详情请参阅部署文档
安装指南
pip3 install -U funasr
或从源码安装
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
安装ModelScope用于预训练模型(可选)
pip3 install -U modelscope
模型库
FunASR基于工业数据开源了大量预训练模型,您可依据模型许可协议自由使用、复制、修改和分享。以下为代表性模型,完整列表请参见模型库
(注:🤗代表Huggingface模型库链接,⭐代表ModelScope模型库链接)
模型名称 |
任务详情 |
训练数据 |
参数量 |
paraformer-zh (⭐ 🤗 ) |
语音识别(带时间戳,非流式) |
6万小时,中文普通话 |
220M |
paraformer-zh-streaming ( ⭐ 🤗 ) |
流式语音识别 |
6万小时,中文普通话 |
220M |
paraformer-en ( ⭐ 🤗 ) |
语音识别(带时间戳,非流式) |
5万小时,英语 |
220M |
conformer-en ( ⭐ 🤗 ) |
非流式语音识别 |
5万小时,英语 |
220M |
ct-punc ( ⭐ 🤗 ) |
标点恢复 |
1亿条,中英文混合文本 |
1.1G |
fsmn-vad ( ⭐ 🤗 ) |
语音活动检测 |
5000小时,中英文混合语音 |
0.4M |
fa-zh ( ⭐ 🤗 ) |
时间戳预测 |
5000小时,中文普通话 |
38M |
cam++ ( ⭐ 🤗 ) |
说话人验证/日志化 |
5000小时 |
7.2M |
快速开始
以下为快速入门教程。测试音频文件(中文、英文)。
命令行使用
funasr +model=paraformer-zh +vad_model="fsmn-vad" +punc_model="ct-punc" +input=asr_example_zh.wav
注:支持单音频文件识别,也支持Kaldi格式的wav.scp文件列表:wav_id wav_path
语音识别(非流式)
from funasr import AutoModel
model = AutoModel(model="paraformer-zh", model_revision="v2.0.4",
vad_model="fsmn-vad", vad_model_revision="v2.0.4",
punc_model="ct-punc-c", punc_model_revision="v2.0.4",
)
res = model.generate(input=f"{model.model_path}/example/asr_example.wav",
batch_size_s=300,
hotword='魔搭')
print(res)
注:model_hub
表示模型仓库,ms
选择ModelScope下载,hf
选择Huggingface下载。
语音识别(流式)
from funasr import AutoModel
chunk_size = [0, 10, 5]
encoder_chunk_look_back = 4
decoder_chunk_look_back = 1
model = AutoModel(model="paraformer-zh-streaming", model_revision="v2.0.4")
import soundfile
import os
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
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)
注:chunk_size
为流式延迟配置。[0,10,5]
表示实时显示粒度为10*60=600ms
,前瞻信息为5*60=300ms
。每次推理输入为600ms
(采样点数为16000*0.6=960
),输出为对应文本。最后一段语音输入需设置is_final=True
强制输出末尾文字。
语音活动检测(非流式)
from funasr import AutoModel
model = AutoModel(model="fsmn-vad", model_revision="v2.0.4")
wav_file = f"{model.model_path}/example/asr_example.wav"
res = model.generate(input=wav_file)
print(res)
语音活动检测(流式)
from funasr import AutoModel
chunk_size = 200
model = AutoModel(model="fsmn-vad", model_revision="v2.0.4")
import soundfile
wav_file = f"{model.model_path}/example/vad_example.wav"
speech, sample_rate = soundfile.read(wav_file)
chunk_stride = int(chunk_size * sample_rate / 1000)
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)
if len(res[0]["value"]):
print(res)
标点恢复
from funasr import AutoModel
model = AutoModel(model="ct-punc", model_revision="v2.0.4")
res = model.generate(input="那今天的会就到这里吧 happy new year 明年见")
print(res)
时间戳预测
from funasr import AutoModel
model = AutoModel(model="fa-zh", model_revision="v2.0.4")
wav_file = f"{model.model_path}/example/asr_example.wav"
text_file = f"{model.model_path}/example/text.txt"
res = model.generate(input=(wav_file, text_file), data_type=("sound", "text"))
print(res)
更多示例参考文档