python文本转语音

概述

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

使用方法:

1。 首先在百度百度AI网址,开通文本转语音服务,

2。 拿到apikey, 就可以通过python调用API,把文本传递给百度,百度返回给我们对应的配音。

代码

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

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

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

python 复制代码
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
相关推荐
用户8356290780514 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户8356290780514 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
你好潘先生12 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师12 小时前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码12 小时前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
copyer_xyf12 小时前
FastAPI 如何连接 MySQL
后端·python
apocelipes1 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780511 天前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent1 天前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m6251 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python