百度飞桨语音PaddleSpeech在win上运行语音识别(ASR)与语音合成(TTS)

news2024/11/17 20:40:17

百度飞桨语音PaddleSpeech在win上运行语音识别(ASR)与语音合成(TTS)

前言

PaddleSpeech是PaddlePadle百度飞桨深度学习框架下的语音服务工具包。PaddleSpeech包括自监督学习模型、带标点符号的 SOTA/流式 ASR、带文本前端的流式 TTS、说话人验证系统、端到端语音翻译和关键字识别。

我在部署运行过程中,遇到很多问题,参考了很多资料,在这里做一个从安装部署到运行测试的、详尽的记录。

文章目录

文章目录

  • 前言
  • 先决条件
  • 运行环境搭建
    • 安装Anaconda
      • 安装过程
      • 查看conda版本
  • 项目部署
    • 为PaddleSpeech创建专属虚拟环境
    • 安装 C++ 编译环境
    • 安装PaddleSpeech
      • 安装pytest-runner
      • 安装paddlepaddle
      • 安装paddlespeech
      • 新建PaddleSpeech工作文件夹
  • 快速上手
    • 自动语音识别ASR(Automatic Speech Recognition)
      • 准备测试音频
      • 语音识别
      • 运行报错及解决
      • 重新识别
    • 语音合成TTS(Text-to-Speech)(本文转语音)
      • 语音合成
      • 运行报错及解决
      • 重新合成语音
    • 关于日志
  • 快速使用服务
    • 启动服务
      • 准备启动服务的配置文件
  • 引用:

先决条件

官方给的要求如下

  • Python >= 3.7 (我这里使用Python3.9)
  • 最新版本的 PaddlePaddle
  • C++ 编译环境 (win下,可通过Visual Studio Installer来安装)
  • 提示: 我们建议在安装 paddlepaddle 的时候使用百度源 https://mirror.baidu.com/pypi/simple ,而在安装 paddlespeech 的时候使用清华源 https://pypi.tuna.tsinghua.edu.cn/simple 。

运行环境搭建

安装Anaconda

安装过程

安装步骤略过,参考文章:anaconda的安装和使用

查看conda版本

Anaconda Power Shell控制台中输入以下命令:

conda info

image-20230511144649746

我的conda版本是23.1.0。

项目部署

为PaddleSpeech创建专属虚拟环境

Anaconda Power Shell中输入以下命令,创建python版本为【3.9】、名为【paddle_speech】的虚拟环境。建议使用【Python3.9】,亲测可用。

conda env list
conda create -n paddle_speech python=3.9

image-20230519085131444

激活 conda 虚拟环境:

conda activate paddle_speech

image-20230519085252667

安装 paddlespeech 的 conda 依赖:

conda install -y -c conda-forge sox libsndfile bzip2

image-20230519090044653

安装 C++ 编译环境

(如果你系统上已经安装了 C++ 编译环境,请忽略这一步。)

对于 Windows 系统,需要安装 Visual Studio 来完成 C++ 编译环境的安装。

https://visualstudio.microsoft.com/visual-cpp-build-tools/

主要是Visual Studio Installer 中勾选 C++桌面开发。

[开始]->[搜索]->Visual Studio Installer

image-20230516173006592

image-20230516173141485

勾选【使用C++的桌面开发】,进行安装。

image-20230515172254573

你可以前往讨论区#1195获取更多帮助。

安装PaddleSpeech

安装pytest-runner

部分用户系统由于默认源的问题,安装中会出现kaldiio安装出错的问题,建议首先安装pytest-runner:

pip install pytest-runner -i https://pypi.tuna.tsinghua.edu.cn/simple

image-20230519090348240

安装paddlepaddle

paddlespeech依赖于paddlepaddle,我们需要先安装paddlepaddle:

pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

image-20230519090717681

安装paddlespeech

最后安装paddlespeech

pip install paddlespeech -i https://pypi.tuna.tsinghua.edu.cn/simple

期间会安装很多类库,最终安装成功如图所示:

image-20230519091146076

新建PaddleSpeech工作文件夹

我们需要手动为PddleSpeech新建一个工作文件夹,以存放一些临时文件、输入输出文件

这里我的路径是C:\Users\Administrator\Documents\ftp\qianyuhui\src\PaddleSpeech\PaddleSpeech

Anaconda Power Shell 进入该目录:

cd C:\Users\Administrator\Documents\ftp\qianyuhui\src\PaddleSpeech\PaddleSpeech

image-20230519091235596

快速上手

自动语音识别ASR(Automatic Speech Recognition)

准备测试音频

测试音频示例下载,直接通过迅雷下载即可

https://paddlespeech.bj.bcebos.com/PaddleAudio/zh.wav
https://paddlespeech.bj.bcebos.com/PaddleAudio/en.wav

下载下来之后,放入

C:\Users\Administrator\Documents\ftp\qianyuhui\src\PaddleSpeech\PaddleSpeech

image-20230516174837588

语音识别

我们识别一下zh.wav文件

cd C:\Users\Administrator\Documents\ftp\qianyuhui\src\PaddleSpeech\PaddleSpeech
conda activate paddle_speech
paddlespeech asr --lang zh --input zh.wav

运行结果如下

image-20230519091611372

报错了!

运行报错及解决

【DeprecationWarning】是警告,不影响正常运行。

【AttributeError】是错误,需要解决。

报错信息:

AttributeError: module 'numpy' has no attribute 'complex'.
`np.complex` was a deprecated alias for the builtin `complex`. To avoid this error in existing code, 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.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
    https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

参考Issues:numpy1.24.3报错 #3235

报错原因分析:

The deprecation for the aliases np.object, np.bool, np.float, np.complex, np.str, and np.int is expired (introduces NumPy 1.20). Some of these will now give a FutureWarning in addition to raising an error since they will be mapped to the NumPy scalars in the future.

是numpy版本更新导致np.complex的用法已经过时了。

解决方案:

将numpy降级为1.23.5

pip uninstall numpy
pip install numpy==1.23.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

image-20230519092343620

重新识别

让我们再重新识别以下zh.wav文件:

cd C:\Users\Administrator\Documents\ftp\qianyuhui\src\PaddleSpeech\PaddleSpeech
conda activate paddle_speech
paddlespeech asr --lang zh --input zh.wav

image-20230519092913974

识别成功!

语音合成TTS(Text-to-Speech)(本文转语音)

语音合成

使用以下命令进行语音合成:

paddlespeech tts --input "你好,欢迎使用百度飞桨深度学习框架!" --output output.wav

image-20230519093119735

又报错了!

运行报错及解决

【DeprecationWarning】是警告,不影响正常运行。

【ImportError】是错误,需要解决。

报错信息:

 from timer import timer
ImportError: cannot import name 'timer' from 'timer' (C:\Users\Administrator\AppData\Roaming\Python\Python39\site-packages\win32\timer.pyd)

报错原因分析:

1、首先我们要明确:报错的地方是paddlespeech的python代码中,有地方写了【from timer import timer】这句话导致的报错。

2、然后分析这句报错信息:从【cannot import name ‘timer’ from ‘timer’】这句话看得出来,不是没有install timer包的问题,因为通常来说没有安装包的报错是【ImportError: No module named xxx】;我们可以通过命令pip list查看timer是否安装:

image-20230519094558250

显然,timer包已经安装了。

3、【cannot import name ‘timer’ from ‘timer’】这句话的意思是无法从timer包中导入名为timer的函数。不是没有找到,而是找到了但却无法导入。从这里推测是系统中存在两个或多个timer包,并且版本不一样(或者单纯就是两个完全不同的包刚好名字都取成了timer),而优先导入的timer包中不存在timer函数。再结合后面那句话【(C:\Users\Administrator\AppData\Roaming\Python\Python39\site-packages\win32\timer.pyd)】可以看出系统是去【Python39】自带的【site-packages】中找的【timer.pyd】(pyd是python的编译中间文件)而不是去虚拟环境【paddle_speech】的【site-packages】去找【timer.pyd】。可以断定确实存在两个【timer】

image-20230519095918898

image-20230519100232443

解决方案:

将Python39自带的timer.pyd重命名掉(如:timer_rename.pyd),或者删掉(比较危险),强制使用虚拟环境中安装的timer。

image-20230519100545035

重新合成语音

paddlespeech tts --input "你好,欢迎使用百度飞桨深度学习框架!" --output output.wav

image-20230519102357099

成功!

关于日志

工作目录下会自动生成一个exp文件夹,日志文件log都会保存到 exp\log\ 下面。

image-20230519135714203

image-20230519135424651

快速使用服务

安装完成后,开发者可以通过命令行一键启动语音识别,语音合成,音频分类等多种服务。

启动服务

准备启动服务的配置文件

前往PaddleSpeech的Gitee,下载源码

image-20230519103546340

找到源码中的【/demos/speech_server/conf/application.yaml】:

image-20230519103856355

在当前工作目录(我的路径是C:\Users\Administrator\Documents\ftp\qianyuhui\src\PaddleSpeech\PaddleSpeech)下,

新建文件夹【speech_server】,在【speech_server】下再新建文件夹【conf】,

将application.yaml拷贝到【 /speech_server/conf/】下面:

image-20230519104758733

使用以下命令启动服务

paddlespeech_server start --config_file ./speech_server/conf/application.yaml

image-20230519105851203

image-20230519110117354

启动成功,端口是8090。

访问语音识别服务

新开一个Anaconda Power Shell,输入一下命令,调用语音识别服务:

conda env list
conda activate paddle_speech
cd C:\Users\Administrator\Documents\ftp\qianyuhui\src\PaddleSpeech\PaddleSpeech
paddlespeech_client asr --server_ip 127.0.0.1 --port 8090 --input zh.wav

image-20230519110719030

访问语音合成服务

新开一个Anaconda Power Shell,输入一下命令,调用语音识别服务:

conda env list
conda activate paddle_speech
cd C:\Users\Administrator\Documents\ftp\qianyuhui\src\PaddleSpeech\PaddleSpeech
paddlespeech_client tts --server_ip 127.0.0.1 --port 8090 --input "您好,欢迎使用百度飞桨语音合成服务。" --output output.wav

image-20230519110937542

引用:

  • PaddleSpeech README
  • PaddleSpeech 安装方法
  • PaddleSpeech/issues

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/543796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Scala---01】Scala 基础 『 变量和数据类型 | 控制语句 | 函数式编程』

文章目录 1. 变量和数据类型1.1 变量和常量1.2 字符串1.3 数据类型1.4 伴生对象与伴生类1.5 代码块1.6 Unit、null、Nothing1.7 强制转换1.8 与 equals 2. 控制语句2.1 分支语句2.2 循环语句(1)for循环(2)while/do-while循环&…

QT客户端外包开发流程及难点

QT是一种跨平台的C应用程序开发框架,可以用于开发各种类型的客户端软件,包括桌面应用程序、移动应用程序、嵌入式应用程序等。在开发跨平台的客户端语言中,QT应该是应用最广泛的,今天和大家分享开发流程及技术难点,希望…

Consul系列:让服务Running in anywhere

引言 随着微服务概念深入人心,越来越多的解决方案选择使用微服务架构,这类架构的共同点是服务数量多,因此种类繁多的服务之间如何互相访问就变成了一个很现实的问 题。目前比较流行的分布式存储比如:Consul, etcd, ZooKeeper,如何…

【CSS】

目录 1. 什么是 CSS 2. CSS的引入方式 3. CSS 选择器 3.1 基础选择器 3.1.1 标签选择器 3.1.2 类选择器 3.1.3 id 选择器 3.1.4 通配符选择器 3.2 复合选择器 4. CSS 字体设置 5. CSS 文本属性 6. CSS 背景设置 7. CSS 的 display 属性 8. CSS 的盒子模型 9. CSS 的弹…

apple pencil二代平替笔哪个好用?ipad第三方电容笔了解下

近几年来,人们开始使用互联网的频率不断提高,网络教学也日益普及。再加上ipad在所有平板设备中都是数一数二的存在,所以很多人都将它当成了无纸化学习的首选。当然,如果要把 ipad变成一个可以用来学习的东西,那配件肯定…

软件工程实验:数据库设计

前言 本实验的主要内容是数据库设计,即如何根据需求分析,设计合理的数据模型,创建和管理数据库,以及实现数据的增删改查等操作。数据库设计是软件工程的重要组成部分,它涉及到数据的存储、组织、查询和处理等方面&…

JavaWeb-VUEElement综合案例

VUE&Element 今日目标: 能够使用VUE中常用指令和插值表达式能够使用VUE生命周期函数 mounted能够进行简单的 Element 页面修改能够完成查询所有功能能够完成添加功能 1,VUE 1.1 概述 接下来我们学习一款前端的框架,就是 VUE。 Vue 是…

晶圆切割机如何选用切割刀对崩边好

晶圆切割机在切割晶圆时,崩边是一种常见的切割缺陷,影响切割质量和生产效率。要选用合适的切割刀以减少崩边,可以考虑以下几点: 根据晶圆尺寸和切割要求,选择合适的金刚石颗粒尺寸和浓度的切割刀。金刚石颗粒越大&…

十大排序算法(下):计数排序,基数排序,桶排序

文章目录 5. 其他非基于比较的排序5.1 计数排序5.2 桶排序5.3 基数排序 5. 其他非基于比较的排序 5.1 计数排序 有n个数,取值范围是 0~n,写出一个排序算法,要求时间复杂度和空间复杂度都是O(n)的 我们知道,前面介绍的基于比较的排…

javaIO之字符流

目录 一、简介二、字符流入流1.1FileReader构造方法1.2FileReader读取字符数据 三、字符流出流3.1 FileWriter 构造方法3.2FileWriter写入数据3.3关闭close和刷新flush3.4FileWriter的续写和换行3.5文本文件复制 四、IO异常处理五、小结 一、简介 字符流 Reader 和 Writer 的故…

2023最全最细的Selenium+Pytest自动化测试框架实战

选前言# selenium自动化 pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承 一定的selenium基础——本篇不讲selenium,不会的可以自己去看selenium中文翻译网 测试框架简介# 测试框架有什么优点呢: 代码复用率…

马斯克开造人形AI 变形金刚要成真?

当5个人形机器人迎面走来,你会下意识地期待它们具备怎样的能力。特斯拉最近公布的视频给出答案,它自研的机器人“擎天柱”(Optimus)能够探索环境,复刻人类动作,自主操纵物品。 特斯拉CEO埃隆马斯克对这些与…

chatgpt赋能Python-python3_4_4怎么打代码

Python3.4.4的入门指南:如何打出高效的Python代码? 作为一名有10年Python编程经验的工程师,我深深地了解到Python3.4.4的强大和灵活性。Python是一种易于学习和使用的编程语言,因此它已成为数据科学家,人工智能和机器…

700页!阿里120W架构师推荐学习的微服务架构解析,到底牛在哪里?

前言 当前,微服务架构在国内正处于蓬勃发展的阶段,无论是大型互联网公司还是传统的IT企业,纷纷采用微服务架构构建系统。 在过去几年里,DevOps、云原生、面向演进式架构等理念已经深入人心,围绕微服务生态也出现了大…

JavaEE(系列9) -- 多线程案列2(堵塞队列)

目录 1. 堵塞队列 2. 生产者消费者模型 2.1 解耦合 2.2 削峰填谷 2.3 代码实现生产者消费者模型 3. 构建堵塞队列 3.1 实现普通队列(循环队列) 3.2 普通队列加上线程安全 3.3 普通队列实现堵塞功能 3.4 堵塞队列最终代码 4. 使用生产者消费者模型测试自己构建的堵塞队列 1. …

IP协议的相关特性、数据链路层相关内容讲解

文章目录 IP协议相关特性地址管理NAT机制IP地址的组成特殊的IP地址 路由选择 数据链路层相关内容以太网MTU IP协议相关特性 首先我们来认识一下IP协议的报头: 4位版本号:指定IP协议的版本,对于IPv4就是4. 4位头部长度:IP头部的长…

每日一题158—— 图片平滑器

图像平滑器 是大小为 3 x 3 的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度。 每个单元格的 平均灰度 定义为:该单元格自身及其周围的 8 个单元格的平均值,结果需向下取整。(即…

常用中外文献检索网站大盘点

一、常用中文文献检索权威网站: 1、知网:是全球最大的中文数据库。提供中国学术文献、外文文献、学位论文、报纸、会议、年鉴、工具书等各类资源,并提供在线阅读和下载服务。涵盖领域包括:基础科学、文史哲、工程科技、社会科学、…

世界博物馆日:一起来看看这些“不太正经”的文物!

今天是5月18日,世界博物馆日。 这两年喜欢逛博物馆的年轻人越来越多了。和爬山、露营一样,博物馆打卡已经是这一届年轻人最受欢迎的娱乐方式之一了。 今天我们要和大家分享的是:全国各地博物馆里收藏的那些萌的、凶的、神秘的、搞笑的…精品…

从零开始 Spring Boot 31:Spring 表达式语言

从零开始 Spring Boot 31:Spring 表达式语言 图源:简书 (jianshu.com) Spring表达式语言(Spring Expression Language,简称 “SpEL”)是一种强大的表达式语言,支持在运行时查询和操作对象图。该语言的语法…