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

Python 使用总结之:Python 文本转语音引擎 - pyttsx3 完全指南

文本转语音(TTS,Text-to-Speech)技术已经广泛应用于语音助手、智能硬件、教育软件等多个领域。Python 提供了多个库来实现 TTS,其中 pyttsx3 是一个非常常用的跨平台 TTS 引擎。本文将详细介绍如何使用 pyttsx3 实现文本转语音的功能。


一、安装 pyttsx3 库

首先,你需要安装 pyttsx3 库。你可以通过以下命令来安装:

pip install pyttsx3

pyttsx3 是一个离线库,支持 Windows、Mac 和 Linux 系统。它并不依赖于互联网,因此即使没有网络也可以正常工作。


二、使用 pyttsx3 实现文本转语音

1. 基本用法

使用 pyttsx3 最基本的功能就是将输入的文本转换成语音并播放。下面是一个简单的示例代码:

import pyttsx3# 初始化 pyttsx3 引擎
engine = pyttsx3.init()# 设置要转语音的文本
text = "Hello, welcome to the world of text-to-speech in Python!"# 将文本转换为语音并播放
engine.say(text)# 等待语音播放完成
engine.runAndWait()
  • engine.say(text):将文本传递给语音引擎进行处理。

  • engine.runAndWait():让引擎开始播放语音并等待其完成。

2. 设置语音属性

pyttsx3 允许你设置语音的不同属性,例如语速、音量和语音类型(男性或女性语音)。下面是一个示例,展示了如何调整这些设置:

import pyttsx3# 初始化引擎
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)  # voices[0]是男性,voices[1]是女性# 播放文本
text = "This is a customized speech. I hope you like it!"
engine.say(text)# 等待播放完成
engine.runAndWait()
  • engine.setProperty('rate', 150):设置语速。默认语速大约是 200,可以通过设置较小的数字来减慢语速。

  • engine.setProperty('volume', 0.9):设置音量,音量范围为 0.0 到 1.0。

  • engine.getProperty('voices'):获取系统中安装的所有语音(男性和女性),你可以选择自己喜欢的语音。

3. 获取并选择语音

pyttsx3 提供了多种语音,通常包括男性和女性语音,具体内容依赖于操作系统的支持。你可以通过以下方法列出系统支持的语音,并选择其中一个:

import pyttsx3# 初始化引擎
engine = pyttsx3.init()# 获取系统中的所有语音
voices = engine.getProperty('voices')# 显示可用的语音
for voice in voices:print(f"Voice: {voice.id} - {voice.name}")# 设置使用的语音
engine.setProperty('voice', voices[1].id)  # 选择女性语音# 播放文本
text = "This is a test with selected voice."
engine.say(text)
engine.runAndWait()

你可以遍历 voices 列表,查看系统支持的语音类型。然后使用 engine.setProperty('voice', voice.id) 来选择某个特定语音。

4. 错误处理和调试

在使用 pyttsx3 时,有时可能会遇到一些错误。为此,你可以使用异常处理来确保程序的健壮性:

import pyttsx3try:# 初始化引擎engine = pyttsx3.init()# 设置语音属性engine.setProperty('rate', 150)engine.setProperty('volume', 0.9)# 获取系统支持的语音voices = engine.getProperty('voices')engine.setProperty('voice', voices[0].id)  # 使用男性语音# 播放文本engine.say("This is a test message.")engine.runAndWait()except Exception as e:print(f"Error: {e}")

这可以帮助你捕获并处理任何在语音播放过程中发生的错误。


三、语音文件保存

除了直接播放语音,pyttsx3 还允许你将文本转换为语音并保存为 .mp3 或 .wav 文件。要实现这一点,通常需要借助其他库(如 pydub)来完成音频格式转换,因为 pyttsx3 默认不直接支持保存为音频文件。但可以通过以下方式将音频保存到文件:

import pyttsx3
import wave
import pyaudio# 初始化引擎
engine = pyttsx3.init()# 创建一个音频流
output_file = "output_audio.wav"
engine.save_to_file('Hello, this is a saved audio file.', output_file)# 播放保存的音频文件
engine.runAndWait()print(f"Audio saved as {output_file}")

这里,save_to_file() 方法可以将文本保存为 .wav 文件。你可以通过这种方式将文本转换为语音并保存。


四、更多进阶用法

1. 调整音质

如果你需要更高质量的语音,可以选择使用不同的语音引擎。pyttsx3 默认使用系统提供的语音引擎(如 SAPI5,NSSpeechSynthesizer),但也可以根据需要切换引擎。

2. 支持多语言

虽然 pyttsx3 默认支持英语,但在多语言应用中,你可以选择不同的语言支持,前提是你的操作系统或语音库提供了这些语言的支持。对于中文或其他语言,你可以通过调整语音引擎设置来支持其他语言。

3. 语音合成效果

pyttsx3 提供的基本语音合成效果可能较为简单,如果你需要更高质量的语音效果,可以考虑使用一些第三方 API,如 Google TTS、Amazon Polly 或 Microsoft Azure Speech 等。


五、常见问题与解决方案

1. pyttsx3 初始化失败
  • 问题pyttsx3.init() 调用失败,无法初始化引擎。

  • 解决方案:尝试安装或更新必要的语音驱动程序,或者重新安装 pyttsx3

pip uninstall pyttsx3
pip install pyttsx3
2. 语音播放不清晰或不自然
  • 问题:生成的语音质量较差,或者语音不清晰。

  • 解决方案:调整语速(rate)和音量(volume)属性,或者尝试使用不同的语音(voice)。

3. 无法保存为音频文件
  • 问题save_to_file 方法未能正常工作,无法保存音频文件。

  • 解决方案:确保文件路径有效,且当前目录可写。如果是跨平台使用,确保你安装了音频库,如 pyaudio 或 wave


总结

pyttsx3 是一个强大且简单的 Python 库,用于实现文本转语音功能。通过 pyttsx3,你可以轻松地将文本内容转换为语音,支持设置语速、音量、语音类型等多种属性。该库不依赖网络,适合离线使用,适合多种应用场景,如语音助手、智能硬件、教育软件等。

对于更高质量的语音合成,可以结合其他库或服务,如 Google TTS、Amazon Polly 或 Microsoft Azure Speech API。

Python 使用总结之:Python 文本转语音引擎 – pyttsx3 完全指南 – 菜鸟-创作你的创作

相关文章:

Python 使用总结之:Python 文本转语音引擎 - pyttsx3 完全指南

文本转语音(TTS,Text-to-Speech)技术已经广泛应用于语音助手、智能硬件、教育软件等多个领域。Python 提供了多个库来实现 TTS,其中 pyttsx3 是一个非常常用的跨平台 TTS 引擎。本文将详细介绍如何使用 pyttsx3 实现文本转语音的功…...

星闪开发之Server-Client 指令交互控制红灯亮灭案例解析(SLE_LED详解)

系列文章目录 星闪开发之Server-Client 指令交互控制红灯亮灭的全流程解析(SLE_LED详解) 文章目录 系列文章目录前言一、项目地址二、客户端1.SLE_LED_Client\inc\SLE_LED_Client.h2.SLE_LED_Client\src\SLE_LED_Client.c头文件与依赖管理宏定义与全局变…...

day25-计算机网络-3

1. DNS解析流程 windows host文件是否配置域名对应的ip查询本地DNS缓存是否有这个域名对应的ip询问本地DNS(网卡配置的)是否知晓域名对应的ip本地DNS访问根域名解析服务器,但是根DNS只有顶级域名的记录,根告诉我们.cn顶级域名的D…...

【ArcGIS应用】ArcGIS‌应用如何进行影像分类?

ArcGIS‌应用如何进行影像分类?...

RunnablePassthrough介绍和透传参数实战

导读:在构建复杂的LangChain应用时,你是否遇到过需要在处理链中既保留原始输入又动态扩展上下文的场景?RunnablePassthrough正是为解决这类数据流处理问题而设计的核心组件。 本文通过深入剖析RunnablePassthrough的工作机制和实际应用&#…...

JavaSec-XSS

反射型XSS 简介 XSS(跨站脚本攻击)利用浏览器对服务器内容的信任,攻击者通过在网页中注入恶意脚本,使这些脚本在用户的浏览器上执行,从而实现攻击。常见的XSS攻击危害包括窃取用户会话信息、篡改网页内容、将用户重定向到恶意网站&#xff0c…...

AtCoder-abc408_b 解析

题目链接 让我们一步一步详细分析这个问题: 题目要求我们实现去重并排序的功能,这在C中可以直接使用set容器来实现。set是STL中的一个关联容器,具有以下特性: 自动去重:所有元素都是唯一的自动排序:默认…...

echarts在uniapp中使用安卓真机运行时无法显示的问题

文章目录 一、实现效果二、话不多说,上源码 前言:我们在uniapp中开发的时候,开发的时候很正常,echarts的图形在h5页面上也是很正常的,但是当我们打包成安卓app或者使用安卓真机运行的时候,图形根本就没有渲…...

STM32----IAP远程升级

一、概述: IAP,全称是“In-Application Programming”,中文解释为“在程序中编程”。IAP是一种对通过微控制器的对外接口(如USART,IIC,CAN,USB,以太网接口甚至是无线射频通道&#…...

C++优选算法 904. 水果成篮

文章目录 1.题目描述2.算法思路 3.完整代码容器做法数组做法 1.题目描述 看到这种题目,总觉得自己在做阅读理解,晕了,题目要求我们在一个数组里分别找出两种数字,并统计这两种数字分别出现一共是多少。 2.算法思路 采用哈希表滑…...

Python6.5打卡(day37)

DAY 37 早停策略和模型权重的保存 知识点回顾: 过拟合的判断:测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint,还包含训练状态 早停策略 作业:对信贷数据集训练后保存权重&#xf…...

大中型水闸安全监测管理系统建设方案

一、背景介绍 我国现已建成流量5m/s及以上的水闸共计100321座。其中,大型水闸923座,中型水闸6,697座。按功能类型划分,分洪闸8193座,排(退)水闸17808座,挡潮闸4955座,引水闸13796座&…...

Compose Multiplatform 实现自定义的系统托盘,解决托盘乱码问题

Compose Multiplatform是 JetBrains 开发的声明式 UI 框架,可让您为 Android、iOS、桌面和 Web 开发共享 UI。将 Compose Multiplatform 集成到您的 Kotlin Multiplatform 项目中,即可更快地交付您的应用和功能,而无需维护多个 UI 实现。 在…...

风控研发大数据学习路线

在如今信息爆炸时代,风控系统离不开大数据技术的支撑,大数据技术可以帮助风控系统跑的更快,算的更准。因此,风控技术研发需要掌握大数据相关技术。然而大数据技术栈内容庞大丰富,风控研发同学很可能会面临以下这些痛点…...

【设计模式】门面/外观模式

MySQL ,MyTomcat 的启动 现在有 MySQL ,MyTomcat 类,需要依次启动。 public class Application {public static void main(String[] args) {MySQL mySQL new MySQL();mySQL.initDate();mySQL.checkLog();mySQL.unlock();mySQL.listenPort(…...

spring的webclient与vertx的webclient的比较

Spring WebClient 和 Vert.x WebClient 都是基于响应式编程模型的非阻塞 HTTP 客户端,但在设计理念、生态整合和适用场景上存在显著差异。以下是两者的核心比较: 🔄 1. 技术背景与架构 • Spring WebClient ◦ 生态定位:属于 Sp…...

贪心算法应用:埃及分数问题详解

贪心算法与埃及分数问题详解 埃及分数(Egyptian Fractions)问题是数论中的经典问题,要求将一个真分数表示为互不相同的单位分数之和。本文将用2万字全面解析贪心算法在埃及分数问题中的应用,涵盖数学原理、算法设计、Java实现、优…...

高效集成AI能力:使用开放API打造问答系统,不用训练模型,也能做出懂知识的AI

本文为分享体验感受,非广告。 一、蓝耘平台核心功能与优势 丰富的模型资源库 蓝耘平台提供涵盖自然语言处理、计算机视觉、多模态交互等领域的预训练模型,支持用户直接调用或微调,无需从零开始训练,显著缩短开发周期。 高性能…...

Qt 仪表盘源码分享

Qt 仪表盘源码分享 一、效果展示二、优点三、源码分享四、使用方法 一、效果展示 二、优点 直观性 数据以图表或数字形式展示,一目了然。用户可以快速获取关键信息,无需深入阅读大量文字。 实时性 仪表盘通常支持实时更新,确保数据的时效性。…...

Python数据可视化科技图表绘制系列教程(四)

目录 带基线的棒棒糖图1 带基线的棒棒糖图2 带标记的棒棒糖图 哑铃图1 哑铃图2 包点图1 包点图2 雷达图1 雷达图2 交互式雷达图 【声明】:未经版权人书面许可,任何单位或个人不得以任何形式复制、发行、出租、改编、汇编、传播、展示或利用本博…...

RPM 数据库修复

RPM 数据库修复 1、备份当前数据库(重要!) sudo cp -a /var/lib/rpm /var/lib/rpm.backup此操作保护原始数据,防止修复失败导致数据丢失 2、清除损坏的锁文件 sudo rm -f /var/lib/rpm/__db.*这些锁文件(如 __db.00…...

R语言基础知识总结(超详细整理)

一、R语言简介 R是一种用于统计分析、数据可视化和科学计算的开源编程语言和环境。其语法简洁,内置丰富的统计函数和图形函数,广泛应用于数据科学、机器学习和生物统计等领域。 整体知识点目录: R语言基础知识总结 │ ├─ 安装与配置 │ …...

深入理解系统:UML类图

UML类图 类图(class diagram) 描述系统中的对象类型,以及存在于它们之间的各种静态关系。 正向工程(forward engineering)在编写代码之前画UML图。 逆向工程(reverse engineering)从已有代码建…...

C# 中的 IRecipient

IRecipient<TMessage> 是 .NET 中消息传递机制的重要组成部分&#xff0c;特别是在 MVVM (Model-View-ViewModel) 模式中广泛使用。下面我将详细介绍这一机制及其应用。 基本概念 IRecipient<TMessage> 是 .NET Community Toolkit 和 MVVM Toolkit 中定义的一个接…...

大模型RNN

RNN&#xff08;循环神经网络&#xff09;是一种专门处理序列数据的神经网络架构&#xff0c;在自然语言处理&#xff08;NLP&#xff09;、语音识别、时间序列分析等领域有广泛应用。其核心作用是捕捉序列中的时序依赖关系&#xff0c;即当前输出不仅取决于当前输入&#xff0…...

Python环境搭建竞赛技术文章大纲

竞赛背景与意义 介绍Python在数据科学、机器学习等领域的重要性环境搭建对于竞赛项目效率的影响常见竞赛平台对Python环境的特殊要求 基础环境准备 操作系统选择与优化&#xff08;Windows/Linux/macOS&#xff09;Python版本选择&#xff08;3.x推荐版本&#xff09;解释器…...

Redisson - 实现延迟队列

Redisson 延迟队列 Redisson 是基于 Redis 的一款功能强大的 Java 客户端。它提供了诸如分布式锁、限流器、阻塞队列、延迟队列等高可用、高并发组件。 其中&#xff0c;RDelayedQueue 是对 Redis 数据结构的高阶封装&#xff0c;能让你将消息延迟一定时间后再进入消费队列。…...

软件工程的定义与发展历程

文章目录 一、软件工程的定义二、软件工程的发展历程1. 前软件工程时期(1940s-1960s)2. 软件工程诞生(1968)3. 结构化方法时期(1970s)4. 面向对象时期(1980s)5. 现代软件工程(1990s-至今) 三、软件工程的发展趋势 一、软件工程的定义 软件工程是应用系统化、规范化、可量化的方…...

艾利特协作机器人:重新定义工业涂胶场景的精度革命

品牌使命与技术基因 作为全球协作机器人领域成长最快的企业之一&#xff0c;艾利特始终聚焦于解决工业生产中的人机协作痛点。在汽车制造、3C电子、新能源等领域的涂胶工艺场景中&#xff0c;我们通过自主研发的EC系列协作机器人&#xff0c;实现了&#xff1a; 空间利用率&a…...

第十三节:第五部分:集合框架:集合嵌套

集合嵌套案例分析 代码&#xff1a; package com.itheima.day27_Collection_nesting;import java.util.*;/*目标:理解集合的嵌套。 江苏省 "南京市","扬州市","苏州市","无锡市","常州市" 湖北省 "武汉市","…...