很多小伙伴可能会问:市面上不是已经有很多文字转语音的工具了吗?为什么要用pyttsx3? 因为它有这些无敌优势: 1. 完全离线,不需要网络 2. 免费,无需申请API密钥 3. 安装简单,使用方便 4. 支持调节语速、音量、声音类型 5. 跨平台,Windows/Mac/Linux都能用
打开命令行,输入:
pip install pyttsx3Windows
用户可能还需要安装:
pip install pywin322
import pyttsx3
# 创建语音引擎
engine = pyttsx3.init()
# 说话
engine.say("你好,我是Python语音助手")
# 执行
engine.runAndWait()
就这么简单!运行后你的电脑就会说出这句话。是不是很神奇?
光会说话还不够,我们来调教一下声音:
import pyttsx3
engine = pyttsx3.init()
# 获取当前语速
rate = engine.getProperty('rate')
print(f'当前语速:{rate}')
# 设置新语速 (范围一般在100-300之间)
engine.setProperty('rate', 150)
# 获取当前音量
volume = engine.getProperty('volume')
print(f'当前音量:{volume}')
# 设置新音量 (范围为0.0-1.0)
engine.setProperty('volume', 0.8)
# 查看可用声音
voices = engine.getProperty('voices')
for voice in voices:
print(f'声音ID:{voice.id}')
print(f'声音名称:{voice.name}')
print(f'语言:{voice.languages}')
print('---')
# 设置第一个声音
engine.setProperty('voice', voices[0].id)
# 测试新设置
engine.say("现在我的声音变了!")
engine.runAndWait()
import pyttsx3
engine = pyttsx3.init()
text = "这段话将被保存为音频文件"
# 保存为mp3
engine.save_to_file(text, 'output.mp3')
engine.runAndWait()
import pyttsx3
def batch_speak(text_list):
engine = pyttsx3.init()
for text in text_list:
print(f"正在朗读: {text}")
engine.say(text)
engine.runAndWait()
# 测试
texts = [
"第一段话",
"第二段话",
"第三段话"
]
batch_speak(texts)
来做个实用的小项目 —— 语音闹钟:
import pyttsx3
import time
from datetime import datetime
def voice_alarm(alarm_time, message="时间到了!"):
engine = pyttsx3.init()
while True:
current_time = datetime.now().strftime("%H:%M")
if current_time == alarm_time:
print("闹钟响了!")
engine.say(message)
engine.runAndWait()
break
time.sleep(30) # 每30秒检查一次
# 设置闹钟时间(24小时制)
alarm_time = "14:30"
voice_alarm(alarm_time, "该起床了,太阳晒屁股啦!")
import pyttsx3
engine = pyttsx3.init()
texts = {
"中文": "你好,世界",
"English": "Hello, World",
"日本語": "こんにちは、世界"
}
for lang, text in texts.items():
print(f"正在播放{lang}")
engine.say(text)
engine.runAndWait()
import pyttsx3
import datetime
class VoiceAssistant:
def __init__(self):
self.engine = pyttsx3.init()
self.engine.setProperty('rate', 150)
self.engine.setProperty('volume', 0.9)
def speak(self, text):
print(f"助手: {text}")
self.engine.say(text)
self.engine.runAndWait()
def greet(self):
hour = datetime.datetime.now().hour
if 5 <= hour < 12:
self.speak("早上好!")
elif 12 <= hour < 18:
self.speak("下午好!")
else:
self.speak("晚上好!")
def tell_time(self):
time_str = datetime.datetime.now().strftime("%H点%M分")
self.speak(f"现在是{time_str}")
# 测试助手
assistant = VoiceAssistant()
assistant.greet()
assistant.tell_time()
pyttsx3真的是Python世界里的一颗明珠,既能让编程学习更有趣,又能实现实用的语音功能。它的应用场景非常广泛:
希望这篇教程对你有帮助!如果觉得不错,别忘了点赞关注哦~ 我们下期再见!