震惊! 用Python让你的电脑开口说话,居然如此简单!

为什么选择pyttsx3?

很多小伙伴可能会问:市面上不是已经有很多文字转语音的工具了吗?为什么要用pyttsx3? 因为它有这些无敌优势: 1. 完全离线,不需要网络 2. 免费,无需申请API密钥 3. 安装简单,使用方便 4. 支持调节语速、音量、声音类型 5. 跨平台,Windows/Mac/Linux都能用

快速上手

1. 安装pyttsx3

打开命令行,输入:

pip install pyttsx3Windows

用户可能还需要安装:

pip install pywin322

第一个语音程序来看看最简单的示例:

import pyttsx3

# 创建语音引擎
engine = pyttsx3.init()

# 说话
engine.say("你好,我是Python语音助手")

# 执行
engine.runAndWait()

就这么简单!运行后你的电脑就会说出这句话。是不是很神奇?

3. 调整语音参数

光会说话还不够,我们来调教一下声音:

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()

4. 实用小技巧保存语音为文件

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, "该起床了,太阳晒屁股啦!")

进阶玩法

1. 多语言支持

import pyttsx3

engine = pyttsx3.init()
texts = {
    "中文": "你好,世界",
    "English": "Hello, World",
    "日本語": "こんにちは、世界"
}

for lang, text in texts.items():
    print(f"正在播放{lang}")
    engine.say(text)
    engine.runAndWait()

2.自定义语音助手

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()

如何改变声音?

  1. 使用engine.getProperty('voices')查看可用声音
  2. 用engine.setProperty('voice', voice_id)切换

pyttsx3真的是Python世界里的一颗明珠,既能让编程学习更有趣,又能实现实用的语音功能。它的应用场景非常广泛:

  1. 制作语音提醒工具
  2. 开发学习辅助程序
  3. 给视障人士开发辅助软件
  4. 做成语音播报系统
  5. 给自己的程序加上语音交互

希望这篇教程对你有帮助!如果觉得不错,别忘了点赞关注哦~ 我们下期再见!