首页 > 编程知识 正文

python语言,python语音播放文本

时间:2023-05-03 15:05:57 阅读:42426 作者:42

职场上经常使用广播通知临时事项(将文字转换为声音后用放大器进行广播),但是市面上多数语音播放软件都是收费的会出现发音失真、不稳定、不太清楚的故障,工作上处于被动状态学Python这么久不如动手写一款自己的语音广播软件

1

界面设计

开工前分析需求是当然的,我想要的是把文字通知输入软件,然后将其转换成语音播放。

这个功能并不复杂,但也需要交互界面,所以我们决定使用Tkinter来实现这个功能。

第一步:建立一个窗体

设定标题、尺寸等要素,设定为不可调整大小以避免显示格式混乱。 代码为以下:

第二步,设置一个控件

用于领取收入的文本。 在此选择带滚动条的文本。 代码如下。

第三步,提供选项

作为声音播放软件,需要设定最基本的语速、音调等风格。 这里使用Combobox控件提供固定选项,用户可以根据情况选择不同的发音、快速和语调。

第四步

设置三个Button控件以启动“音频播放”、“文本清除”和“界面关闭”功能。

最终界面效果如下:

2

语音播放

虽然“清除”、“注销”等功能比较简单,但这里将重点详细说明此次核心功能——的语音播放。

1).语音接口

文本转换语音建议使用百度云的REST API接口。 登录站点http://ai.baidu.com/,访问控制台——语音技术页面,创建自己的语音APP。 其中,AppID、API Key和Secret Key这三个参数用于代码中。

接下来,我们将使用pip install baidu-aip安装python SDK模块,并查看函数原型:

app _ id=' xxxxxxxxxxx ' API _ key=' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx zh ',1,{'per':1,' vol':15,' pit':9,' SPD ' :5 } }需要text :转换的字符。

per:的发音者选择0为女性声音,1为男性声音,3为情感合成-度逍遥,4为情感合成-度ggdys,默认为普通女性声音。 vol:音量,值0-15,默认为5中音量

pit:色调,取0-9的值,默认值为5中语调。

spd:话速取值0-9,默认为5中话速。 “zh”和“1”分别是语音模式和客户端类型,它们都是固定值,不支持修改。

可见,我们需要的发音、音调、语速三种风格可以通过修改参数来实现。

2).功能设计

解决语音合成接口问题后,可以结合接口设置实现具体功能。

首先,接口中的语音样式的选择与语音合成函数的参数一一对应是典型的键和值的对应关系,优选使用词典那样的数据结构。

并且,关于发音风格,选择了男声、女声、混合三种模式

最后,对于音调和语速,不需要设置精细的精度水平,这里分别选择了3个跨度的清晰水平进行区分。

要在单击“播放”按钮时从文本控件读取文本,如果文本为空,请显示提示框并要求重新输入; 如果文本不为空,请将文本转换为音频文件,然后在playsound中播放。

其中有一个问题需要特别注意在软件运行时,生成并播放的音频文件不能删除、修改或复盖,因此在每次转换生成的音频文件名时绝对不要重复。 否则,多次“播放”操作时,新生成的声音文件无法保存而发生故障。

3

打包封装

到目前为止,该软件的运行依赖于本地python开发环境,并不容易提供给他人。这里推荐Pyinstaller的第三方库来对python程序进行打包首先进入刚才的py文件所在的目录,执行以下cmd命令: 其中“-w”的作用是不显示命令

窗口,tk_voice是刚才的py文件名称。

pyinstaller -w tk_voice.py

这时,在同一目录下会生成一个dist文件夹,这里面就是打包后的程序文件了。我们运行一下其中的.exe文件,就会出现之前设计的程序界面,在文本框中输入一段测试文字:“全体人员请注意,全体人员请注意,请立即下楼集合开饭。”,点击“播放”按钮试一下效果:

插入音频————测试.mp3

最后,关于Pyinstaller的使用有几点需要注意的地方:

该方法仅适用于windows系统,而且对系统版本有比较严格的要求,比如64位系统下打包的程序无法在32位系统下运行。

如果需要打包的程序中调用了外部的一些图片或其他资源文件,则需要手动复制到打包后的文件夹内,因为对于这些文件Pyinstaller不会进行打包。

使用Pyinstaller打包如果出现中途失败的情况,可能会导致原py文件内容丢失,所以打包之前最好先进行备份。

使用import导入其他库的时候尽量有选择性,不要导入整个库,不然打包后的文件会非常庞大。

 

本文使用python写了一款语音播放软件,主要涉及Tkinter、baidu-aip、playsound、pyinstaller几个库,能够实现基本的语音合成及播放功能,能够脱离python开发环境运行,便于自行维护和扩展,缺点是界面比较简陋、功能比较单一,有兴趣的小伙伴可以自行修改完善。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。