AI文本转语音,再也不用担心视频配音了.

文章目录

  • 简介
    • 代码实现调用
    • 开通百度付费包

简介

  • 背景
    我想要将文本,转为语音,然后配上图片,这样就可以很快生成一个视频.
    可以说是配音吧,我还是比较喜欢通过代码来自动化.所以今天就来实现一下,同时做一下分享和记录.
  • 目标
    通过python代码,自动将文本转为配音.
  • 平台
    我选择了百度平台, 对比腾讯,付费策略比较友好.阿里云应该也有类似的业务,我没去看.大家可以货比三家.
  • 百度的宣传页面
    百度长文本在线合成

在这里插入图片描述

  • 价目表
    在这里插入图片描述

代码实现调用

百度的技术文档在这里: 百度的文本转语音技术文档

在代码统计目录需要创建2个文件

  1. .env文件: 这个是密钥,在百度官网生成的.可以看代码后面的教程如何生成.
API_KEY="YPBAzQvZR71hGwuxxxxx"
SECRET_KEY="cxlVmumX2c03v9pznlB8Zxxxxxxxxxx7"
  1. text.txt文件, 这个文件里面写上你需要转为语音的内容.
学习强国,我爱中国,中国人不骗中国人.
  1. 代码调用
  2. 最后会在代码统计目录生成一个 data.wav 的文件,该文件就是生成的音频,可以直接播放.

在这里插入图片描述

import json
import os
import timeimport requests
from dotenv import load_dotenv# api 地址:
# https://ai.baidu.com/ai-doc/SPEECH/ulbxh8rbuload_dotenv(dotenv_path = ".env",override = True)API_KEY = os.environ.get("API_KEY")
SECRET_KEY = os.environ.get("SECRET_KEY")print("api:", API_KEY)
print("key:", SECRET_KEY)def query_task_status(task_id = "66891cb35d73020001d58e2a"):url = "https://aip.baidubce.com/rpc/2.0/tts/v1/query?access_token=" + get_access_token()payload = json.dumps({"task_ids": [f"{task_id}"    #create获取的task_id]})headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.post(url, headers=headers, data=payload)if response.json()["tasks_info"][0]["task_status"] != "Running":print("download url: ", response.json()["tasks_info"][0]["task_result"]["speech_url"])return response.json()["tasks_info"][0]["task_result"]["speech_url"], Trueelse:print("--->wait, voice gen ing")# print(response.json())return None, Falsedef create_task(txt = "欢迎使用百度语音技术", config = None):url = "https://aip.baidubce.com/rpc/2.0/tts/v1/create?access_token=" + get_access_token()payload = json.dumps({"text": f"{txt}",                #待合成的文本"format": "wav",                      #音频格式"voice": 106,                               #音库 试听地址: https://ai.baidu.com/tech/speech/long_tts# 基础音库:度小宇=1,度小美=0,度逍遥(基础)=3,度丫丫=4;# 精品音库:度逍遥(精品)=5003,度小鹿=5118,度博文=106,度小童=110,度小萌=111,度米朵=103,度小娇=5。默认为度小美"lang": "zh",                           #语言,固定zh"speed": 6,                             #语速 取值0-15,默认为5中语速"pitch": 5,                              #音调 取值0-15,默认为5中语调"volume": 9,                          #音量 音量,基础音库取值0-9,精品音库取值0-15,默认为5"enable_subtitle": 1,           #是否开启字幕时间戳,取值范围0, 1, 2·· 取值范围0, 1, 2,默认为0。0表示不开启字幕时间戳,1表示开启句级别字幕时间戳,2表示开启词级别字幕时间戳"break": 500                      #段落间隔 取值 0-5000 ,单位ms,用于合成文本分段传入时设置段落间间隔。})headers = {'Content-Type': 'application/json','Accept': 'application/json'}response = requests.post(url, headers=headers, data=payload)# print(response.json())print("create task id:", response.json()["task_id"])return response.json()["task_id"]def download_file(url, local_filename):print(f"down load : {url} --> {local_filename}")folder = os.path.dirname(__file__)file_save_path = os.path.join(folder, local_filename)# 发送一个HTTP GET请求到指定的URLwith requests.get(url, stream=True) as r:# 如果请求成功(状态码为200)r.raise_for_status()# 打开一个本地文件以二进制写模式with open(file_save_path, 'wb') as f:# 分块写入内容到本地文件for chunk in r.iter_content(chunk_size=8192):f.write(chunk)print(f"file save on: {file_save_path}")return local_filenamedef 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__':with open("./text.txt", "r") as f:content = f.read()task_id = create_task(txt=content)max_attempts = len(content) / 3 if len(content) > 5 else  5attempts = 0while attempts < max_attempts:down_load_url , status = query_task_status(task_id)if (status):download_file(down_load_url, "data.wav")breakelse:attempts = attempts + 1time.sleep(1)

开通百度付费包

  1. 开通付费包
    百度控制台
    在这里插入图片描述

  2. 创建一个应用
    在这里插入图片描述

  3. 获取Key和ID
    在这里插入图片描述

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

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

相关文章

万界星空科技MES系统中的排版排产功能

在当今高度竞争的市场环境中&#xff0c;企业对于生产管理的效率和质量要求日益提高。作为智能制造的重要组成部分&#xff0c;制造执行系统&#xff08;MES&#xff09;以其强大的功能&#xff0c;在提升企业生产能力方面发挥着不可替代的作用。万界星空科技作为行业领先的智能…

MongoDB集群搭建-最简单

目录 前言 一、分片概念 二、搭建集群的步骤 总结 前言 MongoDB分片&#xff08;Sharding&#xff09;是一种水平扩展数据库的方法&#xff0c;它允许将数据分散存储在多个服务器上&#xff0c;从而提高数据库的存储容量和处理能力。分片是MongoDB为了应对大数据量和高吞吐量需…

Science期刊政策反转:允许生成式AI用于论文写作,意味着什么?

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 关于各大top期刊和出版社对于生成式AI用于论文写作中的规定&#xff0c;娜姐之前写过一篇文章&#xff1a; 如何合理使用AI写论文&#xff1f;来看Top 100学术期刊和出版社的…

深度解析 Raft 分布式一致性协议

本文参考转载至&#xff1a;浅谈 Raft 分布式一致性协议&#xff5c;图解 Raft - 白泽来了 - 博客园 (cnblogs.com) 深度解析 Raft 分布式一致性协议 - 掘金 (juejin.cn) raft-zh_cn/raft-zh_cn.md at master maemual/raft-zh_cn (github.com) 本篇文章将模拟一个KV数据读写服…

【漏洞复现】禅道——未授权登入(QVD-2024-15263)

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 禅道&#xff08;Zentao&#xff09;是一款开源的项目管理和协作…

死锁-活锁与活锁的预防、死锁与死锁的预防和检测(处理死锁的方式:事务等待图)

一、引言 1、死锁是因采用封锁技术实现并发控制而产生的一种运行事务被阻塞或等待的现象 2、如果利用严格两阶段封锁协议来解决我们前面提到的“更新丢失”这种数据不一致问题&#xff0c;非串行调度中的事务T1首先获得数据对象X上的读锁并开始执行&#xff0c;随后事务T2也获…

数值分析笔记(五)线性方程组解法

三角分解法 A的杜利特分解公式如下&#xff1a; u 1 j a 1 j ( j 1 , 2 , ⋯ , n ) , l i 1 a i 1 / u 11 ( i 2 , 3 , ⋯ , n ) , u k j a k j − ∑ m 1 k − 1 l b m u m j ⇒ a k j ( j k , k 1 , ⋯ , n ) , l i k ( a i k − ∑ m 1 k − 1 l i n u m k ) /…

uniapp 在手机上导出excel

1.创建excelDev.js文件 export default {exportExcel(fileData, documentName excel) {plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, function(fs) {let rootObj fs.rootlet fullPath rootObj.fullPathconsole.log("开始导出数据")// 创建文件夹rootObj…

破解宇宙终极奥秘,战胜昊天无上束缚

在幽邃的暗夜下&#xff0c;细品着夫子与昊天跨越千年的智勇交锋&#xff0c;我的思绪不禁飘向了更加深远的宇宙边际&#xff0c;回响起那些关于人类如何挑战天命、战胜上天的过往。 宇宙奥秘 在浩瀚无垠的宇宙深渊中&#xff0c;隐藏着一段超越凡尘的规则。昊天&#xff0c;…

2025湖北武汉智慧教育装备信息化展/智慧校园展/湖北高博会

2025武汉教育装备展,2025武汉智慧教育展,2025武汉智慧校园展,2025武汉教育信息化展,2025武汉智慧教室展,湖北智慧校园展,湖北智慧教室展,武汉教学设备展,湖北高教会,湖北高博会 2025湖北武汉智慧教育装备信息化展/智慧校园展/湖北高博会 2025第10届武汉国际教育装备及智慧校园…

计算机网络——数据链路层(以太网扩展、虚拟局域网、高速以太网)

在许多情况下&#xff0c;我们希望把以太网的覆盖范围扩展。本节先讨论在物理层把以太网扩展&#xff0c;然后讨论在数据链路层把以太网扩展。这种扩展的以太网在网络层看来仍然是一个网络。 在物理层扩展以太网 现在&#xff0c;扩展主机和集线器之间的距离的一种简单方法就是…

jmeter-beanshell学习3-beanshell获取请求报文和响应报文

前后两个报文&#xff0c;后面报文要用前面报文的响应结果&#xff0c;这个简单&#xff0c;正则表达式或者json提取器&#xff0c;都能实现。但是如果后面报文要用前面请求报文的内容&#xff0c;感觉有点难。最早时候把随机数写在自定义变量&#xff0c;前后两个接口都用这个…

小暑节气,选对劳保鞋,让安全与清凉同行

在七月炽热的阳光下&#xff0c;我们迎来了二十四节气中的小暑&#xff0c;标志着盛夏时节的正式开始。随着气温的节节攀升&#xff0c;不仅大自然万物进入了生长的旺季&#xff0c;我们的工作与日常生活也面临着新的挑战——如何在高温环境下保障自身安全&#xff0c;成为了不…

实例演示kafka stream消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…

vue3【实战】来回拖拽放置图片

效果预览 技术要点 img 标签默认就是可拖拽的&#xff08;a 标签也是&#xff09;事件 e 内的 dataTransfer 对象可用于临时存储事件过程中的数据拖拽事件的默认行为是用浏览器新开页签打开被拖拽对象&#xff0c;所以通常需要禁用默认的浏览器行为被拖拽元素必须设置 id&#…

【pyqt-实训训练】串口助手

串口助手 前言一、ui设计二、ui的控件命名三、ui转py使用类的方法【扩展】使用ui文件导入&#xff01;P7的小错误解决办法 总结 前言 我的惯例就是万物之始&#xff0c;拜见吾师&#x1f970;⇨pyqt串口合集 最开始的时候我想的是&#xff0c;学了那么久的pyqt&#xff0c;我…

ASCII码对照表(Matplotlib颜色对照表)

文章目录 1、简介1.1 颜色代码 2、Matplotlib库简介2.1 简介2.2 安装2.3 后端2.4 入门例子 3、Matplotlib库颜色3.1 概述3.2 颜色图的分类3.3 颜色格式表示3.4 内置颜色映射3.5 xkcd 颜色映射3.6 颜色命名表 4、Colorcet库5、颜色对照表结语 1、简介 1.1 颜色代码 颜色代码是…

线程同步66666

1. 概述 当有多个线程访问同一个共享资源&#xff08;临界资源&#xff09;时&#xff0c;且不允许同时访问&#xff0c;那么就需要线程同步。常见的线程同步方式&#xff1a;互斥锁、读写锁、条件变量、信号量。 2. 互斥锁 互斥锁的方式可以简单概括为&#xff1a;锁定操作…

【MYSQL】InnoDB引擎为什么选可重复读作为默认隔离级别

InnoDB引擎为什么选可重复读作为默认隔离级别 一般的DBMS系统&#xff0c;默认都会使用读提交&#xff08;Read-Comitted&#xff0c;RC&#xff09;作为默认隔离级别&#xff0c;如Oracle、SQL Server等&#xff0c;而MySQL却使用可重复读&#xff08;Read-Repeatable&#x…

alphazero学习

AlphaGoZero是AlphaGo算法的升级版本。不需要像训练AlphaGo那样&#xff0c;不需要用人类棋局这些先验知识训练&#xff0c;用MCTS自我博弈产生实时动态产生训练样本。用MCTS来创建训练集&#xff0c;然后训练nnet建模的策略网络和价值网络。就是用MCTSPlayer产生的数据来训练和…