from urllib.request import urlretrieve
from urllib import parse
import requests
import random
import jsonpath
import os
my_headers=[
"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36",
"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14",
"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)"
]
save_path = r'E:\Vedio\百度识别语音\转换语音.mp3'
#需要转语音的文字路径
sb_path = r'E:\Vedio\百度识别语音\bd_mp3_print.txt'
header = {'User-Agent': random.choice(my_headers)}
def add_saveFile():
if not os.path.exists('E:\Vedio\百度识别语音'):
os.mkdir(r'E:\Vedio\百度识别语音')
def get_url(text):
AppID = '你的ID'
API_KEY = '你的ApiKEy'
SECRET_KEY = '你的密码'
getTok = f'https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id={API_KEY}&client_secret={SECRET_KEY}'
json = requests.get(getTok,headers=header).json()
#获取TOK TOK可以用于生成转换后的音频文件
access_token = jsonpath.jsonpath(json,'$..access_token')
for acc in access_token:
access = acc
#TOK的有效期 单位秒
expires_in =jsonpath.jsonpath(json,'$..expires_in')
print('tok:',access_token,'有效期:',expires_in)
#cuid 为百度开放平台自己创建的(AppID)
#url中参数 tok上面生成的TOK
# text为转换的文字
# vol音量0-15
# per是发音人度博文=106,度小童=110,度小萌=111,度米朵=103,度小娇=5度小宇=1,#度小美=0,度逍遥=3,度丫丫=4
# #spd为语速0-15
# pit音调,0-15,
# aue保存音频格式常用 3 mp3格式
vol = input('请选择音量(0-15)')
per = input('请选择发音人(度博文=106,度小童=110,度小萌=111,度米朵=103,度小娇=5度小宇=1)')
spd = input('请选择语速(0-15)')
pit = input('请选择音调(0-15)')
print('正在生成-------------------------')
url = f'http://tsn.baidu.com/text2audio?lan=zh&ctp=1&cuid={AppID}&tok={access}&tex={text}&vol={vol}&per={per}&spd={spd}&pit={pit}&aue=3'
return url
if not os.path.exists(sb_path):
add_saveFile()
open(sb_path,'w')
print(r'E:\Vedio\百度识别语音\bd_mp3_print.txt 文件创建成功')
with open(sb_path)as r:
text = r.read()
if text == '' and len(text) == 0:
print('E:\Vedio\百度识别语音\bd_mp3_print.txt 文件没有内容')
else:
encode_text_1 = parse.quote(text)#将转换的文本第一次url_encode utf-8编码
encode_text_2 = parse.quote(encode_text_1)#第二次编码(百度对二次编码有更好的支持)
url = get_url(encode_text_2)
urlretrieve(url,save_path)
print('请查看E:\Vedio\百度识别语音\转换语音.mp3')
一键复制
编辑
Web IDE
原始数据
按行查看
历史