当前位置: 首页 > news >正文

MoneyPrinter中的文字转声音国内替换方案

背景:
在进行MoneyPrinter项目国内环境搭建中,发现框架本身的TikTok文字转语音部分的代码已经不能用了,最好是能够找到国内网站的替换方案。

实现:
感谢网站:https://www.text-to-speech.cn/

代码:

# -*- coding:UTF-8 -*-"""@ProjectName  :@FileName     : tts-demo@Description  : 文字转语音@Time         : 2024/5/10 14:44@Author       : Qredsun"""
import time
import uuid
from urllib.parse import urlencodeimport requests
from loguru import loggerclass textToSpeech():BASE_URL = "https://www.text-to-speech.cn/"HEADER = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0','Accept': '*/*','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','X-Requested-With': 'XMLHttpRequest','Origin': BASE_URL,'Connection': 'keep-alive','Referer': BASE_URL,'Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin',}def get_speaker_list(self):url = f"{self.BASE_URL}/getSpeekList.php"response = requests.get(url, headers=self.HEADER)if response.ok:response_json = response.json()speaker_list = response_jsonlogger.debug(f'返回获取音频配置列表:{speaker_list}')logger.info('转换接口使用的是语言(key)、ShortName')return speaker_listlogger.error(f'获取音频配置失败:{response.text}')return Nonedef convert_voice(self, txt="这是一段对话", /, *, language="English (United States)", voice="AvaMultilingualNeural",file_name=None):logger.debug(f'待转化音频的内容:{txt}')url = f"{self.BASE_URL}/getSpeek.php"payload = {"language": language,"voice": voice,"text": txt,"role": 0,"style": 0,"rate": 0,"pitch": 0,"kbitrate": "audio-16khz-32kbitrate-mono-mp3","silence": "","styledegree": 1,"volume": 75,"predict": 0,"user_id": "","yzm": "","replice": 1,}cookies = {"Hm_lvt_b38a22175a63114a18d55183d7ddb4c4": int(time.time()),"Hm_lpvt_b38a22175a63114a18d55183d7ddb4c4": int(time.time()),"language": language,"voice": voice,"kbitrate": "audio-16khz-32kbitrate-mono-mp3","role": 0,"style": 0,"speed": 0,"pitch": 0,"checkuser": time.strftime("%Y-%m-%d", time.localtime())}cookies_str = urlencode(cookies)# logger.debug(f'cookies: {cookies_str}')headers = {'Cookie': cookies_str,'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}headers.update(self.HEADER)response = requests.request("POST", url, headers=headers, data=payload)if not response.ok:logger.error(f'转换音频失败:{response.text}')return Noneresponse_json = response.json()if response_json['code'] == 200:url = response_json["download"]logger.info(f'返回音频下载连接:{url}')if file_name:self.save_voice(url, video_id=file_name)return urldef save_voice(self, url, /, *,  video_id=None):try:video_id = video_id if video_id else uuid.uuid4()with open(video_id, "wb") as f:f.write(requests.get(url).content)logger.info(f'音频已保存至{video_id}')except Exception as e:logger.error(f'音频保存失败:{e}')if __name__ == '__main__':c2v = textToSpeech()# c2v.get_speaker_list() # 获取可用的语言及声音url = c2v.convert_voice('我真的是服了', save_voice=True)
http://www.lryc.cn/news/345286.html

相关文章:

  • 消除试卷手写笔迹的软件免费的有哪些?这几款都不错
  • 智能创作时代:AI 如何重塑内容生成游戏规则
  • 大数据------JavaWeb------Tomcat(完整知识点汇总)
  • LMDeploy笔记
  • Unity 状态机
  • 一毛钱不到的FH8208C单节锂离子和锂聚合物电池一体保护芯片
  • python数据可视化:显示两个变量间的关系散点图scatterplot()
  • 【QT教程】QT6硬件高级编程入门 QT硬件高级编程
  • Android 蓝牙实战——蓝牙电话通话状态同步(二十四)
  • docker 指定根目录 迁移根目录
  • React 项目报错解决办法收录
  • Linux专题-Makefile(1)
  • 机器学习算法应用——CART决策树
  • Sqli-labs第五,六关
  • 上海AI Lab开源首个可替代GPT-4V的多模态大模型
  • Python教程:一文了解PageObject模式
  • SpringBoot 启动时查询数据库数据,并赋值给全局变量
  • 【Python】selenium爬虫常见用法和配置,以及常见错误和解决方法
  • minio上传文件失败如何解决
  • Java自动化测试框架--TestNG详解
  • 【分布式 | 第五篇】何为分布式?分布式锁?和微服务关系?
  • JavaScript百炼成仙自学笔记——13
  • 【skill】小米10让app永驻后台
  • 《架构风清扬-Java面试系列第29讲》聊聊DelayQueue的使用场景
  • 说说SpringBoot自动配置原理
  • bash: docker-compose: 未找到命令
  • linux 权限和权限的设置
  • 基于Springboot的旅游管理系统(有报告)。Javaee项目,springboot项目。
  • springboot3项目练习详细步骤(第一部分:用户业务模块)
  • 推荐算法顶会论文博客笔记合集