利用百度语音将本地文档转成mp3语音文件

准备环境

  1. python3.8

  2. 百度智能云-AI开放平台:https://ai.baidu.com/ai-doc/SPEECH/Ik4nlz8l6

  3. AI开放平台-AI接入指南: https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3

  4. 语音合成python 接口说明: https://ai.baidu.com/ai-doc/SPEECH/Gk4nlz8tc

准备步骤

  1. 首先需要登录百度智能云,然后按照AI接入指南创建工单。网友参考: https://blog.csdn.net/AlexDish/article/details/104468862

  2. 通过后,就有了你代码中所需要的APP_ID 等信息。

  3. 语音合成需要免费领取语音库。具体步骤如下。


    y1.png
y2.png
y3.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
版权所有,欢迎保留原文链接进行转载:)

你可能感兴趣的:(利用百度语音将本地文档转成mp3语音文件)