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

【学习心得】Python好库推荐——pyttsx3

pyttsx3(Python Text-to-Speech eXtended version 3)是一个跨平台的 Python 库,用于将文本转换为语音(Text-to-Speech, TTS)。它可以在不依赖互联网连接的情况下,在本地将文本朗读出来,支持 Windows、macOS 和 Linux 系统。

一、安装

pip install pyttsx3

如果使用的是Linux系统,还需要额外安装espeak

sudo apt-get install espeak

如果语音输出还是不能正常工作,那么就需要安装espeak-ng和libespeak1

sudo apt update && sudo apt install espeak-ng libespeak1

二、使用

官方PyPI链接:官方介绍

1、简单的快速使用示例:

import pyttsx3 # 初始化引擎 engine = pyttsx3.init() # 设置要朗读的文本 engine.say("你好,我是Python文本转语音引擎") # 开始朗读并等待完成 engine.runAndWait()

2、关键用法速查表

名称类型作用用法示例备注 / 返回值
pyttsx3.init()函数初始化 TTS 引擎(离线)engine = pyttsx3.init()返回Engine实例;自动选择平台后端(SAPI5/macOS/Linux)
pyttsx3.EngineTTS 引擎主对象init()返回所有语音操作均通过此对象进行
engine.say(text)方法将文本加入播报队列engine.say("Hello")非阻塞;需调用runAndWait()才会发声
engine.save_to_file(text, filename)方法将文本合成并保存为音频文件engine.save_to_file("Hi", "output.wav")文件格式通常为.wav必须调用runAndWait()才生效
engine.runAndWait()方法执行队列中的所有任务并等待完成engine.runAndWait()阻塞式调用;用于触发播放或保存
engine.stop()方法立即停止当前及后续播报engine.stop()中断正在运行的runAndWait()
engine.getProperty(name)方法获取引擎属性值rate = engine.getProperty('rate')常用属性:'rate'(语速)、'volume'(音量 0.0–1.0)、'voices'(语音列表)
engine.setProperty(name, value)方法设置引擎属性engine.setProperty('rate', 200)属性名区分大小写;设置无效值可能被忽略
engine.getProperty('voices')方法获取系统支持的语音列表voices = engine.getProperty('voices')返回list[Voice];每个Voice包含id,name,languages
engine.setProperty('voice', voice_id)方法切换语音engine.setProperty('voice', voices[0].id)voice_id必须来自有效Voice.id
Voice.id属性语音唯一标识符v.id用于setProperty('voice', ...);不可读但可设
Voice.name属性语音显示名称v.name'Microsoft Huihui Desktop - Chinese (Simplified)'
Voice.languages属性支持的语言标签v.languages可能为['zh-CN'][b'\x05z\x04h\x04'](macOS 编码)等;判断中文需谨慎
engine.connect(event, callback)方法绑定播报事件回调engine.connect('finished-utterance', on_end)事件类型:
'started-utterance'
'finished-utterance'
'started-word'(部分平台支持)
engine.startLoop(useDriverLoop=False)
engine.endLoop()
方法手动控制事件循环(高级)engine.startLoop(False)
# 自定义逻辑
engine.endLoop()
一般不需要使用;仅在 GUI 或异步环境中替代runAndWait()

3、设置参数和音色

import pyttsx3 # 初始化 TTS 引擎 engine = pyttsx3.init() # 设置语音参数(可选) engine.setProperty('rate', 150) # 语速(默认约200) engine.setProperty('volume', 0.9) # 音量(0.0 到 1.0) # 获取可用语音列表 voices = engine.getProperty('voices') engine.setProperty('voice', voices[1].id) # 选择第二个语音(通常是女声) # 朗读文本 engine.say("你好,欢迎使用 pyttsx3!") engine.runAndWait() # 等待语音播放完成
http://www.rkmt.cn/news/117536.html

相关文章:

  • Java毕设项目:基于javaweb的学生管理系统(源码+文档,讲解、调试运行,定制等)
  • AspectJ、Spring AOP 与 Solon AOP:Java AOP 框架的三剑客
  • Qt共享内存疑难解析:从创建失败到完美解决
  • 大语言模型从零到一:理论基础全解析,助你快速掌握LLM核心技术与构建方法!
  • Kubernetes Service 架构深度解析:从虚拟IP到流量的智能寻址
  • 2特殊单字符和空白符
  • 自动化测试投资回报率(ROI)分析与实践指南
  • 什么叫组团社,什么叫地接社
  • 安徽做SCARA机器人的公司有哪些?
  • 自动化测试与手工测试的平衡之道:构建高效质量保障体系
  • 基于SpringBoot+Vue汽车维修保养服务信息系统(完整源码+万字论文+精品PPT)
  • 用 Canvas 实现《黑客帝国》代码雨:自适应 120Hz、发光特效、音频与鼠标交互
  • 自动化测试的7个误区:从业者必知陷阱与规避策略
  • Qwen3模型vLLM并行配置性能测试:从0.6B到32B的最佳实践指南!
  • 软件测试外包管理的精细化实施框架
  • 【C++ 笔记】从 C 到 C++:核心过渡 (中)
  • 【机器学习】4.XGBoost(Extreme Gradient Boosting)
  • 通过算法备案之后就万事大吉了么?
  • 每日八股——Go(4)
  • QtC++定时3秒执行槽函数实战
  • 自动化运维利器Ansible
  • MyBatis-Plus 报错 Invalid bound statement(insert)?其实是 SqlSessionFactoryBean 踩坑了
  • Qt实现Ubuntu程序自动重启
  • 2025年12月食堂净化水处理设备,除铁锰水处理设备,反渗透水处理设备厂家榜:适配性与能耗双维度测评 - 品牌鉴赏师
  • 必看!方形与圆形油炸机挑选,这几个关键要点你得知道
  • 机器学习--逻辑回归
  • 29、Unix 文件操作与管理全解析
  • 第1节:项目性能优化(上)
  • 解析现代网络的“神经系统”—BGP-LS-SPF
  • win11使用KMS命令激活