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

零成本实现文本转语音

这期内容我觉得比较适合自媒体创作者。虽然现在有不少云厂商提供文本转语音API,但不少客户端标榜免费却通过扣充值额度变相收费。本期将分享如何通过技术手段实现零成本文本转语音。无论是制作电商产品介绍,还是诗词讲解、童话、睡前听故事等有声读物,甚至将成品用于短视频创作或有声产品变现,这些技能都能派上用场。
本期提供两种实用方案:一是纯离线生成中文配音(基于本地语音包);二是在线生成多语言音频。
这是本地调好的脚本

import argparse
from datetime import datetime
try:from gtts import gTTSHAS_GTTS = True
except ImportError:HAS_GTTS = Falsetry:import pyttsx3HAS_PYTTSX3 = True
except ImportError:HAS_PYTTSX3 = Falsedef online_text_to_audio(text, lang='zh', output_file='text_to_audio.mp3', slow=False):"""在线文本转音频:param text: 要转换的文本:param lang: 语言代码,默认为中文(zh):param output_file: 输出音频文件路径,默认为 text_to_audio.mp3:param slow: 语速控制,True 为慢速,False 为正常语速,默认为 False"""if not HAS_GTTS:raise ImportError('gtts 库未安装,请执行 pip install gtts')if output_file == 'text_to_audio.mp3':timestamp = datetime.now().strftime("%Y%m%d%H%M%S")output_file = f"text_to_audio_{lang}_{timestamp}.mp3"tts = gTTS(text=text, lang=lang, slow=slow)tts.save(output_file)print(f"音频文件已保存为 {output_file}")def offline_text_to_audio(text, lang='zh', output_file='offline_text_to_audio.wav'):"""使用 pyttsx3 库进行离线文本转音频"""if not HAS_PYTTSX3:raise ImportError('pyttsx3 库未安装,请执行 pip install pyttsx3')timestamp = datetime.now().strftime("%Y%m%d%H%M%S")if output_file == 'offline_text_to_audio.wav':output_file = f"offline_text_to_audio_{lang}_{timestamp}.wav"engine = pyttsx3.init()voices = engine.getProperty('voices')for voice in voices:print(f"Name: {voice.name}, ID: {voice.id}")# 选择不同的语音,取决于操作系统和安装的语音包engine.setProperty('voice', voices[0].id)# 单位通常是每分钟单词数,通常在 0 到 200 之间 ,默认值为 200,越大越快engine.setProperty('rate', 170) # 语音播放的音量大小,范围从 0.0(静音)到 1.0(最大音量),值越小声音越小engine.setProperty('volume', 1.0)  engine.save_to_file(text, output_file)engine.runAndWait()print(f"离线音频文件已保存为 {output_file}")if __name__ == '__main__':parser = argparse.ArgumentParser(description='文本转音频工具')parser.add_argument('text', help='文本转语音')parser.add_argument('--mode', choices=['online', 'offline'], default='online', help='转换模式,online 或 offline,默认为 online')parser.add_argument('--lang', default='zh', help='文本语言,仅在线模式有效,传入语言代码,默认为中文(zh)')parser.add_argument('--output', help='输出音频文件路径,不指定时,在线模式默认为 text_to_audio.mp3,离线模式默认为 offline_text_to_audio.wav')parser.add_argument('--slow', action='store_true', help='在线模式下,控制语速为慢速,不指定则为正常语速')args = parser.parse_args()if args.mode == 'online':output = args.output if args.output else 'text_to_audio.mp3'online_text_to_audio(args.text, args.lang, output, args.slow)else:output = args.output if args.output else 'offline_text_to_audio.wav'offline_text_to_audio(args.text, args.lang, output)

执行前先装好对应的库

pip install pyttsx3
pip install gtts

这里摘取纳瓦尔宝典里面的一句话测试离线方式
python text_to_audio.py "财富不是金钱,而是资产。财富是你睡觉时也能为你赚钱的东西。金钱只是社会给你打的欠条,而财富是你拥有的工厂、代码、知识产权或能产生现金流的资产。" --mode offline

在线生成英文的语音(需注意:在线方案通过Google免费API实现,使用时需开启VPN)
python text_to_audio.py "追求财富而非金钱。财富是能在你睡觉时依然为你赚钱的资产,而金钱只是转移财富的手段。真正的自由是脱离时间换金钱的陷阱,拥有对自己时间的绝对控制权。" --mode online --lang en --slow
如果是正常语速不用加–slow

http://www.dtcms.com/a/271424.html

相关文章:

  • python网络爬虫笔记21:天地图解析服务调用教程
  • 正点原子学习 用户权限管理
  • 海康威视监控相机实时性研究
  • 深度学习遇到的问题
  • 一[3.7] YOLO系列基础(2)- “Bottleneck模块详解”
  • JavaScript对象的深度拷贝
  • 17.Spring Boot的Bean详解(新手版)
  • 十、Rocky Linux 9.x 在线安装Nginx 1.28.0
  • 豆包编写Java程序小试
  • 电子元器件基础知识总结
  • 基于SpringBoot+Vue的疫情问卷调查与返校信息管理系统】前后端分离
  • 城市地质大数据平台:透视地下空间,赋能智慧未来
  • git断点续传,中断后继续下载
  • 【计算机三级网络】——IP校园网大题(第二道):路由代码填空
  • 如何选择时序数据库:关键因素与实用指南
  • 20250709: WSL+Pycharm 搭建 Python 开发环境
  • 数据结构--堆的实现
  • 【黑马点评】(四)分布式锁
  • 深入理解 Spring AOP 代理机制:JDK 动态代理与 CGLIB 的对比与选择
  • c++学习-类中类成员变量的创建和释放顺序2-资源new出来的对象未被手动delete
  • 19-C#静态方法与静态类
  • HashMap的get与put流程源码深度解析
  • EPS 转 SVG/PNG 转换器集合
  • 托卡马克装置的发电过程解析
  • C++面试冲刺笔记1:虚函数的基本工作原理
  • thinkphp使用redis抢单实例
  • 深入理解MyBatis的MapperBuilderAssistant:如何解析Mapper XML文件?
  • 自然语言处理中probe探测是什么意思。
  • 基于docker进行渗透测试环境的快速搭建(在ubantu中docker设置代理)
  • EF提高性能(查询禁用追踪)(关闭延迟加载)