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"识别准确率较高。

识别速度有待提高,音频长度的限制也待解决。

空空如常

求真得真

相关推荐
Web3探索者2 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo2 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10153 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao4 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3105 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode5 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒7 天前
TShark:Wireshark CLI 功能
linux
A小辣椒7 天前
TShark:基础知识
linux
AlfredZhao7 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao8 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi