73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
# coding=utf-8
|
||
import base64
|
||
import json
|
||
import uuid
|
||
import requests
|
||
import os
|
||
|
||
text = ''' 群友们好啊!我是浑元形意太极门掌门人马保国。刚才有个后生问我:马老师,伟哥要我用马保国的语音包生成一段文字,代码写不出来怎么搞?我说年轻人要讲码德!耗子尾汁,好好反思! 我这一招【闪电五连鞭】——(甩手噼啪响)
|
||
|
||
if-elif-elif-elif-else!很快啊!传统编程讲究化劲儿,四两拨千斤。你import一堆库,啊?有备而来! 可try了半天except抓不住异常,我大意了啊没有闪! 一个return不写,左正蹬500报错,右鞭腿404崩溃,不讲码德! 我劝这位年轻人——(收势摇头)好好编程,莫搞偷袭!'''
|
||
|
||
# 填写平台申请的appid, access_token以及cluster
|
||
appid = "9407991441"
|
||
access_token = "VBI4pixTt-GaARTdacAAdQPrHMY333Di"
|
||
cluster = "volcano_icl" # 使用您提供的Cluster ID
|
||
voice_type = "S_xQVFJrvA1" # 使用您提供的声音ID
|
||
|
||
host = "openspeech.bytedance.com"
|
||
api_url = f"https://{host}/api/v1/tts"
|
||
|
||
header = {"Authorization": f"Bearer;{access_token}"}
|
||
|
||
request_json = {
|
||
"app": {
|
||
"appid": appid,
|
||
"token": "access_token",
|
||
"cluster": cluster
|
||
},
|
||
"user": {
|
||
"uid": "388808087185088"
|
||
},
|
||
"audio": {
|
||
"voice_type": voice_type,
|
||
"encoding": "mp3",
|
||
"speed_ratio": 1.0,
|
||
"volume_ratio": 1.0,
|
||
"pitch_ratio": 1.0,
|
||
},
|
||
"request": {
|
||
"reqid": str(uuid.uuid4()),
|
||
"text": text,
|
||
"text_type": "plain",
|
||
"operation": "query",
|
||
"with_frontend": 1,
|
||
"frontend_type": "unitTson"
|
||
|
||
}
|
||
}
|
||
|
||
if __name__ == '__main__':
|
||
try:
|
||
resp = requests.post(api_url, json.dumps(request_json), headers=header)
|
||
print(f"resp body: \n{resp.json()}")
|
||
if "data" in resp.json():
|
||
# 创建语音文件夹(如果不存在)
|
||
folder_path = "./语音"
|
||
if not os.path.exists(folder_path):
|
||
os.makedirs(folder_path)
|
||
|
||
# 生成文件名
|
||
filename = f"tts_output_{request_json['request']['reqid']}.mp3"
|
||
file_path = os.path.join(folder_path, filename)
|
||
|
||
# 保存音频文件
|
||
data = resp.json()["data"]
|
||
with open(file_path, "wb") as file_to_save:
|
||
file_to_save.write(base64.b64decode(data))
|
||
|
||
print(f"音频文件已保存至: {file_path}")
|
||
except Exception as e:
|
||
print(f"发生错误: {e}")
|
||
e.with_traceback()
|