深度学习应用-WeNet语音识别实战01

这篇具有很好参考价值的文章主要介绍了深度学习应用-WeNet语音识别实战01。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概括

        本文对WeNet声音识别网络的Python API上介绍的Non-Streaming Usage和 Streaming-Usage分别做了测试,两者本质相同。API对应采样的声音帧率、声道都做了限制。效果还可以,但是部分吐字不清晰、有歧义的地方仍然不能识别清晰。

项目地址:

GitHub - wenet-e2e/wenet: Production First and Production Ready End-to-End Speech Recognition Toolkit

安装:

pip3 install wenetruntime

根据项目要求,python版本必须3.6+,这里为3.8.3, 因此没有问题

应用案例:

官方文档上分为非流式和流式两种,本次先演示非流式应用:

非流式:

第一步:压缩wav文件,根据测试,api使用wave库打开文件。且仅支持单声道、固定帧率。

import wave
with wave.open(wav_file, 'rb') as fin:
    assert fin.getnchannels() == 1
    assert fin.getsampwidth() == 2
    assert fin.getframerate() == 16000

第二步:我准备用来识别的《起风了》wav格式显然不符合要求,使用pydub来压缩帧率、合并为单声道。同时,文件太长也不行。例如全歌一起识别会报错,因此我这里切割,每次取十分之一的歌词内容(约28秒的内容)

# 压缩文件
from pydub import AudioSegment
sound = AudioSegment.from_wav("/root/jupyterprojects/data/起风了.wav")

# 双声道变为单声道
sound = sound.set_channels(1)

# 压缩帧率
sound = sound.set_frame_rate(16000)

# 长度太长了可能会塞爆,每次取十分之一
musicLen = len(sound) 
unitLen = musicLen / 10

for i in range(10):
    _sound = sound[unitLen*i:unitLen*(i+1)]
    _sound.export("/root/jupyterprojects/data/起风了-sub%s.wav" % i, format="wav")

第三步:加载模型、识别。如果不提供model_dir参数,则默认会从github上下载。包比较大,建议提前下载好。

import sys
import torch
import wenetruntime as wenet
# 下载https://github.com/wenet-e2e/wenet/releases/download/v2.0.1/chs.tar.gz
# 并解压缩到/root/.wenet/chs目录下
decoder = wenet.Decoder(model_dir="/root/.wenet/chs/chs/",lang='chs')

第四步:识别。

decoder.decode_wav函数返回一个可以转换为字典的字符串。

import glob
files = glob.glob("/root/jupyterprojects/data/起风了-sub?.wav")
for idx,file in enumerate(files):
    ans=eval(decoder.decode_wav(file))
    print(idx,": ", ans["nbest"][0]["sentence"])

深度学习应用-WeNet语音识别实战01,Python,深度学习应用,语音识别,人工智能

 正确的歌词:

我曾将青春翻涌成她
也曾指尖弹出盛夏
心之所动 且就随缘去吧

这一路上走走停停
顺着少年漂流的痕迹
迈出车站的前一刻
竟有些犹豫
不禁笑这近乡情怯
仍无可避免
而长野的天
依旧那么暖
风吹起了从前
从前初识这世间

万般流连
看着天边似在眼前
也甘愿赴汤蹈火去走它一遍
如今走过这世间
万般流连
翻过岁月不同侧脸
措不及防闯入你的笑颜
我曾难自拔于世界之大
也沉溺于其中梦话
不得真假 不做挣扎 不惧笑话
我曾将青春翻涌成她
也曾指尖弹出盛夏
心之所动 且就随缘去吧
逆着光行走 任风吹雨打
短短的路走走停停
也有了几分的距离
不知抚摸的是故事 还是段心情
也许期待的不过是 与时间为敌
再次看到你
微凉晨光里
笑得很甜蜜
从前初识这世间
万般流连
看着天边似在眼前
也甘愿赴汤蹈火去走它一遍
如今走过这世间
万般流连
翻过岁月不同侧脸
措不及防闯入你的笑颜
我曾难自拔于世界之大
也沉溺于其中梦话
不得真假 不做挣扎 不惧笑话
我曾将青春翻涌成她
也曾指尖弹出盛夏
心之所动 且就随缘去吧
晚风吹起你鬓间的白发
抚平回忆留下的疤
你的眼中 明暗交杂 一笑生花
暮色遮住你蹒跚的步伐
走进床头藏起的画
画中的你 低着头说话
我仍感叹于世界之大
也沉醉于儿时情话
不剩真假 不做挣扎 无谓笑话
我终将青春还给了她
连同指尖弹出的盛夏
心之所动 就随风去了
以爱之名 你还愿意吗

其实还可以,有些歌词吐字本身就不是很清晰。

流式应用(Streaming Usage)

这是官方文档给出的应用案例,看起来我这里的切割歌曲法并没有什么异同,略。

import sys
import torch
import wave
import wenetruntime as wenet

test_wav = sys.argv[1]

with wave.open(test_wav, 'rb') as fin:
    assert fin.getnchannels() == 1
    wav = fin.readframes(fin.getnframes())

decoder = wenet.Decoder(lang='chs')
# We suppose the wav is 16k, 16bits, and decode every 0.5 seconds
interval = int(0.5 * 16000) * 2
for i in range(0, len(wav), interval):
    last = False if i + interval < len(wav) else True
    chunk_wav = wav[i: min(i + interval, len(wav))]
    ans = decoder.decode(chunk_wav, last)
    print(ans)

为了确定两者本质没有区别,这里查看API源代码. 可以看到decode_wav 就是相当于帮你用wave库打开wav文件并传递给decode方法。

深度学习应用-WeNet语音识别实战01,Python,深度学习应用,语音识别,人工智能

 文章来源地址https://www.toymoban.com/news/detail-518780.html

到了这里,关于深度学习应用-WeNet语音识别实战01的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【语音识别】WeNet:面向工业落地的E2E语音识别工具

    1、参考资料 wenet-e2e/wenet Mozilla DeepSpeech yeyupiaoling/PaddlePaddle-DeepSpeech 2、快速搭建WeNet平台 参考 WeNet中文文档 下载官方提供的预训练模型,并启动 docker 服务,加载模型,提供 websocket 协议的语音识别服务。 Note : 这里的 $PWD = \\\"/home/wenet/model\\\" 。 一定要保证 预训练模型文件 的存

    2024年02月06日
    浏览(46)
  • 基于百度语音识别API智能语音识别和字幕推荐系统——深度学习算法应用(含全部工程源码)+测试数据集

    本项目基于百度语音识别API,结合了语音识别、视频转换音频识别以及语句停顿分割识别等多种技术,从而实现了高效的视频字幕生成。 首先,我们采用百度语音识别API,通过对语音内容进行分析,将音频转换成文本。这个步骤使得我们能够从语音中提取出有意义的文本信息

    2024年02月13日
    浏览(57)
  • libtorch+GPU部署wenet语音识别(gRPC通信)

    业务App中部分功能需要通过ASR识别5-7秒的语音命令,App本身不支持流式协议,需录音完成后传输至服务端进行识别及后续的NLP。 根据实际情况仅对语音模型进行增强,使用libtorch+GPU方式部署,gRPC方式调用,由于并发不大,使用flask+gunicorn部署API。 拉取 nvidia官方的cuda11.3 run

    2024年02月10日
    浏览(35)
  • Python吴恩达深度学习作业24 -- 语音识别关键字

    在本周的视频中,你学习了如何将深度学习应用于语音识别。在此作业中,你将构建语音数据集并实现用于检测(有时也称为唤醒词或触发词检测)的算法。识别是一项技术,可让诸如Amazon Alexa,Google Home,Apple Siri和Baidu DuerOS之类的设备在听到某个特定单词时回

    2024年02月11日
    浏览(48)
  • 基于Python+百度语音的智能语音ChatGPT聊天机器人(机器学习+深度学习+语义识别)含全部工程源码 适合个人二次开发

    本项目基于机器学习和语义识别技术,让机器人理解文本并进行合适的答复。伙伴们可以通过该工程源码,进行个人二次开发,比如使用语音与机器人交流,实现智能问答、智能音箱及智能机器宠物等等。 当然针对现在最火爆的 ChatGPT等通用大语言模型 ,伙伴们可以直接将其

    2024年02月07日
    浏览(58)
  • 西工大 ASLP 实验室在 WeNet 中开源基于 CPPN 的神经网络热词增强语音识别方案

    语境偏置 (Contextual biasing)旨在将语境知识集成到语音识别(ASR)系统中,以提高在相关领域词汇(俗称“ 热词 ”)上的识别准确率。在许多ASR场景中,待识别语音中可能会包含训练数据中数量很少或完全没出现的短语,例如一些领域专有名词、用户通讯录中的人名等,这

    2024年02月07日
    浏览(41)
  • 人脸识别实战:使用Python OpenCV 和深度学习进行人脸识别

    首先简要讨论基于深度学习的面部识别的工作原理,包括“深度度量学习”的概念。 然后,我将帮助您安装实际执行人脸识别所需的库。 最后,我们将为静止图像和视频流实现人脸识别。 安装人脸识别库 ================================================================== 为了使用 Python 和

    2024年04月09日
    浏览(91)
  • Python人工智能应用--图像识别&&深度学习

    像素(缩写为px)是图像中的最小单位,由一个个小方格组成。 这些小方格都有一个固定的位置和颜色,共同决定了图像所呈现出来的样子。 这些小方格的行数与列数又被叫做分辨率。我们常说的某幅图像的分辨率是1280×720,指的就是这张图中的每一行都有1280个像素,每一列都

    2024年04月09日
    浏览(71)
  • (九)人工智能应用--深度学习原理与实战--前馈神经网络实现MNST手写数字识别

    目标: 识别手写体的数字,如图所示: 学习内容: 1、掌握MNIST数据集的加载和查看方法 2、熟练掌握Keras建立前馈神经网络的步骤【重点】 3、掌握模型的编译及拟合方法的使用,理解参数含义【重点】 4、掌握模型的评估方法 5、掌握模型的预测方法 6、掌握自定义图片的处理与

    2024年02月13日
    浏览(48)
  • 目标检测YOLO实战应用案例100讲-基于深度学习的交通标志小目标检测与识别研究

    目录 前言 目标检测算法相关理论  2.1 深度学习理论基础  2.1.2卷积神经网络 

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包