网站首页 > 技术文章 正文
这是我的第393篇原创文章。
一、引言
今天给大家分享阿里达摩院在语音识别领域开源的大杀器FunASR项目;它支持语音识别、端点检测、标点符合预测、多说话人分离等亮点功能,在中文语音识别方面比OpenAI开源的Whisper模型更小,更准!
FunASR是一个基础的端到端语音识别工具包,旨在架起语音识别学术研究和工业应用之间的桥梁。它支持工业级语音识别模型的训练和微调,方便研究人员和开发者更便捷地进行语音识别模型的研究和生产,促进语音识别生态的发展。其目标是让语音识别变得更有趣(ASR for Fun)!FunASR 提供了语音识别 (ASR)、语音活动检测 (VAD)、标点恢复、语言模型、说话人识别、说话人分段以及多说话人 ASR 等多种功能。并提供方便的脚本和教程,支持预训练模型的推理和微调。
Github仓库:
https://github.com/modelscope/FunASR
二、实现过程
2.1 准备音频素材
使用edge-tts命令将一段文字转化为语音并生成.wav语音文件:
edge-tts --voice zh-CN-YunyangNeural --text "曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。如果非要在这份爱上加上一个期限,我希望是……一万年" --write-media speaker2.wav
结果:
speaker2,数据杂坛,20秒
语音文件加载读取:
speaker2_wav = "speaker2.wav"
waveform, sample_rate = torchaudio.load(speaker2_wav)
Audio(waveform, rate=sample_rate, autoplay=True)
2.2利用paraformer-zh-语音文字识别
代码:
model = AutoModel(model="paraformer-zh")
res = model.generate(input=speaker2_wav)
print("识别出的结果:", res[0]['text'])
model = AutoModel(model="paraformer-zh")这句代码会在线下载模型,默认路径是C:\User\quwen\.cache\modelscope\hub
模型文件如下:
结果:
2.3 利用fsmn_vad_zh来-语音结束点识别
代码:
model=AutoModel(model="fsmn-vad")
res=model.generate(input=speaker2_wav)
print(res)
model = AutoModel(model="fsmn-vad")这句代码会在线下载模型,默认路径是C:\User\quwen\.cache\modelscope\hub
模型文件如下:
2.4 利用ct-punc-对语音识别文本进行标点符号预测
代码:
model = AutoModel(model="ct-punc")
res = model.generate(input="曾 经 有 一 份 真 诚 的 爱 情 放 在 我 面 前 我 没 有 珍 惜 等 我 失 去 的 时 候 我 才 后 悔 莫 及 人 世 间 最 痛 苦 的 是 莫 过 于 此 如 果 上 天 能 够 给 我 一 个 再 来 一 次 的 机 会 我 会 对 那 个 女 孩 子 说 三 个 字 我 爱 你 如 果 非 要 在 这 份 爱 上 加 上 一 个 期 限 我 希 望 是 一 万 年")
print(res)
model = AutoModel(model="ct-punc")这句代码会在线下载模型,默认路径是C:\User\quwen\.cache\modelscope\hub
模型文件如下:
2.5 利用cam++对语音中说话人身份识别
代码:
model = AutoModel(model="cam++")
res = model.generate(input=speaker2_wav)
print(res)
model = AutoModel(model="cam++")这句代码会在线下载模型,默认路径是C:\User\quwen\.cache\modelscope\hub
模型文件如下:
2.6 对多说话人进行语音识别
代码:
speaker1_wav = ("E:\data\\a2.wav")
waveform, sample_rate = torchaudio.load(speaker1_wav)
Audio(waveform, rate=sample_rate, autoplay=True)
funasr_model = AutoModel(model="C:\\Users\quwen\.cache\modelscope\hub\iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",
vad_model="C:\\Users\quwen\.cache\modelscope\hub\iic/speech_fsmn_vad_zh-cn-16k-common-pytorch",
punc_model="C:\\Users\quwen\.cache\modelscope\hub\iic\punc_ct-transformer_cn-en-common-vocab471067-large",
spk_model="C:\\Users\quwen\.cache\modelscope\hub\iic/speech_campplus_sv_zh-cn_16k-common", )
res = funasr_model.generate(input=speaker1_wav, batch_size_s=300)
print(res)
print(type(res))
conv = ''
sentence_info = res[0]['sentence_info']
for sentence in sentence_info:
conv = conv + f"spk {sentence['spk']} : {sentence['text']}\n"
print(conv)
结果:
2.7 热词功能
代码:
speaker1_wav = ("E:\data\\a2.wav")
waveform, sample_rate = torchaudio.load(speaker1_wav)
Audio(waveform, rate=sample_rate, autoplay=True)
funasr_model = AutoModel(model="C:\\Users\quwen\.cache\modelscope\hub\iic/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch",
vad_model="C:\\Users\quwen\.cache\modelscope\hub\iic/speech_fsmn_vad_zh-cn-16k-common-pytorch",
punc_model="C:\\Users\quwen\.cache\modelscope\hub\iic\punc_ct-transformer_cn-en-common-vocab471067-large",
spk_model="C:\\Users\quwen\.cache\modelscope\hub\iic/speech_campplus_sv_zh-cn_16k-common", )
res = funasr_model.generate(input=speaker1_wav,
batch_size_s=300,
hotword='苏珊银行')
print(res)
print(type(res))
conv = ''
sentence_info = res[0]['sentence_info']
for sentence in sentence_info:
conv = conv + f"spk {sentence['spk']} : {sentence['text']}\n"
print(conv)
结果:
作者简介: 读研期间发表6篇SCI数据算法相关论文,目前在某研究院从事数据算法相关研究工作,结合自身科研实践经历持续分享关于Python、数据分析、特征工程、机器学习、深度学习、人工智能系列基础知识与案例。关注gzh:数据杂坛,获取数据和源码学习更多内容。
原文链接:
猜你喜欢
- 2025-04-27 Python实现语音识别与人脸识别技术结合,打造高效安全门禁系统。
- 2025-04-27 Python实现变声器功能,萝莉音御姐音都有的哦
- 2025-04-27 python让你的文字会说话
- 2025-04-27 python将文本转化为语音 pyttsx3 详解
- 2025-04-27 Python爬虫--喜马拉雅三国音频爬取
- 2025-04-27 python实现用语音识别打开windows应用,调节亮度,声音很简单的
- 2025-04-27 这一款极好:轻松用Python完成文字转语音
- 2025-04-27 使用Google Speech API在Python中进行语音识别
- 2025-04-27 开源人声分离音频标注工具—基于Python
- 2025-04-27 机器学习中的音频特征:理解Mel频谱图
- 263℃Python短文,Python中的嵌套条件语句(六)
- 263℃python笔记:for循环嵌套。end=""的作用,图形打印
- 261℃PythonNet:实现Python与.Net代码相互调用!
- 256℃Python实现字符串小写转大写并写入文件
- 255℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 116℃原来2025是完美的平方年,一起探索六种平方的算吧
- 96℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 89℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)