首页 > 其他分享 >paddlespeech asr脚本demo

paddlespeech asr脚本demo

时间:2023-09-14 18:02:43浏览次数:36  
标签:asr paddlespeech dtype paddle file demo audio

 

概述

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

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

 

空空如常

求真得真

标签:asr,paddlespeech,dtype,paddle,file,demo,audio
From: https://www.cnblogs.com/qiuzhendezhen/p/17703081.html

相关文章

  • RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo
    前言  上一篇已经将Qt移植过去了,此时我们移植整体应用不是什么问题了,那么现在应用对外得接口使用了RS485接口,板载了一个RS485,于是需要调通,兼容这个开发板得RS485。 补充  看起来很简单,弄起来不懂得就是不懂,懂得虽然懂还得花时间去研究一下开发板特性,与厂家沟通下,......
  • 视图模板____Freemarker入门demo
    //工程结构//代码类packagecom.freemarker.test;importjava.io.File;importjava.io.FileWriter;importjava.io.PrintWriter;importjava.util.HashMap;importjava.util.Map;importfreemarker.template.Configuration;importfreemarker.temp......
  • Java多线程____一个简单的多线程demo
    1.实现runnable接口实现功能性解耦 packagecom.test.thread;publicclassTestRunnableimplementsRunnable{ @Override publicvoidrun(){ for(inti=0;i<20;i++){ System.out.println(Thread.currentThread().getName()); } }}packagecom.test.thre......
  • RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个D
    前言  前面发现开发板用ubuntu固件发现空间不够,本篇使用buildroot固件,来实现目标板运行qt界面应用。<br>烧写buildroot固件  这部分更详细的参照《RK3568开发笔记(六):开发板烧写ubuntu固件(支持mipi屏)》的步骤,本质上烧写都是一样的,只是不同的update.img。步骤一:下载镜像  ......
  • RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个D
    前言  前面发现开发板用ubuntu固件发现空间不够,本篇使用buildroot固件,来实现目标板运行qt界面应用。 烧写buildroot固件  这部分更详细的参照《RK3568开发笔记(六):开发板烧写ubuntu固件(支持mipi屏)》的步骤,本质上烧写都是一样的,只是不同的update.img。步骤一:下载......
  • 记录一个比较完善的php的curl请求方法的demo
    functionhttpRequest($url,$dataStr="",$isPost=0,$headers=[]){$httpInfo=[];$ch=curl_init();curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0(Window......
  • 导入demo
           ......
  • yolov5-fastapi-demo更换中文标签
     本章是基于yolov5-fastapi-demo项目的更改WelkinU/yolov5-fastapi-demo:FastAPIWrapperofYOLOv5(github.com)首先,因为训练的时候设置的标签是英文,换成中文要重新训练,而且使用中文训练也很繁琐要改很多东西,因此可以直接训练的时候用英文标签,然后在识别绘图的时候做一个判断直......
  • Vue框架demo
    首先,需要安装Vue:npminstallvue然后,创建一个名为App.vue的文件,用于定义应用程序的主要内容。<template><div><h1>{{message}}</h1><inputtype="text"v-model="inputText"/><button@click="addMessage">AddM......
  • 华脉智联发布国标28181 Android SDK和DEMO
    在目前很多行业项目中,客户使用的是海康、大华等监控平台的GB/28181平台,或者是其他的第三方的GB/28181平台。但是对于那些不具备GB/28181协议的单兵终端,如何接入GB/28181平台网络中呢?首先,我们了解下GB/T28181:国标GB/T28181协议全称《安全防范视频监控联网系统信息传输、交换、控制技......