准备环境
-
python3.8
-
百度智能云-AI开放平台:https://ai.baidu.com/ai-doc/SPEECH/Ik4nlz8l6
-
AI开放平台-AI接入指南: https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3
-
语音合成python 接口说明: https://ai.baidu.com/ai-doc/SPEECH/Gk4nlz8tc
准备步骤
-
首先需要登录百度智能云,然后按照AI接入指南创建工单。网友参考: https://blog.csdn.net/AlexDish/article/details/104468862
-
通过后,就有了你代码中所需要的APP_ID 等信息。
-
语音合成需要免费领取语音库。具体步骤如下。
y1.png
代码部分
准备后,可以参考接口文档,书写代码了。
语音合成最多字符为1024, 为了让大于1024的文本也能合成为mp3文件,我们追加写入。文中所用文本为一月份时事政治,哈哈哈。
# -*- coding: UTF-8 -*-
# __author__ = 'shelly.si'
from aip import AipSpeech
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''
def gen_v():
# 接口调用
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
# 进行合成并返回
filename = "word2voice" # 生成的mp3文件名
word_file = './long_word.txt' # 本地文本
chunk_size = 800 # 限制大小
for r_content in get_one_article(word_file, chunk_size):
print(r_content)
result = client.synthesis(r_content, 'zh', 1, {'spd': 4, 'vol': 5, 'per': 3})
# 识别正确返回语音二进制 错误则返回dict
if not isinstance(result, dict):
with open(filename + '.mp3', 'ab') as f:
f.write(result)
def get_one_article(word_file, chunk_size):
"""读取文本"""
file_content = open(word_file, encoding='utf-8')
while True:
chunk_data = file_content.read(chunk_size)
if not chunk_data:
break
yield chunk_data
if __name__ == '__main__':
gen_v()
文本内容如下:
y5.png
结果生成文件:
y6.png
非常适合上下班路上读一些你想要的内容,而且可以选择自己喜欢的声音和语速,虽然没有付费的好,但是足够使用了,大家试试吧~
作者:g_s_007
出处:https://www.jianshu.com/p/c0d4385df1c2
版权所有,欢迎保留原文链接进行转载:)
网友评论