python 语音转文字_《奇巧淫技》系列-Python实现 语音转文字??非也!!是文字转语音,DIY你想要的萝莉音!!!-Go语言中文社区...

news/2024/7/24 12:52:23 标签: python 语音转文字

本文章纯野生,无任何借鉴或抄袭他人文章。坚持原创前提一:有一篇你很喜欢的文章或者小说,阅读起来眼睛会很干涉之类的。

前提二:老人家看书不方便,将文字转换成语音,再进行播放。

前提三:想DIY你自己的御姐音,萝莉音,萌妹音…

通通都没有问题!python帮助你实现

有以上前提之一,看这篇文章就对了。

而这篇文章!!将详细讲解如何实现文字转换为语音。

主要运用到的技术是 百度AI的语音合成,是大厂百度AI开放平台给咱们提供的。

本次内容共有下面三个步骤。

1.创建百度AI应用

1.1创建应用

首先注册一个百度的账号,然后在登陆的主页:https://ai.baidu.com/ 这里选择 创建应用。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

因为本次讲的是文字转语音,后面会调用到语音合成,所以在这里主要勾选文字识别的接口就足够了。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

应用创建成功后,如下图。可以看到有 AppID,API Key,Secret Key对应着一堆字符,下面会用到。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

1.2 查看开发文档

# cmd 执行以下命令即可

pip install baidu-aip

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

2.文字转语音代码

2.1 建立连接

基于百度文字识别的接口,我们就可以轻松的获取语音合成能力。

先来看一下开发文档说明,这个时候就需要用到创建应用的三个key了。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

上面创建应用时候的三个APP_ID,API_KEY,SECRET_KEY现在就可以排上用场。

from aip import AipSpeech

""" 你的 APPID AK SK """

APP_ID = '你的 App ID'

API_KEY = '你的 Api Key'

SECRET_KEY = '你的 Secret Key'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

2.2 请求说明实例

看到请求说明,合成文本的长度是不能超过1024字节的。

合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

从文档中提供的表格中可以看到,宅男们想要的御姐音,萝莉音,萌妹音就修改per的值就可以 了。

参数

类型

描述

必须tex

String

合成的文本,使用UTF-8编码,请注意文本长度必须小于1024字节

cuid

String

用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内

spd

String

语速,取值0-9,默认为5中语速

pit

String

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

vol

String

音量,取值0-15,默认为5中音量

per

String

发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女

2.2.1 成功请求实例

from aip import AipSpeech

APP_ID = '17765773'

API_KEY = 'ofM3grxxxxxxxxxxxxxxxxxxx'

SECRET_KEY = 'Ry7xN5UhCxxxxxxxxxxxxxxxxxxxxx'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {

'vol': 5, 'per': 0

})

print(result)

可以看到请求成功后返回的的是语音二进制文件的。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

2.2.2 失败请求实例

from aip import AipSpeech

APP_ID = '17765773'

API_KEY = 'ofMxxxxxxxxxxxxxxxxxxxx'

SECRET_KEY = 'Ry7xN5Uxxxxxxxxxxxxxxxxxxxx'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', {

'vol': 5, 'per': 0

})

print(result)

而请求失败,则是返回dict

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

2.2.3 将文字合成语音文件

from aip import AipSpeech

APP_ID = '17765773'

API_KEY = 'ofM3grRRK87palH7LoR9cs7A'

SECRET_KEY = 'Ry7xN5UhC1mpnSGGcx7dyn8Zjwij8scY'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {

'vol': 5, 'per': 0

})

# 识别正确返回语音二进制 错误则返回dict 错误码参照开发文档

if not isinstance(result, dict): # 如果result不是dict(字典)

with open('audio.mp3', 'wb') as f:

f.write(result)

可以看到该程序的文件夹下面多了一个audio.mp3文件,打开听一听,就是文字转换后的语音文件了。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA4MTU3NQ==,size_16,color_FFFFFF,t_70

2.2.4 打造专属于你的御姐音,萌妹音等

这一步特别简单,只需要修改per的值便可,可男声可女声

pit的值也可以进行修改,可低音可高音。这些根据个人喜好DIY即可。

3.完整代码

3.1 字符串合成语音

from aip import AipSpeech

APP_ID = '177657xx'

API_KEY = 'ofM3grxxxxxxxxxxxxxxxx'

SECRET_KEY = 'Ry7xN5UhC1mpxxxxxxxxxxxxxxx'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

result = client.synthesis('你好呢,今天是2019年11月14日下午', 'zh', 1, {

'vol': 5, 'per': 0

})

# 识别正确返回语音二进制 错误则返回dict 错误码参照开发文档

if not isinstance(result, dict): # 如果result不是dict(字典)

with open('audio.mp3', 'wb') as f:

f.write(result)

3.2 txt文本合成语音

from aip import AipSpeech

APP_ID = '17765773'

API_KEY = 'ofM3grRRK87xxxxxxxxxx'

SECRET_KEY = 'Ry7xN5UhC1mpnSxxxxxxxxxxxxxxx'

client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

# test.txt 为同级目录下的文本

with open('test.txt', 'r') as f:

f_read = f.read()

result = client.synthesis(f_read, 'zh', 1, {

'vol': 5, 'per': 0

})

# 识别正确返回语音二进制 错误则返回dict 错误码参照开发文档

if not isinstance(result, dict): # 如果result不是dict(字典)

with open('audio.mp3', 'wb') as f:

f.write(result)

既然学会了文字转语音,那我加上天气预报 与 语音 一起 每天以邮件方式发送给喜欢的人岂不是很完美?那赶紧动手操作吧!

python!!每日早上八点自动向QQ邮箱发送天气预报邮件

根据上述操作,自行DIY专属于你的语音吧!!

好了,本次的分享就到这里。

这次的分享就到这里。如果有什么疑问可以在下方留言哦。


http://www.niftyadmin.cn/n/1498243.html

相关文章

今日总结 8/13 8/14

昨天和今天都没有什么内容需要整理发博客的,这两天主要是复习准备开学考试的内容,要复习的东西比较多,另外晚上还上了辅导课,明天继续复习,另外抽空复习复习前端的知识以免忘记。

nsq topic和channel的区别

topic:一个可供订阅的话题。channel:属于topic的下一级,一个topic可以有多个channel。二者关系可以再参考下面两文章:http://www.cnblogs.com/forrestsun/p/3892710.htmlhttp://www.linuxeden.com/html/news/20140301/148960.html举个例子:to…

python的界面文字翻译_我用40行python代码写一个桌面翻译器,很nice

我们进行制作软件所需要的模板库,首先要进行引用。 另外大家要注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的Pytho…

Centos上安装CPAN

在用一个reads的QC软件:ngShoRT, 这个软件需要配套的String::Approx, PerlIO::gzip, 那只能下载这两个软件。ngShoRT的说明书上写的是需要用CPAN下载,试了一下虚拟机上没有CPAN,那句只能先安装一个。从来没有安装过,表…

Javascript01——编程语言?计算机基础 ?初识JavaScript ?JavaScript注释?变量的概念?变量的使用 ?数据类型 ?

1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过 程。 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌握的语言来编写的,所 以人们要控制计算…

python 九九乘法表 长方形_【转】Python实现不同格式打印九九乘法表

前言:最近在学习Python,学习资源有慕课网上的视频教程、菜鸟教程以及Python官方文档tutorial。虽然了解了Python的基本语法,但是还没有真正意义上输出自己写的代码。代码小白,之前仅学过C,代码上的逻辑问题总是理不清楚…

python frame_python3 selenium自动化 frame表单嵌套的切换方法

在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位。 我拿QQ邮箱登录来作为例子说下frame怎么切换。qq邮箱页面按F12可以看到以下信息:表单的信息如下:width&q…

最近+今日总结 8/22

1.最近确实没啥好写博客的东西,都是在复习开学要期末考的内容。写课程报告也花了我好几天,所以最近博客没啥动静。昨天晚上把课程报告写完了,英语还差三篇课文没有看了,现在每天就复习复习英语,然后学习JavaScript&…