张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,👉戳此立抢👈

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

MEMS 2018-11-03 08:36 次阅读

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

1

界面设计

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

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

第一步:建立一个窗体

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

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

第二步,设置一个控件

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

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

第三步,提供选项

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

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

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

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

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

最终界面效果如下:

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

2

语音播放

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

1).语音接口

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

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

然后使用 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).功能设计

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

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

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

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

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

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

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

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

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导入其他库的时候尽量有选择性,不要导入整个库,不然打包后的文件会非常庞大。

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

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

收藏 人收藏
分享:

评论

相关推荐

自动化测试框架-HP UFT精解

  第一章-自动化测试概述:  从本章开始,我们开始学习几个主流高级测试工具。我们会将课程分为自动化测试工具、性能测试工
发表于 03-20 00:00 23147次 阅读
自动化测试框架-HP UFT精解

Python爬虫工程师面试经历

前段时间快要毕业,而我又不想找自己的老本行Java开发,所以面了很多Python爬虫岗位。因为我在南....
的头像 工程师人生 发表于 03-20 15:01 58次 阅读
Python爬虫工程师面试经历

以问题为导向学习python的框架

到底怎么才算“懂”python的twisted框架?
发表于 03-20 10:33 37次 阅读
以问题为导向学习python的框架

Python程序中添加代理信息代码示例

[color=rgba(0, 0, 0, 0.87)][size=1.28]requests[backcolor=rgba(236, 236, 236, 0.5)][backcolor=rgba(0, 0, 0, 0.54)][size=1...
发表于 03-19 17:00 109次 阅读
Python程序中添加代理信息代码示例

学Excel还是 R、Python?机器学习怎么入门?

数据科学家分为两个职业。数据工程师为模型提供可用的数据,机器学习和数学建模涉及比较少,这些工作主要由....
的头像 电子发烧友网工程师 发表于 03-19 15:46 97次 阅读
学Excel还是 R、Python?机器学习怎么入门?

计算机视觉开源库集锦

Dlib是一个现代的C++工具包,包含机器学习算法和工具,用于在C++中创建复杂的软件来解决实际问题....
的头像 电子发烧友网工程师 发表于 03-19 11:48 126次 阅读
计算机视觉开源库集锦

2019年最值得关注的34个Python开源项目——Let's go!

是 Google 专为 NISQ 算法打造的框架,用于创建、编辑和调用嘈杂中型量子 (NISQ,No....
的头像 电子发烧友网工程师 发表于 03-19 10:37 160次 阅读
2019年最值得关注的34个Python开源项目——Let's go!

用Python带领大家一起探索这些诱人的奖金背后的秘密!

但为什么每期双色球一等奖奖金不是固定的呢!就是因为其奖金机制,双色球当期销售额的51%作为当期奖金!....
的头像 电子发烧友网工程师 发表于 03-19 10:29 116次 阅读
用Python带领大家一起探索这些诱人的奖金背后的秘密!

一个国外小哥用好几年时间维护的Python代码合集

因为在学习写代码的过程中,我们应该尽量避免重复。写代码不像背单词,你只要知道一门编程语言能干什么,等....
的头像 电子发烧友网工程师 发表于 03-19 10:24 149次 阅读
一个国外小哥用好几年时间维护的Python代码合集

【PYNQ-Z2试用体验】基于PYNQ-Z2的神经网络图形识别[结项]

前言前面我们简单讲解了神经网络的基本概念和工作原理,接下来,将通过具体的python代码来完成基于神经网络的图形识别。这里使用...
发表于 03-18 21:51 112次 阅读
【PYNQ-Z2试用体验】基于PYNQ-Z2的神经网络图形识别[结项]

使用Gokit4(G)开发板遇到的问题及处理方法

Gokit4(G)开发板使用小结
发表于 03-18 12:43 19次 阅读
使用Gokit4(G)开发板遇到的问题及处理方法

R和Python到底谁更好如何将Python与R同时应用在同一个项目

如果你从事在数据科学领域,提到编程语言,一定能马上想到 R 语言和 Python语言(以下分别简称 ....
的头像 电子发烧友网工程师 发表于 03-17 10:35 269次 阅读
R和Python到底谁更好如何将Python与R同时应用在同一个项目

2019年的编程语言排行榜你知道吗

TIOBE 公布了2019年3月编程语言排行榜,排名前十的依然是:Java, C, Python, ....
的头像 电子发烧友网工程师 发表于 03-17 10:13 597次 阅读
2019年的编程语言排行榜你知道吗

人工智能风口捆绑在一起的Python,似乎从来不缺热度

横向与其他技术岗位相比,Python这样的薪资涨幅也算得上是表现突出。下图显示,Python在201....
的头像 电子发烧友网工程师 发表于 03-16 09:53 275次 阅读
人工智能风口捆绑在一起的Python,似乎从来不缺热度

PYNQ中MicroBlaze程序文件的加载过程

在PYNQ的base overlay 中添加了MicroBlaze,通过MicroBlaze 来配置....
发表于 03-16 09:15 48次 阅读
PYNQ中MicroBlaze程序文件的加载过程

编程语言流行指数排行榜近日公布了2019年2月份榜单

圈内知名网站Stack Overflow的数据显示,其实早在去年6月份,Python的月活用户就已超....
的头像 电子发烧友网工程师 发表于 03-15 09:48 319次 阅读
编程语言流行指数排行榜近日公布了2019年2月份榜单

一个关于超越的编程大赛怎么可以专属的编程语言呢?

今天重点说说你们使用的编程语言,尤其值得一提的是 Python,至于为什么是 Python?这个后面....
的头像 电子发烧友网工程师 发表于 03-15 09:40 365次 阅读
一个关于超越的编程大赛怎么可以专属的编程语言呢?

你知道为什么Julia的速度能做到那么快吗?

一般来说,Julia 中的数学运算与其他脚本语言中的数学运算看起来是一样的。它们的数字都是 “真正的....
的头像 新智元 发表于 03-15 09:10 137次 阅读
你知道为什么Julia的速度能做到那么快吗?

PIC32MX370f512H如何使用脱轨通信将消息传送给控制器

我使用PIC32 MX370F512H控制器和专用工具通过串行通信与PC机通信。每次进行增量更新时,我们都会运行一些基本的测试用例...
发表于 03-14 20:02 34次 阅读
PIC32MX370f512H如何使用脱轨通信将消息传送给控制器

盘点“杨超越杯编程大赛”中那些脑洞大开的项目

你知道杨超越的粉丝们有多努力吗!
的头像 人工智能爱好者社区 发表于 03-13 15:17 486次 阅读
盘点“杨超越杯编程大赛”中那些脑洞大开的项目

比较5种人工智能项目最常用的编程语言

有人认为Lisp是最好的人工智能编程语言,因为它为开发人员提供了自由。在人工智能中使用Lisp,因其....
的头像 电子发烧友网 发表于 03-13 09:59 368次 阅读
比较5种人工智能项目最常用的编程语言

如何用Python Ginkgo USB-CAN发送和接收数据

Python版本:硬件版本3.5.3两套Ginkgo USB-CAN 接口:VTG203B 硬件连接:ITEM1   ITEM2CAN1 H...
发表于 03-12 10:32 63次 阅读
如何用Python Ginkgo USB-CAN发送和接收数据

一些你应该了解的Python功能特色

大多Python函数有着长且具有描述性的名字。但是命名为glob()的函数你可能不知道它是干什么的除....
的头像 马哥Linux运维 发表于 03-11 15:53 200次 阅读
一些你应该了解的Python功能特色

编译器可以为你生成高性能的代码,但是你真的需要编译器吗?

当我们用数字运行时,我们可以得到数字。但我们想要代码,因此,我们需要制作一个假装成数字的对象(Obj....
的头像 电子发烧友网工程师 发表于 03-11 09:35 247次 阅读
编译器可以为你生成高性能的代码,但是你真的需要编译器吗?

Python如何爬取实时变化的WebSocket数据

Python 中的网络请求库非常多,Requests 是最常用的请求库之一,它可以模拟发送网络请求。....
的头像 电子发烧友网工程师 发表于 03-11 09:31 282次 阅读
Python如何爬取实时变化的WebSocket数据

Python入门教程之可爱的Python PDF版电子书免费下载

笔者自 2000 年接触 Python 到现在,一直对 Python 的兴趣和信心有增无减。但 Py....
发表于 03-11 08:00 56次 阅读
Python入门教程之可爱的Python PDF版电子书免费下载

在大型项目开发上,Python真是个“烂”语言!

我们内部数据统计,通过大把(千万级)的简历分析得到的结果:部分大项目不用Python,是因为相比之下....
的头像 电子发烧友网工程师 发表于 03-10 10:21 520次 阅读
在大型项目开发上,Python真是个“烂”语言!

一个专门关于Python的面试题汇总,为什么推荐这份资源?

除了题量充足外,这个面试题覆盖的知识点按照由易到难罗列,分为【Python 基础】与【Python ....
的头像 电子发烧友网工程师 发表于 03-10 10:12 282次 阅读
一个专门关于Python的面试题汇总,为什么推荐这份资源?

CSDN为所有感兴趣的开发者提供了一个探讨和学习Python的契机

1989 年,为了打发无所事事的圣诞节假期,Guido 开始写 Python 语言的编译/解释器,P....
的头像 电子发烧友网工程师 发表于 03-10 10:03 508次 阅读
CSDN为所有感兴趣的开发者提供了一个探讨和学习Python的契机

如何破解Jetbrains旗下软件永久破解方法说明

做Java开发和Python开发的人,或多或少知晓其对应的IDE,IntelliJ IDEA和Pyc....
的头像 电子发烧友网工程师 发表于 03-09 09:33 346次 阅读
如何破解Jetbrains旗下软件永久破解方法说明

机器学习实战PDF中文版电子书免费下载

机器学习是人工智能研究领域中的一个极其重要的方向。在现今大数据时代的背景下捕获数据并从中萃取有价值的....
发表于 03-08 08:00 64次 阅读
机器学习实战PDF中文版电子书免费下载

慢慢探秘Matplotlib的强大之处

添加标题添加标题可以通过title函数来实现,该函数主要有两个参数,第一个是str,指明标题的内容,....
的头像 电子发烧友网工程师 发表于 03-07 14:41 222次 阅读
慢慢探秘Matplotlib的强大之处

为什么数据分析师都要求写代码?

分析软件每开发出一个新功能需要大量投入。而Python作为编程语言,开发新工具相对容易,一个人开发一....
的头像 电子发烧友网工程师 发表于 03-06 14:21 383次 阅读
为什么数据分析师都要求写代码?

教你用Python做一个特别的表白礼物

30秒教会你用Python制作520表白神器
发表于 03-06 06:12 46次 阅读
教你用Python做一个特别的表白礼物

【PYNQ-Z2试用体验】pynq z2 基本led控制

关于块板子的启动教程我就不多累述了,有很多网友都介绍得很清楚了,不清楚的可以去看看别的网友的贴,我就来写一下关于这块板子...
发表于 03-05 14:27 295次 阅读
【PYNQ-Z2试用体验】pynq z2 基本led控制

BF70x加密密钥的产生步骤

BF70X系列帮助文件中中提到BF70x的加密密钥的产生步骤,起初按照方法始终无法成功,现将成功版本进行一次分享 步骤1:官网...
发表于 03-05 14:19 54次 阅读
BF70x加密密钥的产生步骤

如何将自己的脚本代码放到服务器上运行

连接服务器可以在这个页面的右边的远程连接进行连接,这个第一次点进去会有个远程连接密码,需要记住,因为....
的头像 电子发烧友网工程师 发表于 03-05 09:41 546次 阅读
如何将自己的脚本代码放到服务器上运行

python入门教程简明Python教程中文版免费下载

Python 可能是极少数既简单有强大的编程语言中的一种。这对初学者和专家都是好事,更重要的是,用它....
发表于 03-05 08:00 64次 阅读
python入门教程简明Python教程中文版免费下载

Python机器学习基础教程PDF版电子书免费下载

本书是机器学习入门书,以 Python 语言介绍。主要内容包括 :机器学习的基本概念及其应用 ;实践....
发表于 03-04 08:00 104次 阅读
Python机器学习基础教程PDF版电子书免费下载

【PYNQ-Z2试用体验】神经网络基础知识

前言前面我们通过notebook,完成了在PYNQ-Z2开发板上编写并运行python程序。我们的最终目的是基于神经网络,完成手写的数字...
发表于 03-03 22:10 257次 阅读
【PYNQ-Z2试用体验】神经网络基础知识

如何学习自然语言处理NLP详细学习方法说明

这篇文章是一名自然语言处理(nlp)的初学者,在nlp里摸爬滚打了许久的一些心得,推荐了nlp的学习....
的头像 人工智能爱好者社区 发表于 03-03 11:05 315次 阅读
如何学习自然语言处理NLP详细学习方法说明

代码实例及详细资料带你入门Python数据挖掘与机器学习

本文结合代码实例待你上手python数据挖掘和机器学习技术。 本文包含了五个知识点: 1. ....
的头像 马哥Linux运维 发表于 03-03 10:10 394次 阅读
代码实例及详细资料带你入门Python数据挖掘与机器学习

让你学写Python装饰器的五大理由

你必须学写Python装饰器的五个理由
的头像 马哥Linux运维 发表于 03-02 10:06 252次 阅读
让你学写Python装饰器的五大理由

Python开发人员年度调查来了!

在我们的调查中,84%的 Python 用户使用 Python 作为他们的主要语言,而 16%的用户....
的头像 新智元 发表于 03-02 09:23 305次 阅读
Python开发人员年度调查来了!

怎么用Python制作自己的专属表情包?

不要和会Python的人斗图!
的头像 马哥Linux运维 发表于 03-01 17:31 716次 阅读
怎么用Python制作自己的专属表情包?

Python工程师面试时需要准备什么

随着互联网的发展,python语言现在变得越来越火爆,Python程序员越来越受到大家的青睐!那么想....
的头像 工程师人生 发表于 03-01 14:25 246次 阅读
Python工程师面试时需要准备什么

如何学Python?“幼年”被鄙视,“长大”后却是高级脸

关于成为软件工程师,我认为至少要包括程序设计和程序开发这两项能力,甚至程序设计更重要。Python有....
的头像 电子发烧友网工程师 发表于 03-01 09:45 365次 阅读
如何学Python?“幼年”被鄙视,“长大”后却是高级脸

深入了解2018年Python开发者的现状

该问题是单选,乍一看,Web开发大幅领先(27%),大幅超过数据分析(17%)。但仔细观察后发现,机....
的头像 电子发烧友网工程师 发表于 03-01 09:42 1454次 阅读
深入了解2018年Python开发者的现状

各种排序算法的分析及java&python实现

排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过....
的头像 电子发烧友网工程师 发表于 02-28 16:14 237次 阅读
各种排序算法的分析及java&python实现

编程语言其实不重要,重要的是要明白如何和计算机交流

上面的例子我们已经让电脑成功的可以根据不同的情况去水果店买西瓜了,但是若老板不打折,你就吃不到西瓜了....
的头像 电子发烧友网工程师 发表于 02-27 10:10 421次 阅读
编程语言其实不重要,重要的是要明白如何和计算机交流

Python爬取赶集网北京二手房数据&R对爬取的二手房房价做线性回归分析

主要思路是探究单个自变量对因变量的影响,对房价的影响因素进行模拟探究之前,首先对各变量进行描述性分析....
的头像 电子发烧友网工程师 发表于 02-27 09:49 451次 阅读
Python爬取赶集网北京二手房数据&R对爬取的二手房房价做线性回归分析

对中科大计算机相关专业感兴趣的学子们有福啦

我们可以看到当前的课程目录包括编译原理和技术、并行计算、操作系统原理与设计、c程序设计、程序设计语言....
的头像 电子发烧友网工程师 发表于 02-26 09:52 775次 阅读
对中科大计算机相关专业感兴趣的学子们有福啦

Python调试器,快速定位各种疑难杂症

pdb 是 Python 自带的库,为 Python 提供了一种交互式的源码调试功能,包含当前调试器....
的头像 电子发烧友网工程师 发表于 02-26 09:40 306次 阅读
Python调试器,快速定位各种疑难杂症

Python+微信一键连接实现远程管理Windows10操作系统的开机和关机

首先通过微信发送开机指令,这里我使用的是 itchat 程序会调用 Paramiko 库去 SSH ....
的头像 电子发烧友网工程师 发表于 02-25 09:17 506次 阅读
Python+微信一键连接实现远程管理Windows10操作系统的开机和关机

带你一起学习彻底搞懂Python生成器

在这说「迭代器」的原因是「生成器」自动实现了「迭代器协议」,所谓协议,就是一种约定。为了更好的理解生....
的头像 电子发烧友网工程师 发表于 02-25 09:13 271次 阅读
带你一起学习彻底搞懂Python生成器

Python社区的指导委员会治理方案引领社区走向何方

Python社区贡献出来的指导委员会治理方案,会带来什么样的变化,会引领社区走向何方呢?拭目以待。
的头像 电子发烧友网工程师 发表于 02-23 10:33 997次 阅读
Python社区的指导委员会治理方案引领社区走向何方

快速提升Python开发和配置效率的5个小技巧分享

在以前,作为一个刚开始使用Python的开发者,我时常为布设一个有效的开发环境感到困扰。找到一套自己....
的头像 马哥Linux运维 发表于 02-21 17:05 556次 阅读
快速提升Python开发和配置效率的5个小技巧分享

深度学习可能需要比Python更灵活更易于用的新编程语言

尽管工程师们普遍定位 Python 是简单、优雅的编程语言,但它并非毫无缺点,比如人们一直吐槽它的执....
的头像 电子发烧友网工程师 发表于 02-21 10:23 673次 阅读
深度学习可能需要比Python更灵活更易于用的新编程语言

盘点史上最全的Python算法集

本文是一些机器人算法(特别是自动导航算法)的Python代码合集。其主要特点有以下三点:选择了在实践....
的头像 电子发烧友网工程师 发表于 02-21 10:04 1670次 阅读
盘点史上最全的Python算法集

一名Python开发工程师的职业规划

Python 是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强....
的头像 工程师人生 发表于 02-20 14:46 325次 阅读
一名Python开发工程师的职业规划

通过Python将故宫的建筑物图片,转化为手绘图

把图像看成二维离散函数,灰度梯度其实就是这个二维离散函数的求导,用差分代替微分,求取图像的灰度梯度。....
的头像 电子发烧友网工程师 发表于 02-19 09:26 3740次 阅读
通过Python将故宫的建筑物图片,转化为手绘图