python文本转语音

概述

目前有文本转语音的技术,可以用在配音领域,我个人因为一些需求,所以开始寻找这方面的资源,目前各大平台,比如腾讯,讯飞,阿里,百度等都有这样的API服务,我个人是是使用百度的文本转语音服务。价格比较便宜。2块钱基本可以转20000个字,基本10块钱就够我用一年了。

使用方法:
1。 首先在百度百度AI网址,开通文本转语音服务,
2。 拿到apikey, 就可以通过python调用API,把文本传递给百度,百度返回给我们对应的配音。

代码

通过执行以下代码,我们就可以得到一个链接,点击该链接,就可以看到我们成功的把我们的文本,转为音频后的文件。
在这里插入图片描述

  • 源代码
    注意,需要将 API_KEYSECRET_KEY 改为自己在百度平台申请的key。

关于更详细的API到家可以参考: 百度官方-长文本转语音API

import requests
from dotenv import load_dotenv
from time import sleep
import json
import os

# api 地址:
# https://ai.baidu.com/ai-doc/SPEECH/ulbxh8rbu

load_dotenv(dotenv_path = ".env",override = True)

API_KEY = os.environ.get("API_KEY")
SECRET_KEY = os.environ.get("SECRET_KEY")

def create_a_task(text_2_voice):
    """传入文本,转为音频

    Args:
        text_2_voice (str or list): 文本,或者文本数组

    Returns:
        json: 包含任务id的json序列
    """

    url = (
        "https://aip.baidubce.com/rpc/2.0/tts/v1/create?access_token="
        + get_access_token()
    )

    payload = json.dumps(
        {
            "text": text_2_voice,  # 待合成的文本
            "format": "wav",  # 音频格式
            "voice": 0,  # 音库
            "lang": "zh",  # 语言,固定zh
            "speed": 5,  # 语速
            "pitch": 5,  # 音调
            "volume": 5,  # 音量
            "enable_subtitle": 2,  # 是否开启字幕时间戳,取值范围0, 1, 2
            "break": 5000,  # 段落间隔
        }
    )
    headers = {"Content-Type": "application/json", "Accept": "application/json"}

    response = requests.request("POST", url, headers=headers, data=payload)
    print(response.json())
    return response.json()


def get_task_results(task_id: list):
    """查询id是否已经完成了文本转语音

    Args:
        task_id (list): id

    Returns:
        json: 目前结果
    """
    url = (
        "https://aip.baidubce.com/rpc/2.0/tts/v1/query?access_token="
        + get_access_token()
    )

    payload = json.dumps({"task_ids": [task_id]})  # create获取的task_id
    headers = {"Content-Type": "application/json", "Accept": "application/json"}

    response = requests.request("POST", url, headers=headers, data=payload)

    return response.json()


def get_access_token():
    """
    使用 AK,SK 生成鉴权签名(Access Token)
    :return: access_token,或是None(如果错误)
    """
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {
        "grant_type": "client_credentials",
        "client_id": API_KEY,
        "client_secret": SECRET_KEY,
    }
    return str(requests.post(url, params=params).json().get("access_token"))


if __name__ == "__main__":
    task_id = create_a_task(["我叫龙傲天,我最爱学习", "天下无双"])["task_id"]
    while True:
        status_results = get_task_results(task_id=task_id)["tasks_info"]
        if status_results[0]["task_status"] == "Success":
            print("---------------------------------------")
            print(status_results[0]["task_result"]["speech_url"])
            print("---------------------------------------")
            break



  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早睡的叶子

你的鼓励就是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值