Python实战---制做专属有声小说(调用百度语音合成接口)

这一次的目标是使用百度云的人工智能接口,实现文字转语音的实时转换,将小说文字转换成语音朗读出来。python

百度云接口调用

百度的这个接口对于咱们普通用户很是友好,他的不少功能都是免费的,并且咱们天天能够免费调用这个接口五千次,很是适合咱们玩转这些功能。api

注册百度云帐号

首先打开百度云语音合成模块接口地址
打开网址后点击《当即使用》选项,而后会出现登陆的选项界面。若是没有帐号,须要先注册一个百度云帐号,注册方法很是简单,我就不过多赘述了
登陆帐号以后,会自动进入控制台界面,由于如今咱们尚未建立应用,这里显示的就是0个
app

点击应用列表,建立应用,弹出的建立应用配置项,其中的内容随意填写便可框架

填写完成,点击当即建立,返回到应用列表,此时可发现个人应用下多出了一个应用项目人工智能

使用接口

安装模块

在python环境下使用该接口必需要安装模块3d

pip install baidu-aip

安装成功可见以下提示
code

生成一段语音

经过查看百度语音合成的技术文档,能够发现以下的几个参数:
blog

将这些参数传递到技术文档所给的框架中,就能够生成一段语音:接口

from aip import AipSpeech

app_id = '你的Appid'
api_key = '你的API key'
secret_key = '你的 screct key'

client = AipSpeech(app_id,api_key,secret_key)

result = client.synthesis('人生得意须尽欢,莫使金樽空对月','zh','1',
                         {"vol": 9,
                          "spd": 4,
                          "pit": 9,
                          "per": 3,
                         })

with open("audio.mp3","wb") as f:
    f.write(result)

运行完这一段代码以后,就会在当前文件夹下生成一个audio.mp3的音频文件,打开以后就是能够听到朗诵的诗句ip

小说文字转语音

在阅读了技术文档以后,可知这个模块最大的限制就是一次转换的语音不能超过1024字节(大约是512个汉字),因此咱们要进行的第一步操做就是将一篇小说切割成若干个五百字数的文本文档。
首先我先找到一篇小说,将它复制到文档中,命名为read.txt 接下来我准备使用代码来切割小说内容,一段的字数为500字
先将小说的内容提取出来,每隔1000个字节(500字)加上“---”的符号做为切割标志

with open('read.txt','r') as a:
    text = a.readlines()

for cut in text:
    #以1000个字节的长度进行分割
    text_cut = re.findall('.{1000}', cut)
    text_cut.append(cut[(len(text_cut) * 1000):])
    #在分割后的字符串中间插入"---"
    text_final = '---'.join(text_cut)
#计算文本中有多少个"---"标志
times = text_final.count('---')

以后将文本以---为标志进行分割,并分别将内容赋值到name变量中。正常来讲,列表的起始位为第0位,可是为了知足咱们的阅读习惯,因此将这些文本从1开始计数

for n in range(0,times+1):
    name = text_final.split('---')[n]

最后一步,将提取出来的文本内容传入api接口,输出语音文件
完整代码(将三个参数替换成以前申请的内容)

import re
from aip import AipSpeech

app_id = 'id'
api_key = 'APIkey'
secret_key = 'screctkey'

client = AipSpeech(app_id,api_key,secret_key)

with open('read.txt','r') as a:
    text = a.readlines()

for cut in text:
    #以1000个字节的长度进行分割
    text_cut = re.findall('.{1000}', cut)
    text_cut.append(cut[(len(text_cut) * 1000):])
    #在分割后的字符串中间插入"---"
    text_final = '---'.join(text_cut)
#计算文本中有多少个"---"标志
times = text_final.count('---')
for n in range(0,times+1):
    name = text_final.split('---')[n]
    result = client.synthesis(name, 'zh', '1',
                              {"vol": 9,
                               "spd": 4,
                               "pit": 9,
                               "per": 3,
                               })

    with open('test/' + str(n + 1) + '.mp3', "wb") as d:
        print('正在生成第' + str(n + 1) + '段语音......')
        d.write(result)

实现结果:

打开test文件夹,点击mp3文件就能够开始听小说了

有一说一,这个百度人工智能所装换的语音很是像有我的在你旁边给你读书,体验感远超pyttsx3模块,很是nice! 百度的人工智能接口还有很是多好用的功能,例如人脸识别、语音转文字、人脸对比......感兴趣的同窗能够本身去探索一下

相关文章
相关标签/搜索