python 语音播放,python语音处理

  python 语音播放,python语音处理

  单位经常用广播通知临时事项(把文字转换成语音再通过功放广播),但市面上的语音播放软件大多是收费的,要么发音失真,要么不够稳定。3354经常有莫名其妙的毛病,容易给工作带来被动。学了这么久Python,不如自己写个语音播报软件,就算出了问题也能自己排忧解难。

  一个

  接口设计

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

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

  * * *步骤:创建表单。

  设置标题、大小等元素。为了避免显示格式混乱,将其设置为不可更改的大小。代码如下:

  第二步是设置一个控件。

  用来接受收入的文本,在这里,用滚动条选择文本,代码如下:

  第三步,提供选项。

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

  第四步,建立函数事件的触发接口。

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

  最终的界面效果如下:

  2

  语音回放

  “清除”和“退出”的功能相对简单。这里详细讲解——语音播放的关键功能。

  1).语音界面

  文语转换推荐使用百度云的REST API接口,登录网站http://ai.baidu.com/,依次进入console 3354的语音技术页面,创建自己的语音应用(下图),其中代码中会用到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为情感合成-度gxdsb,默认为普通女声。Vol:音量,取值为0-15,默认为5中音量。

  Pit:音调,取值0-9,默认为5个音调。

  Spd:语速,0-9,默认为5。Zh 和1分别是语音模式和客户端类型,都是固定值,不可修改。

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

  2)功能设计

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

  首先,界面中的语音风格选项要与语音合成功能参数一一对应。这是典型的键和值的对应关系,使用字典作为数据结构是合适的。

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

  * * *对于音调和语速,不需要设置太细的精度等级。这里选取跨度明显的三个档次进行区分。

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

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

  三

  包装

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

  pyinstaller -w tk_voice.py

  此时在同一个目录下会生成一个dist文件夹,就是打包的程序文件。让我们运行。exe文件,之前设计的程序界面就会出现。在文本框中输入一段测试文字:‘全体员工,请注意,全体员工,请马上下楼集合吃饭。”,单击“播放”按钮试试效果:

  插入音频———— test.mp3。

  * * *,关于Pyinstaller的使用,有几点需要注意:

  这种方法只适用于windows系统,对系统版本要求严格。例如,在64位系统下打包的程序不能在32位系统下运行。

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

  如果中途用pyinstaller打包失败,原来的Py文件内容可能会丢失,所以* * *打包前做个备份。

  使用import尽可能有选择地导入其他库。不要导入整个库,否则打包的文件会非常大。

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

  [责任编辑:绝望的糖豆电话:(010) 68476606]

  0赞赞

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: