.需求分析

  • 亲们,你们要写会议纪要嘛?
  • 亲们,你们要写会议纪要嘛?
  • 亲们,你们要写会议纪要嘛?

当您面对成吨的会议录音,着急写会议纪要而不得不愚公移山、人海战术?听的头晕眼花,听的漏洞百出,听的怀疑人生,那么你是否想到了自动听写服务?

想想也是,百度一看,好家伙,收费不菲啊!请看下图

2.需求再分析

亲密,能花钱解决的都不是事,刚刚看到听写服务,很贵的,大致1400大洋,还是打折完毕的,而且还是云服务形式的,那么对于某些会议,比如保密会议,需要离线的,那么完全办不到,该怎么办呢? 下面就有请我们的PaddleSpeech出场来解决问题。

3.解决思路

【超简单】之基于PaddleSpeech搭建个人语音听写服务,顾名思义,是通过PaddleSpeech来搭建语音听写服务的,主要思路如下。

  • 1.录音长度切分
  • 2.录音听写
  • 3.录音文本加标点

二、环境搭建

1.PaddleSpeech简介

PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型,一些典型的应用如下:

  • 语音识别
  • 语音翻译
  • 语音合成

2.PaddleSpeech安装

pip install paddlespeech
复制代码

2.1相关依赖

  • gcc >= 4.8.5
  • paddlepaddle >= 2.3.1
  • python >= 3.7
  • linux(推荐), mac, windows

2.2 win安装注意事项

  • 1.win必须安装 Microsoft C++ 生成工具 - Visual Studio visualstudio.microsoft.com/zh-hans/vis… 工具,原因是 安装非纯 Python 包或编译 Cython 或 Pyrex 文件

  • 2.参考: WindowsCompilers - Python Wiki wiki.python.org/moin/Window…

!pip install paddlespeech >log.log
复制代码

2.3 快速试用

!wget -c https://paddlespeech.bj.bcebos.com/PaddleAudio/zh.wav
复制代码
--2022-07-27 00:31:57--  https://paddlespeech.bj.bcebos.com/PaddleAudio/zh.wav
Resolving paddlespeech.bj.bcebos.com (paddlespeech.bj.bcebos.com)... 182.61.200.195, 182.61.200.229, 2409:8c04:1001:1002:0:ff:b001:368a
Connecting to paddlespeech.bj.bcebos.com (paddlespeech.bj.bcebos.com)|182.61.200.195|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 159942 (156K) [audio/wav]
Saving to: ‘zh.wav’zh.wav              100%[===================>] 156.19K  --.-KB/s    in 0.03s   2022-07-27 00:31:57 (5.52 MB/s) - ‘zh.wav’ saved [159942/159942]
复制代码

2.3.1 API调用

from paddlespeech.cli.asr.infer import ASRExecutorasr = ASRExecutor()
result = asr(audio_file="zh.wav")
复制代码
[2022-07-27 00:33:02,175] [    INFO] - checking the audio file format......
复制代码
print(result)
复制代码
我认为跑步最重要的就是给我带来了身体健康
复制代码

2.3.2 命令行调用

!paddlespeech asr --lang zh --input zh.wav
复制代码
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/nltk/decorators.py:68: DeprecationWarning: `formatargspec` is deprecated since Python 3.5. Use `signature` and the `Signature` object directlyregargs, varargs, varkwargs, defaults, formatvalue=lambda value: ""
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/nltk/lm/counter.py:15: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop workingfrom collections import Sequence, defaultdict
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/nltk/lm/vocabulary.py:13: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop workingfrom collections import Counter, Iterable
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     /home/aistudio/nltk_data...
[nltk_data]   Unzipping taggers/averaged_perceptron_tagger.zip.
[nltk_data] Downloading package cmudict to /home/aistudio/nltk_data...
[nltk_data]   Unzipping corpora/cmudict.zip.
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/__init__.py:107: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop workingfrom collections import MutableMapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/rcsetup.py:20: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop workingfrom collections import Iterable, Mapping
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/colors.py:53: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop workingfrom collections import Sized
W0727 00:38:55.935500  2181 gpu_resources.cc:61] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 10.1
W0727 00:38:55.940197  2181 gpu_resources.cc:91] device: 0, cuDNN Version: 7.6.
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/h5py/__init__.py:36: DeprecationWarning: `np.typeDict` is a deprecated alias for `np.sctypeDict`.from ._conv import register_converters as _register_converters
我认为跑步最重要的就是给我带来了身体健康
复制代码

会自动下载一堆东西有点慢,可以不用这个。

[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     /home/aistudio/nltk_data...
[nltk_data]   Unzipping taggers/averaged_perceptron_tagger.zip.
[nltk_data] Downloading package cmudict to /home/aistudio/nltk_data...
复制代码

2.3.3 常见错误

如遇到以下错误

[2022-07-26 21:13:28,589] [    INFO] - checking the audio file format......
[2022-07-26 21:13:28,594] [   ERROR] - Please input audio file less then 50 seconds.
复制代码

报错很明显,提示一个是音频格式问题,一个是小于50s问题,如果遇到这个问题后面解决。

  • 1.音频必须为wav格式

  • 2.音频大小必须小于50s

音频格式为wav格式,这个可通过录音笔设置(一般默认),或python代码转换,或者格式工厂进行转换。

3.音频切分

此处使用auditok库

!pip install auditok
复制代码
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting auditokDownloading https://pypi.tuna.tsinghua.edu.cn/packages/49/3a/8b5579063cfb7ae3e89d40d495f4eff6e9cdefa14096ec0654d6aac52617/auditok-0.2.0-py3-none-any.whl (1.5 MB)l     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.0/1.5 MB ? eta -:--:--━━━━━━━━━━╸━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0.4/1.5 MB 14.2 MB/s eta 0:00:01━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━━━ 1.3/1.5 MB 19.7 MB/s eta 0:00:01━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.5/1.5 MB 15.4 MB/s eta 0:00:00
[?25hInstalling collected packages: auditok
Successfully installed auditok-0.2.0[notice] A new release of pip available: 22.1.2 -> 22.2
[notice] To update, run: pip install --upgrade pip
复制代码

三、音频切分

切分原因上面交代过,因为PaddleSpeech识别最长语音为50s,故需要切分,这里直接调用好了。

from paddlespeech.cli.asr.infer import ASRExecutor
import csv
import moviepy.editor as mp
import auditok
import os
import paddle
from paddlespeech.cli import ASRExecutor, TextExecutor
import soundfile
import librosa
import warningswarnings.filterwarnings('ignore')
复制代码
# 引入auditok库
import auditok
# 输入类别为audio
def qiefen(path, ty='audio', mmin_dur=1, mmax_dur=100000, mmax_silence=1, menergy_threshold=55):audio_file = pathaudio, audio_sample_rate = soundfile.read(audio_file, dtype="int16", always_2d=True)audio_regions = auditok.split(audio_file,min_dur=mmin_dur,  # minimum duration of a valid audio event in secondsmax_dur=mmax_dur,  # maximum duration of an event# maximum duration of tolerated continuous silence within an eventmax_silence=mmax_silence,energy_threshold=menergy_threshold  # threshold of detection)for i, r in enumerate(audio_regions):# Regions returned by `split` have 'start' and 'end' metadata fieldsprint("Region {i}: {r.meta.start:.3f}s -- {r.meta.end:.3f}s".format(i=i, r=r))epath = ''file_pre = str(epath.join(audio_file.split('.')[0].split('/')[-1]))mk = 'change'if (os.path.exists(mk) == False):os.mkdir(mk)if (os.path.exists(mk + '/' + ty) == False):os.mkdir(mk + '/' + ty)if (os.path.exists(mk + '/' + ty + '/' + file_pre) == False):os.mkdir(mk + '/' + ty + '/' + file_pre)num = i# 为了取前三位数字排序s = '000000' + str(num)file_save = mk + '/' + ty + '/' + file_pre + '/' + \s[-3:] + '-' + '{meta.start:.3f}-{meta.end:.3f}' + '.wav'filename = r.save(file_save)print("region saved as: {}".format(filename))return mk + '/' + ty + '/' + file_pre

基于PaddleSpeech搭建个人语音听写服务相关推荐

  1. 【超简单】之基于PaddleSpeech搭建个人语音听写服务

    一.[超简单]之基于PaddleSpeech搭建个人语音听写服务 1.需求分析 亲们,你们要写会议纪要嘛? 亲们,你们要写会议纪要嘛? 亲们,你们要写会议纪要嘛? 当您面对成吨的会议录音,着急写会议纪 ...

  2. 基于android平台的语音机器人服务娱乐系统

    分 类 号:TP311 学校代码:11460 学 号:10130920 本科生毕业论文 基于android平台的语音机器人服务娱乐系统 Robot Entertainment Service Syst ...

  3. 基于 CentOS 搭建微信小程序服务

    为什么80%的码农都做不了架构师?>>>    小程序无疑是今年互联网的重大热点.本实验带您从零开始,基于 NodeJS 搭建起一个可以支撑小程序运行的服务,包括 HTTPS 部署. ...

  4. 基于 Ubuntu 搭建微信小程序服务

    目录 准备域名和证书搭建小程序开发环境搭建 HTTP 服务搭建 HTTPS 服务小程序会话WebSocket 服务剪刀石头布小游戏 准备域名和证书 任务时间:20min ~ 40min 小程序后台服务 ...

  5. 基于ITIL搭建公司IT治理服务框架

    ITIL帮助组织标准化其IT服务和流程.ITIL文档包括各种政策.程序和指南,帮助IT团队向客户提供优质的服务. 根据ITIL框架的五个阶段,ITIL文档被广泛分类为不同的类别. 这些阶段包括服务战略 ...

  6. 基于GraphHopper搭建离线路径规划服务并可视化

    效果图: 说明: 上篇已经说到如何在本机开启GraphHopper服务了,地址在这:https://blog.csdn.net/wml00000/article/details/84030182 ,里 ...

  7. 基于Xware搭建树莓派远程下载服务

    很早就想写这篇关于Xware搭建远程下载的博文了,一直拖着没写,正好前段时间树莓派炸了,重装远程下载时顺手截了图,现在就把这篇博文补上. 一.Xware简介 Xware这个名字看起来很陌生,其实提起它 ...

  8. AndroidStudio快速开发讯飞语音听写

    好久没更新了,差点就忘记这个东东了,不过好在一闲下来就赶紧更新一波 哈哈^_^ **此博客主要针对将要进行语音开发的小白,如有不对的地方,请指正 到科大讯飞官网注册账号并登陆,选择单个服务SDK下载 ...

  9. python实现调用科大讯飞语音听写(将音频识别成文字输出)

    一.大致流程 1)申请科大讯飞账号(https://passport.xfyun.cn/register) 2)创建应用(应用平台选择WebAPI) 3)查看开发文档 4)根据开发文档和示例代码进行调 ...

最新文章

  1. python专科就业_利用Python分析复旦大学近五年转专业失败的情况
  2. Nginx+Keepalived+Tomcat之动静分离的web集群
  3. ubuntu 更新软件
  4. 千图成像_「原创」千图成像,用PS给人物制作全图的拼人像
  5. java dataconvert_Java DateConverter类代码示例
  6. python做算法题优势_Python语言在科学算法中的优势
  7. Red Hat 6.5安装Oracle 10g故障汇总
  8. Day10 sambaNFS(Enginner04)
  9. 大陆集团:放弃内燃机,适用于高阶自动驾驶MK C1制动系统2020年国内投产
  10. vs2010找不到服务器,在服务器上找不到Crystal Reports dll部署VS2010应用程序
  11. R语言决策树:NBA球员如何拿到大合同
  12. c语言编程有限次数猜数游戏,用c语言编程猜数字
  13. 普通java类注入dao失败_spring mvc 整合mybatis dao接口注入失败
  14. 快速给图片加水印的方法
  15. 【阅读论文】博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病--第二章
  16. webpack 打包报错:Can't resolve '.\dist\bundle.js' in 'E:\vivian....'
  17. 火狐浏览器怎么打开oracle,firefox火狐浏览器点击没响应,该怎么解决?
  18. 简单明了强烈推荐办公神器
  19. ati hd 6470m驱动
  20. 自动杀死yarn 中运行的程序

热门文章

  1. CRM的客户数据模型:UDM中的人(people)和组织(organization)(IV)
  2. 5613-2-冒泡排序
  3. 关于熔断器Hystrix替代方案的调研报告
  4. 数据提取方法-数据提取的概念和数据的分类
  5. 如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化展示
  6. 2015上半年手机GPU排行榜
  7. jQuery基础教程
  8. OpenNI2的安装教程
  9. 苹果电脑win10蓝牙音响卡顿_如何修复Windows 10蓝牙扬声器的声音延迟问题
  10. 维基解密再爆料:CIA能操纵浏览器,监视PPT