FunASR:阿里巴巴开源语音识别工具包及部署教程
FunASR 是阿里巴巴达摩院开源的语音识别工具包,支持 ASR、VAD、标点恢复等功能。本文介绍其核心功能、安装方法及非实时/实时识别、VAD、标点恢复、时间戳预测和情感识别的运行示例,帮助用户快速部署语音识别服务。文章还补充了部署建议与最佳实践,涵盖硬件资源、模型选择、缓存机制及热词增强等关键要点。

FunASR 是阿里巴巴达摩院开源的语音识别工具包,支持 ASR、VAD、标点恢复等功能。本文介绍其核心功能、安装方法及非实时/实时识别、VAD、标点恢复、时间戳预测和情感识别的运行示例,帮助用户快速部署语音识别服务。文章还补充了部署建议与最佳实践,涵盖硬件资源、模型选择、缓存机制及热词增强等关键要点。

FunASR 是由阿里巴巴达摩院开源的语音识别工具包,旨在帮助研究人员和开发者更高效地进行语音识别模型的研究和生产。它支持多种功能,如语音识别(ASR)、语音活动检测(VAD)、标点恢复、说话人验证和多人对话语音识别等。FunASR 提供了便捷的脚本和教程,支持预训练模型的推理与微调,使用户能够快速部署语音识别服务。
该工具包基于 ModelScope 生态,集成了多种先进的模型架构,如 Paraformer、Tri-Branch 等,支持流式与非流式处理,适用于实时通话、会议记录、客服质检等多种业务场景。
确保已安装以下依赖环境:
python>=3.8
torch>=1.13
torchaudio
使用 pip 安装:
pip3 install -U funasr
或者从源代码安装:
git clone https://github.com/alibaba/FunASR.git && cd FunASR
pip3 install -e ./
如果需要使用工业预训练模型,安装 modelscope 与 huggingface_hub(可选):
pip3 install -U modelscope huggingface huggingface_hub
使用 Paraformer 模型进行语音识别,支持批量处理:
from funasr import AutoModel
model = AutoModel(model="paraformer-zh", vad_model="fsmn-vad", punc_model="ct-punc")
res = model.generate(input=f"{model.model_path}/example/asr_example.wav", batch_size_s=300, hotword='魔搭')
print(res)
此模式适合离线文件处理,通过设置 batch_size_s 可以优化吞吐量。
使用 Paraformer 模型进行实时语音识别,支持流式输入:
from funasr import AutoModel
chunk_size = [0, 10, 5] # 600ms
encoder_chunk_look_back = 4
decoder_chunk_look_back = 1
model = AutoModel(model="paraformer-zh-streaming")
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 # 600ms
cache = {}
total_chunk_num = int(len(speech) / 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)
注意:代码中修复了原列表长度计算逻辑错误,确保分块正确。
使用 fsmn-vad 模型进行语音端点检测:
from funasr import AutoModel
model = AutoModel(model="fsmn-vad")
wav_file = f"{model.model_path}/example/vad_example.wav"
res = model.generate(input=wav_file)
print(res)
VAD 模型将返回音频中有效语音段的起始和结束时间,格式如下:
[[beg1, end1], [beg2, end2], ..., [begN, endN]]
其中 begN 和 endN 以毫秒为单位。这有助于裁剪音频数据,减少无效计算。
使用 ct-punc 模型进行标点恢复:
from funasr import AutoModel
model = AutoModel(model="ct-punc")
res = model.generate(input="那今天的会就到这里吧 happy new year 明年见")
print(res)
该模型会自动在转录文本中添加合适的标点符号,提升文本的可读性,特别适用于长句分割。
使用 fa-zh 模型进行时间戳预测:
from funasr import AutoModel
model = AutoModel(model="fa-zh")
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)
该模型将为输入的音频和文本生成时间戳信息,实现音文对齐。
使用 emotion2vec_plus_large 模型进行情感识别:
from funasr import AutoModel
model = AutoModel(model="emotion2vec_plus_large")
wav_file = f"{model.model_path}/example/test.wav"
res = model.generate(wav_file, output_dir="./outputs", granularity="utterance", extract_embedding=False)
print(res)
该模型将返回音频中情感类别的预测结果,如'生气/angry','开心/happy','中立/neutral','难过/sad'。
在实际生产环境中部署 FunASR 时,建议关注以下几点:
cache 参数保存中间状态,避免重复计算,降低延迟。hotword 参数注入热词,提升专有名词识别率。FunASR 作为一个功能全面的语音识别工具包,极大地降低了语音 AI 技术的应用门槛。通过其提供的丰富预训练模型和简洁 API,开发者可以快速构建包含识别、检测、标点、情感分析等能力的完整语音处理流水线。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online