FunASR:语音识别集成工具箱

       之前的工作主要是计算机视觉方向,大模型盛行下开始接触大语言模型和多模态模型,但是一直也没有机会接触语音识别方向的算法,比较好奇, 前两天刷到一个科普小视频提到FunASR这个开源工具,今天介绍一个语音识别领域的开源工具-FunASR。

GitHub

一、简介

       FunASR 是阿里巴巴达摩院开源的一款轻量级语音识别工具包,旨在为开发者提供高效、易用的语音处理解决方案。它集成了多种先进的语音识别技术和模型,支持语音识别(ASR)、语音端点检测(VAD)、标点恢复、语言模型、说话人验证、说话人分离和多人对话语音识别等功能;

二、功能实现

2.1 环境安装

2.1.1 依赖环境

# 依赖环境
python>=3.8
torch>=1.13
torchaudio

2.1.2 pip安装

pip3 install -U funasr
pip3 install -U modelscope huggingface huggingface_hub

2.2 功能实现

2.2.1 语音识别

  • 定义:将语音信号转换为文本的过程。
  • 目标:将人类语言的音频输入转化为可读的文本输出。
  • 应用场景:语音助手、字幕生成、会议记录等。
2.2.1.1 基于SenseVoice模型的语音识别
# 语音识别-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",
)

# en
res = model.generate(
    input="./gy.m4a",
    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)

参数: 

  • model_dir:模型名称,或本地磁盘中的模型路径;
  • vad_model:表示开启VAD,VAD的作用是将长音频切割成短音频,此时推理耗时包括了VAD与SenseVoice总耗时,为链路耗时,如果需要单独测试SenseVoice模型耗时,可以关闭VAD模型;
  • vad_kwargs:表示VAD模型配置,max_single_segment_time: 表示vad_model最大切割音频时长, 单位是毫秒ms;
  • use_itn:输出结果中是否包含标点与逆文本正则化;
  • batch_size_s: 表示采用动态batch,batch中总音频时长,单位为秒s;
  • merge_vad:是否将 vad 模型切割的短音频碎片合成,合并后长度为merge_length_s,单位为秒s;
  • ban_emo_unk:禁用emo_unk标签,禁用后所有的句子都会被赋与情感标签;

输出结果:

2.2.1.2  基于paraformer模型的语音识别
# 语音识别-paraformer
from funasr import AutoModel
# paraformer-zh is a multi-functional asr model
# use vad, punc, spk or not as you need
model = AutoModel(model="paraformer-zh",  vad_model="fsmn-vad", punc_model="ct-punc", 
                  # spk_model="cam++"
                  )
res = model.generate(input="./gy.m4a", 
            batch_size_s=300, 
            hotword='魔搭')
print(res)

输出结果:

       输出结果包含文件名、语音识别文本以及每个文本字符在音频中的时间跨度,单位毫秒;

 

2.2.2 语音端点检测 (VAD,Voice Activity Detection

  • 定义:检测语音信号中的有效语音片段,去除静音或背景噪声。
  • 目标:确定语音开始和结束的时间点。
  • 应用场景:优化语音识别性能、降低计算资源消耗。
 2.2.2.1 基于fsmn-vad模型的语音端点检测
# 语音端点检测-fsmn-vad
from funasr import AutoModel

model = AutoModel(model="fsmn-vad")

# wav_file = f"{model.model_path}/example/vad_example.wav"
wav_file = './gy.m4a'
res = model.generate(input=wav_file)
print(res)

输出结果:

       输出结果包含文件名和连续有效语音时间跨度时间戳,单位毫秒;

2.2.3 标点恢复 

  • 定义:在语音识别生成的文本中添加正确的标点符号。
  • 目标:提高文本的可读性和语义完整性。
  • 应用场景:自动生成带标点的会议记录、实时字幕。
2.2.3.1 基于ct-punc模型的标点补全
# 标点恢复-ct-punc
from funasr import AutoModel

model = AutoModel(model="ct-punc")

res = model.generate(input="势如破竹 三国末年 晋武帝司马炎夺取魏国政权后 准备出兵攻打吴国 可当时朝廷中许多大臣都认为吴国占据着长江天险 水军非常强大 应该等到有了足够的准备后再攻打吴国 可是大将杜禹却认为现在正是消灭吴国最好的时机 不能给他喘息的机会 于是 晋武帝向自己最信任的大臣张华征求了意见 张华听了 连忙说 理应尽快攻打吴果 以免留下后患 晋武帝闻言立即下令道 好 那便封杜誉为征南大将军 即刻攻打吴国 杜豫的军队十分勇勇猛 连续攻下吴国的江陵湘江直逼吴国国都建邺 晋武帝大月准备下令让杜豫从小路向吴国国都建业进发 可有些朝臣认为 如今长江水势大涨 恐怕会影响作战 不如先收兵等冬天再战 但是杜玉坚决反对退兵 他说 现在我们的军队势如破竹 斗志阵望 取得了一个又一个的胜利 只要一鼓作气就能攻破建业 果然正如杜豫所言 没过多久便攻占了建 业灭掉了吴国 帮助晋武帝完成了统一中原的大业")
print(res)

输出结果:

2.2.4 说话人验证(声纹识别)

  • 定义:验证某段语音是否属于特定说话人。
  • 目标:确认身份。
  • 应用场景:语音解锁、身份认证。
2.2.4.1 基于CAM++模型的声纹识别
# 说话人确认-CAM++
from modelscope.pipelines import pipeline
sv_pipeline = pipeline(
    task='speaker-verification',
    model='damo/speech_campplus_sv_zh-cn_16k-common',
    model_revision='v1.0.0'
)
speaker1_a_wav = 'https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?Revision=master&FilePath=examples/speaker1_a_cn_16k.wav'
speaker1_b_wav = 'https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?Revision=master&FilePath=examples/speaker1_b_cn_16k.wav'
speaker2_a_wav = 'https://modelscope.cn/api/v1/models/damo/speech_campplus_sv_zh-cn_16k-common/repo?Revision=master&FilePath=examples/speaker2_a_cn_16k.wav'

# 相同说话人语音
result = sv_pipeline([speaker1_a_wav, speaker1_b_wav])
print(result)

输出结果:

       输出结果包含相似度和识别结果;

三、总结

任务名称主要目标应用场景技术特点
ASR将语音转为文本字幕生成、语音助手声学模型+语言模型
VAD检测语音活动语音信号预处理时间域或频域特征分析
标点恢复添加标点符号自动化文本生成上下文语义理解
说话人验证确认语音归属身份认证声学特征提取+相似度比较

       FunASR工具箱包含了很多处理语音数据的深度学习模型集合,这里只是简单的呈现了部分功能,先Mark住,有需要的朋友也可以做更加深入的探索。 

### FunClip 在线使用教程及相关文档 FunClip 是一个开源项目,其核心代码库 `funclip` 包含多个子目录,例如 ASR(自动语音识别)和 Clipper(视频剪辑),这些模块共同实现了从音频到视频的一系列处理功能[^1]。该项目的启动文件位于 `funclip` 模块中的 `main.py` 文件,此文件负责初始化应用程序并提供用户界面进行交互[^3]。 以下是关于如何查找 FunClip 的在线使用教程或文档的一些指导: #### 官方文档与教程 官方提供了详细的 FunClip 开源项目使用教程,涵盖了目录结构、启动文件以及配置文件等内容[^2]。此外,还有一份专门针对 FunASR-APP 的使用指南,其中描述了如何运行程序及其主要功能。 #### 功能概述 根据已有的资料,FunClip 支持以下功能: - **语音识别 (ASR)**:能够将上传的音频转换成文字。 - **视频剪辑**:允许用户依据生成的文字内容对视频片段进行精确裁切。 - **字幕添加**:支持为裁剪后的视频附加对应的字幕说明。 具体的操作流程已被记录在一个直观的教学材料里,它引导使用者从文件上传开始直到完成字幕添加为止,每一步骤都被简化以便于理解执行[^4]。 #### 加速克隆方法 对于希望快速获取最新版本代码仓库的人士来说,可以通过启用网络加速来提升下载速度。建议按照下面给出的方法激活学术镜像服务以优化体验效果[^5]: ```bash source /etc/network_turbo ``` #### 推荐搜索方向 如果需要进一步了解具体的实施细节或者其他高级特性,则可以从以下几个方面着手探索更多相关内容: 1. 访问 GitHub 上由社区维护的正式存储库页面; 2. 查阅其他开发者分享的技术博客文章或者案例分析报告; 3. 参加围绕该主题举办的工作坊活动或是线上直播课程学习交流经验心得。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值