tts sdk 安装使用

news/2025/11/14 17:34:33/文章来源:https://www.cnblogs.com/flyingsir/p/19222856
# 安装/验证 SDK 版本(3.0.1460)
pip install tencentcloud-sdk-python-tts==3.0.1460
pip install websocket-client==0.48 requests

  

 

 

 

tts_sdk

# -*- coding: utf-8 -*-
import os
import json
import time
import requests
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
# 导入SDK内置的旧版接口(v20190823)
from tencentcloud.tts.v20190823 import tts_client, models# ===================== 配置区 =====================
# 你的腾讯云密钥(直接替换,本地运行安全)
SECRET_ID = "AKIDHQgomY6ScdZIo9HQZYLvIRM7g2EC1d2E"
SECRET_KEY = "1zjGZgbJn493jKjvufCWeYEh070gAapt"
REGION = "ap-beijing"  # 地域
OUTPUT_DIR = "temp"    # 音频输出目录
OUTPUT_FILENAME = "tts_sdk_output.mp3"# 旧版接口支持的音色列表(8位ID,SDK 3.0.1460 兼容)
VOICE_LIST = {"智逍遥男声": 10510000,  # 旁对白阅读风格"智瑜女声": 10510001,    # 温柔知性"智聆新闻男声": 10510002,# 标准新闻播报"智美可爱女声": 10510003,# 甜美可爱"智云商务男声": 10510004,# 沉稳专业"智睿男声": 10510005,    # 成熟稳重"智甜女声": 10510006     # 清甜灵动
}
# ==================================================def init_client():"""初始化TTS客户端"""try:# 实例化认证对象cred = credential.Credential(SECRET_ID, SECRET_KEY)# 配置HTTP选项httpProfile = HttpProfile()httpProfile.endpoint = "tts.tencentcloudapi.com"  # TTS接口域名# 配置客户端选项clientProfile = ClientProfile()clientProfile.httpProfile = httpProfile# 实例化TTS客户端client = tts_client.TtsClient(cred, REGION, clientProfile)print("✅ 客户端初始化成功")return clientexcept TencentCloudSDKException as err:print(f"❌ 客户端初始化失败:{err}")return Nonedef create_tts_task(client, text, voice_name="智逍遥男声", speed=1.0, volume=1.0):"""创建TTS转换任务,返回TaskId"""# 验证音色if voice_name not in VOICE_LIST:print(f"❌ 无效音色!可选音色:{list(VOICE_LIST.keys())}")return Nonevoice_type = VOICE_LIST[voice_name]print(f"\n=== 任务参数 ===")print(f"文本:{text[:20]}...")print(f"音色:{voice_name}(ID:{voice_type})")print(f"语速:{speed} | 音量:{volume} | 格式:mp3")print("===============")try:# 构造请求参数(旧版接口用 Codec 指定格式)params = {"Text": text,"ModelType": 1,          # 默认模型"VoiceType": voice_type, # 音色ID"Speed": speed,          # 语速(0.6-1.4)"Volume": volume,        # 音量(0.0-10.0)"Codec": "mp3",          # 输出格式(旧版参数名)"SampleRate": 16000      # 采样率(适配播放)
        }# 实例化请求对象req = models.CreateTtsTaskRequest()req.from_json_string(json.dumps(params))# 发送请求创建任务resp = client.CreateTtsTask(req)task_id = resp.Data.TaskIdprint(f"✅ 任务创建成功,TaskId:{task_id}")return task_idexcept TencentCloudSDKException as err:print(f"❌ 创建任务失败:{err}")return Nonedef query_task_status(client, task_id):"""查询任务状态,返回音频URL"""try:req = models.DescribeTtsTaskStatusRequest()req.from_json_string(json.dumps({"TaskId": task_id}))while True:resp = client.DescribeTtsTaskStatus(req)task_data = resp.Dataif task_data.Status == 2:  # 任务成功print(f"✅ 任务执行完成")return task_data.ResultUrlelif task_data.Status == 3:  # 任务失败print(f"❌ 任务执行失败:{task_data.ErrorMsg}")return Noneelse:  # 等待/执行中print(f"⌛ 任务处理中({task_data.StatusStr})...")time.sleep(1)except TencentCloudSDKException as err:print(f"❌ 查询任务失败:{err}")return Nonedef download_audio(audio_url, output_path):"""下载音频文件"""try:# 确保输出目录存在os.makedirs(os.path.dirname(output_path), exist_ok=True)# 下载音频response = requests.get(audio_url, timeout=30)if response.status_code == 200:with open(output_path, "wb") as f:f.write(response.content)print(f"💾 音频已保存至:{os.path.abspath(output_path)}")return Trueelse:print(f"❌ 下载失败,状态码:{response.status_code}")return Falseexcept Exception as e:print(f"❌ 下载异常:{str(e)}")return Falsedef main():"""主流程:初始化 → 创建任务 → 查询状态 → 下载音频"""# 待转换文本(可自定义修改)text = "大家好,这是使用腾讯云TTS SDK版本生成的语音,适配旧版接口,音色自然流畅。"# 选择音色(从 VOICE_LIST 中选择)selected_voice = "智瑜女声"# 1. 初始化客户端client = init_client()if not client:return# 2. 创建TTS任务task_id = create_tts_task(client, text, selected_voice)if not task_id:return# 3. 查询任务状态audio_url = query_task_status(client, task_id)if not audio_url:returnprint(f"🎵 音频地址:{audio_url}")# 4. 下载音频output_path = os.path.join(OUTPUT_DIR, OUTPUT_FILENAME)success = download_audio(audio_url, output_path)# 5. 自动播放(可选)if success:print("\n✅ 文本转语音全流程完成!")try:import subprocesssubprocess.run(["python", "play_mp3.py", output_path])except Exception:print(f"ℹ️  自动播放失败,可手动运行:python play_mp3.py {output_path}")if __name__ == "__main__":print("🚀 开始腾讯云TTS SDK版本文本转语音...")main()

tts

# -*- coding: utf-8 -*-
import os
import requests
import time
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.tts.v20190823 import tts_client, modelsclass TencentTTS:def __init__(self, appid, secret_id, secret_key, region):# 初始化认证信息self.cred = credential.Credential(secret_id, secret_key)self.client = tts_client.TtsClient(self.cred, region)self.appid = appiddef text_to_speech(self, text, output_path="output.mp3", voice_type=10510000, speed=1.0, volume=1.0):"""文本转语音核心方法(适配v20190823旧版本SDK):param text: 待转换文本:param output_path: 输出音频文件路径:param voice_type: 音色类型(默认10510000-智逍遥男声):param speed: 语速(0.6-1.4,默认1.0):param volume: 音量(0.0-10.0,默认1.0):return: 成功返回True,失败返回False"""try:# 构建请求参数(使用旧版本SDK支持的参数名)req = models.CreateTtsTaskRequest()# 关键修改:用 Codec 代替 OutputFormat(旧版本参数名)req.Text = textreq.ModelType = 1req.VoiceType = voice_typereq.Speed = speedreq.Volume = volumereq.Codec = "mp3"  # 旧版本SDK正确参数名(输出格式)req.SampleRate = 16000# 打印参数确认print("=== 发送的请求参数(适配旧版本SDK)===")print(f"Text: {req.Text}")print(f"ModelType: {req.ModelType}")print(f"VoiceType: {req.VoiceType}")print(f"Speed: {req.Speed}")print(f"Volume: {req.Volume}")print(f"Codec: {req.Codec}")  # 确认使用Codec参数print(f"SampleRate: {req.SampleRate}")print("================================")# 发送请求获取任务IDprint("\n正在调用腾讯云TTS API...")resp = self.client.CreateTtsTask(req)task_id = resp.Data.TaskIdprint(f"任务创建成功,TaskId:{task_id}")# 查询任务状态while True:query_req = models.DescribeTtsTaskStatusRequest()query_req.TaskId = task_idquery_resp = self.client.DescribeTtsTaskStatus(query_req)task_data = query_resp.Dataif task_data.Status == 2:  # 任务成功audio_url = task_data.ResultUrlprint(f"语音生成成功,音频地址:{audio_url}")# 下载音频文件(添加超时处理)try:audio_data = requests.get(audio_url, timeout=30).contentwith open(output_path, "wb") as f:f.write(audio_data)print(f"音频已保存至:{os.path.abspath(output_path)}")except Exception as download_err:print(f"音频下载失败:{str(download_err)}")return Falsereturn Trueelif task_data.Status == 3:  # 任务失败print(f"任务失败:{task_data.ErrorMsg}")return Falseelse:  # 任务等待/执行中print(f"任务处理中,当前状态:{task_data.StatusStr}")time.sleep(1)except TencentCloudSDKException as err:print(f"\n【API调用失败详情】")print(f"错误代码:{err.code}")print(f"错误信息:{err.message}")print(f"RequestId:{err.requestId}")return Falseexcept Exception as e:print(f"\n【其他错误】:{str(e)}")import tracebacktraceback.print_exc()return False# 加载配置并使用
if __name__ == "__main__":class Config:APPID = "1317808177"SECRET_ID = "AKIDHQgomY6ScdZIo9HQZYLvIRM7g2EC1d2E"SECRET_KEY = "1zjGZgbJn493jKjvufCWeYEh070gAapt"TTS_REGION = "ap-beijing"TEMP_DIR = "temp"# 创建临时目录if not os.path.exists(Config.TEMP_DIR):os.makedirs(Config.TEMP_DIR)# 初始化并执行tts = TencentTTS(appid=Config.APPID,secret_id=Config.SECRET_ID,secret_key=Config.SECRET_KEY,region=Config.TTS_REGION)test_text = "大家好,这是使用腾讯云TTS API实现的文本转语音功能,支持自定义音色、语速和音量。"output_file = os.path.join(Config.TEMP_DIR, "tts_output.mp3")# 备份音色参数:10510000print(f"开始文本转语音,输出文件:{output_file}")success = tts.text_to_speech(text=test_text,output_path=output_file,voice_type=10510000,speed=1.0,volume=1.0)if success:print("\n✅ 文本转语音完成!")else:print("\n❌ 文本转语音失败!")

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/965566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker版本太老了,不支持下载镜像的解决方案

生产环境的Docker版本太老了,已经不支持下载镜像了,为了解决这个问题,可以从其它的服务器下载之前的镜像,再加载上去。# 在新环境docker save -o openjdk8.tar openjdk:8-jdk-alpine # 传输 tar 到生产机# 在生产机…

2025 最新广州补习培训机构权威推荐榜:综合实力、提分效果与口碑测评,优质补习机构最新推荐广州课外补习/广州补课/广州提分/广州学习机构推荐

引言 随着教育竞争的日益激烈,优质课外辅导成为提升学习能力的重要助力,但市场机构良莠不齐,选择难题愈发凸显。本次榜单依托国际教育质量评估协会(IEQA)最新测评数据,结合教学资质、师资水平、课程适配性、提分…

POSTROUTING 数据包离开前,路由之后 SNAT(源地址转换),源地址转换出去前

链名处理阶段典型用途PREROUTING 数据包刚到达,路由之前 DNAT(目标地址转换)POSTROUTING 数据包离开前,路由之后 SNAT(源地址转换)INPUT 发往本机的数据包 过滤本地服务访问OUTPUT 本机发出的数据包 过滤本地进程…

C++ 进阶知识点详细教程 - 第1部分

C++ 进阶知识点详细教程 - 第1部分 1. do while 循环 1.1 基本语法 do {// 循环体 } while (条件);关键特点:至少执行一次循环体,因为条件判断在循环体执行之后。 1.2 与while循环的区别 // while循环:先判断条件,…

2025年苗木批发基地实力排行:这些批发商值得信赖,青叶复叶槭/金森女贞/白蜡/金叶女贞/红叶李/苗木/紫薇/栾树/金叶复叶槭供应商哪个好

行业背景分析 随着城市绿化建设持续推进和生态修复需求增长,苗木批发行业呈现蓬勃发展态势。据最新行业数据显示,2024年全国苗木市场规模已突破2000亿元,年均增长率保持在8%以上。在这一背景下,优质苗木批发基地的…

使用ollama本地部署Embedding模型bge-large-zh-v1.5 - yi

使用ollama本地部署Embedding模型bge-large-zh-v1.5下载模型sudo ollama pull modelscope.cn/Embedding-GGUF/bge-large-zh-v1.5:latest 测试curl -X POST http://localhost:11434/api/embeddings \ -H "Content…

2025年CHRO战略指南发布,头部厂商易路提供“三位一体”数智化落地路径

一、2025 年HR领导力愿景:CHRO的三大战略核心命题 在数字化转型纵深发展、全球化竞争加剧、人才价值重构的时代背景下,人力资源管理正从传统的事务支撑职能,向驱动企业战略落地、构建核心竞争力的关键引擎转变。《2…

LLM应用剖析: 舆情分析多智能体-微舆BettaFish

本文主要讲解了微舆的整体架构,并通过研读并调试源码,整理了多个Agent各自的执行流程。1. 背景 近两周github一直霸榜的国产项目-微舆,引起了广泛的关注,11月3日start数3.4K,截止今天11月14日,start数26.6K,火…

详细介绍:kafka 4.x docker启动kafka4.0.0 docker-compose启动最新版kafka 如何使用docker容器启动最新版kafka

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

HIPCXX

https://rocm.docs.amd.com/projects/radeon-ryzen/en/latest/docs/install/installryz/native_linux/install-ryzen.html HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" cmake…

Salesforce AI能理解业务、写代码,程序员还能做什么?

过去几年,Salesforce 一直在说“AI赋能开发”,但今年的 Dreamforce ’25,让这句话第一次真正落地。 这一届大会上,Salesforce 把 AI 从“助手”变成了参与者——能理解上下文、能协作、能写、能测、还能优化。 开发…

AI元人文:岐金兰的回应

AI元人文:岐金兰的回应 岐金兰 2025年11月14日 面对诸多对"AI元人文构想"的质疑,我需要作出如下澄清。这些质疑源于传统思维范式,而我们的构想恰恰是要超越这种范式。 关于价值降解的可行性 有人说价值不…

化工产线再升级,稳定互联profinet转devicenet网关连接技术研究

本案例适用于化工生产过程控制系统,西门子S7-1200PLC通过Profinet总线连接DeviceNet主站网关,网关下联DeviceNet从站型传感器(压力、温度传感器)和执行器(电磁阀),实现现场设备数据的采集与控制信号的下发。核心…

2025 11 14

CF2119D 计数,dp考虑当 \(p_i\) 固定的时候选 a 数组方案数是确定的,即为所有 \(p_i > 0\) 的乘积 考虑 \(p_i <= i\) 这个条件,可以看成带系数的类似于括号匹配的东西 很明显这并不是我想到的,我一直在想怎么…

用户头像文件存储机制是如何实现的?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年行星减速机十大优质品牌排行榜,RV减速机/伺服减速机/传动减速机/传统减速电机/朕轴器/vgm减速机/精密行星减速机企业有哪些

行业背景与评选标准 随着工业自动化程度不断提升,行星减速机作为精密传动领域的核心部件,其市场需求持续增长。本次排行榜基于企业技术实力、产品性能、市场口碑及服务体系等多个维度,对行业内优质供应商进行综合评…

2025年真空管道软管厂家权威推荐榜单:给排水管道软管/由令波纹软管/快接波纹软管源头厂家精选

在工业自动化与管道输送技术持续发展的背景下,真空管道软管作为连接系统中的关键部件,其性能直接关系到整个系统的密封性能与运行效率。 据行业数据显示,2025年全球工业软管市场规模预计将保持稳定增长,其中耐真空…

2025年家具定制厂家权威推荐榜单:智能全屋定制家居/全屋定制/全屋定制家具源头厂家精选

在消费升级与个性化需求双重驱动下,我国家具定制行业正迎来新一轮发展机遇。据行业数据显示,2025年定制家居市场规模预计将突破6000亿元,消费者对环保、设计、服务的需求持续升级。 本次榜单基于技术实力、生产能力…

OI 笑传 #27

KanataharukaABC 小思维。口胡为主。 ABC407E 反悔贪心题。 由这个题我们导出一个关于合法括号序列的充分必要条件:对于一个长度为 \(2N\) 的合法括号序列 \(S_{2N}\),对于其任意的一个前缀子串 \(S_{1,i},i\in [1,2…

白银滚珠瓶凝胶伺服灌装机

近年来,白银制品及日化凝胶类产品在消费市场持续升温,带动滚珠瓶包装需求激增。然而行业快速扩张的同时,低价劣质设备泛滥、性能与标称严重不符等问题频发,导致终端用户在设备选型时陷入“低投入高维护”的恶性循环…