paddlespeech asr脚本demo

概述

paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别、语音合成、说话人验证、关键词识别、音频分类和语音翻译等功能。

本文介绍利用ps中的asr功能实现批量处理音频文件的demo。

环境

centos 7.9

Python 3.10.3

paddlepaddle 2.5.1

paddlespeech 1.4.1

demo代码

demo的代码如下,使用python3.10版本运行。

-*- coding: utf-8 -*-

#required python3.10

###paddlespeech asr demo

paddlespeech asr -y --lang zh --model conformer_wenetspeech --input $audiofile

demo基本的业务流程

给定目录,扫描目录下的音频文件,对音频文件进行asr接口操作,写入对应的结果文件

import os

from paddlespeech.cli.asr.infer import ASRExecutor

import soundfile as sf

srcPath = r'/home/admin/test'

resultFile = r'/home/admin/test/asr-result-file.txt'

##打开结果文件

rfile = open(resultFile, 'a')

##获取asr对象

asr = ASRExecutor()

for filename in os.listdir(srcPath):

if filename.endswith('.wav') or filename.endswith('.mp3'):

audio_file_path = os.path.join(srcPath, filename)

##获取文件参数,计算音频长度

audio_data, sample_rate = sf.read(audio_file_path)

duration = len(audio_data) / sample_rate

##当前的asr接口不能处理超过50秒的音频文件,自动跳过

if duration >= 50:

resultStr = 'srcFile:{}, duration >= 50, skip.'.format(audio_file_path)

print(resultStr)

rfile.write(resultStr + '\n')

else:

result = asr(audio_file=audio_file_path, model='conformer_wenetspeech', lang='zh', force_yes='y')

print('srcFile:{}, asrResult:{}.'.format(audio_file_path, result))

rfile.write('srcFile:{}, asrResult:{}.\n'.format(audio_file_path, result))

rfile.close()

测试

demo的测试结果如下。

$ python3 ps-asr-demo.py

/usr/local/python3/lib/python3.10/site-packages/librosa/core/constantq.py:1059: DeprecationWarning: `np.complex` is a deprecated alias for the builtin `complex`. To silence this warning, use `complex` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.complex128` here.

Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

dtype=np.complex,

2023-09-11 16:10:12.299 | INFO | paddlespeech.s2t.modules.embedding:init:150 - max len: 5000

/usr/local/python3/lib/python3.10/site-packages/paddle/fluid/dygraph/math_op_patch.py:275: UserWarning: The dtype of left and right variables are not the same, left dtype is paddle.int64, but right dtype is paddle.bool, the right dtype will convert to paddle.int64

warnings.warn(

srcFile:/home/admin/test/zh.wav, asrResult:我认为跑步最重要的就是给我带来了身体健康.

srcFile:/home/admin/test/en.wav, asrResult:那摘了的标准.

2023-09-11 16:10:20,223\] \[ WARNING\] - The sample rate of the input file is not 16000. The program will resample the wav file to 16000. If the result does not meet your expectations, Please input the 16k 16 bit 1 channel wav file. /usr/local/python3/lib/python3.10/site-packages/paddle/fluid/dygraph/math_op_patch.py:275: UserWarning: The dtype of left and right variables are not the same, left dtype is paddle.int64, but right dtype is paddle.bool, the right dtype will convert to paddle.int64 warnings.warn( srcFile:/home/admin/test/output.wav, asrResult:你好欢迎使用百度非讲深度学习框架. srcFile:/home/admin/test/test-long-file.mp3, duration \>= 50, skip. ... # 总结 ps的asr功能中有多个模型可选,目前测试中的"conformer_wenetspeech"识别准确率较高。 识别速度有待提高,音频长度的限制也待解决。 空空如常 求真得真

相关推荐
Starry_hello world9 分钟前
Linux http代码
linux·运维·http
开开心心_Every2 小时前
全屏程序切换工具,激活选中窗口快速切换
linux·运维·服务器·pdf·ocr·测试用例·模块测试
未来之窗软件服务3 小时前
AI人工智能(四)本地部署vosk-ASR环境命令—东方仙盟练气期
linux·运维·人工智能·本地模型·仙盟创梦ide·东方仙盟
~央千澈~3 小时前
抖音弹幕游戏开发之第17集:添加日志系统·优雅草云桧·卓伊凡
linux·服务器·前端
vortex54 小时前
Zellij 复制提示成功却粘贴不了?一文解决剪贴板不同步问题
linux
!chen4 小时前
Ubuntu 上 ROS2 的安装
linux·运维·ubuntu
RisunJan4 小时前
Linux命令-lvremove(删除指定LVM逻辑卷)
linux·运维·服务器
S-码农4 小时前
Linux 进程通信——信号量
linux
古译汉书5 小时前
串口模拟工具:com0com 介绍、下载、驱动感叹号解决
linux·运维·服务器·stm32·单片机·嵌入式硬件
Trouvaille ~5 小时前
【Linux】epoll 深度剖析:高性能 IO 多路复用的终极方案
linux·运维·服务器·c++·epoll·多路复用·io模型