0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Python编写的语音播放软件

MEMS 作者:工程师李察 2018-11-03 08:36 次阅读

单位经常使用广播进行临时事项的通知(将文字转换为语音然后通过功放广播),但是市面上多数语音播放软件都是收费的,要么发音失真,要么不够稳定——经常出现莫名其妙的故障,容易给工作带来被动。学Python这么久不如动手写一款自己的语音广播软件,即使发生故障也可以自行排除。

1

界面设计

在开始动工之前当然要分析需求,我要的核心功能是将一段文字通知输入软件,然后将其转换为语音并播放出来。

这项功能虽然并不复杂,但也需要一个交互式的界面,所以决定使用Tkinter来实现这个功能。

第一步:建立一个窗体

设置标题、大小等要素,为了避免显示格式错乱将其设定为不可改变大小,代码如下:

第二步,设置一个控件

用于接受收入的文字,这里选择带滚动条的Text,代码如下:

第三步,提供选项

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

第四步,建立功能事件的触发接口

设置三个Button控件分别用于触发“语音播放”、“文本清除”和“界面退出”功能。

最终界面效果如下:

2

语音播放

关于“清除”、“退出”等功能相对比较简单,这里重点对本次的核心功能——语音播放进行详细说明。

1).语音接口

文本转换语音推荐使用百度云的REST API 接口,登录网站http://ai.baidu.com/,依次进入控制台——语音技术页面,创建自己的语音应用(下图),其中AppID 、API Key 、Secret Key 三个参数在代码中会用到。

然后使用 pip install baidu-aip 安装python SDK模块,我们来看一下函数原型:


APP_ID='XXXXXX'

API_KEY='XXXXXXXXXXXXX'

SECRET_KEY='XXXXXXXXXXXXXXXXXXXXXX'

client=AipSpeech(APP_ID,API_KEY,SECRET_KEY)

result=client.synthesis(text,'zh',1,{'per':1,'vol':15,'pit':9,'spd':5})

text:需要转换的文字。

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

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

spd:语速,取值0-9,默认为5中语速。‘zh’和1分别为语音模式和客户端类型,该两项均为固定值,不支持修改。

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

2).功能设计

解决了语音合成接口的问题,就可以结合界面设置来实现具体功能了。

首先,要将界面中的语音风格选项与语音合成函数参数一一对应起来,这是一个典型的键与值的对应关系,使用字典这种数据结构再合适不过了。

然后对于发音风格,选取了男声、女声、混合三种模式;

最后对于音调和语速,没必要设置过细的精度等级,这里分别选取了三个跨度明显的等级进行区分。

当“播放”按钮点击时,要从Text控件中读取文本,如果文本为空则弹出提示框要求重新输入;若文本不为空则将文本转换为音频文件并使用playsound进行播放。

这里有一个问题需要特别注意,那就是在软件运行过程中,生成并播放的音频文件不可删除、不可修改、不可覆盖,所以每次转换生成的音频文件名称绝对不能重复,否则在进行多次“播放”操作时,会因为新生成的音频文件无法保存而发生故障。

3

打包封装

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

pyinstaller-wtk_voice.py

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

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

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

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

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83443
  • 播放软件
    +关注

    关注

    0

    文章

    2

    浏览量

    4788

原文标题:营收15年增长30倍,“下一代”是瑞声科技的最大“功臣”

文章出处:【微信号:MEMSensor,微信公众号:MEMS】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何进行单片机语音播放

    如何进行单片机语音播放,可用语音芯片,也可不用,求实例,求说明,求具体,谢谢。。。{:soso__2450352069732769523_4:}
    发表于 11-06 09:07

    有没有大神会用LabVIEW编写一个音乐播放软件啊~求教程

    有没有大神会用LabVIEW编写一个音乐播放软件啊~求教程!求大神carry啊~新手学LabVIEW,第一次做项目想做一个音乐播放
    发表于 08-13 20:26

    语音快速播放

    MCU读取spi flash中的语音数据后,采用pwm可以正常播放。但是如何控制播放速率?
    发表于 07-30 20:19

    基于pyaudio利用python进行语音生成和语音识别详解

    ASR:基于pyaudio利用python进行语音生成、语音识别总结及其案例详细攻略
    发表于 12-27 16:51

    如何在Python中将语音转换为文本

      语音识别是计算机软件识别口语中的单词和短语,并将其转换为可读文本的能力。那么如何在Python中将语音转换为文本?如何使用SpeechRecognition 库在
    发表于 07-29 18:12

    如何使用PWM实现语音播放

    如何使用PWM实现语音播放
    发表于 02-14 06:59

    PWM语音播放器——基于Luminary单片机

    PWM语音播放器——基于Luminary单片机 详述PWM语音播放器原理、硬件和软件设计
    发表于 04-07 16:50 46次下载

    python编写脚本方法

    对于具有484个引脚的芯片,如果手动一个一个设置引脚,必然是一场噩梦。网上有使用Capture进行自动导入的帖子,不过没有找到AD方面的帖子。本文使用python编写脚本,自动分配引脚。
    发表于 11-17 11:38 4783次阅读

    如何使用Python编写一个桌面软件系统?步骤有哪些

    建议直接用python编写一个网页服务器,然后就在本机用浏览器来使用。
    的头像 发表于 01-25 12:08 4632次阅读

    如何使用Python编写一个简单的程序

    按照软件行业传统习惯,当你学习一种新的编程语言如Python时,首先编写一个“Hello World! ”程序。请执行以下步骤,以创造你的“Hello World!” Python程序
    的头像 发表于 01-16 15:21 2.1w次阅读

    如何使用Warp在Python环境中编写CUDA内核

      通常,实时物理模拟代码是用低级 CUDA C ++编写的,以获得最佳性能。在这篇文章中,我们将介绍 NVIDIA Warp ,这是一个新的 Python 框架,可以轻松地用 Python
    的头像 发表于 04-02 16:15 2284次阅读

    利用Python编写简单网络爬虫实例

    利用 Python编写简单网络爬虫实例2 实验环境python版本:3.3.5(2.7下报错
    发表于 02-24 11:05 13次下载

    一个纯Python编写的轻量级数据库

    TinyDB 是一个纯 Python 编写的轻量级数据库,一共只有1800行代码,没有外部依赖项。
    的头像 发表于 02-24 10:32 527次阅读

    KT148A语音芯片的组合播放详细说明 包含语音制作 压缩 下载 播放

    KT148A语音芯片的组合播放详细说明 ,包含:语音制作 、压缩、下载、播放 这里总共的步骤大概分为5步,其实也很简单 组合播放的原理,
    的头像 发表于 10-13 11:17 415次阅读
    KT148A<b class='flag-5'>语音</b>芯片的组合<b class='flag-5'>播放</b>详细说明 包含<b class='flag-5'>语音</b>制作 压缩 下载 <b class='flag-5'>播放</b>

    python编写斐波那契数列

    斐波那契数列是一个非常经典的数学问题,它具有广泛的应用和研究价值。在这篇文章中,我将使用Python编写斐波那契数列的代码,并详细解释代码的逻辑和执行过程。 首先,让我们来介绍一下斐波那契数列的定义
    的头像 发表于 11-21 15:04 689次阅读