從入門到實(shí)戰(zhàn)詳解Python文本轉(zhuǎn)語(yǔ)音的完全指南
用Python讓你的程序"開口說話"!支持中英文,5分鐘上手
什么是文本轉(zhuǎn)語(yǔ)音?
文本轉(zhuǎn)語(yǔ)音(Text-to-Speech, TTS) 就是讓計(jì)算機(jī)把文字讀出來(lái)。
應(yīng)用場(chǎng)景:
- 智能助手(如小愛同學(xué)、Siri)
- 有聲讀物生成
- 車載導(dǎo)航語(yǔ)音播報(bào)
- 障礙輔助工具
Python 中最流行的 TTS 庫(kù)是 pyttsx3,它離線運(yùn)行、跨平臺(tái)、支持中英文!
為什么選擇 pyttsx3?
| 特性 | pyttsx3 | gTTS | edge-tts |
|---|---|---|---|
| 離線使用 | ? | ? | ? |
| 支持中文 | ? | ? | ? |
| 跨平臺(tái) | ? | ? | ? |
| 自定義語(yǔ)音 | ? | ? | ? |
| 速度 | ? 快 | ?? 慢(需聯(lián)網(wǎng)) | ?? 慢(需聯(lián)網(wǎng)) |
結(jié)論:離線 + 中文 + 可定制 → pyttsx3 是首選!
安裝教程
步驟1:創(chuàng)建虛擬環(huán)境(推薦)
# 創(chuàng)建虛擬環(huán)境 python -m venv tts_env # 激活環(huán)境 # Windows: tts_env\Scripts\activate # Mac/Linux: source tts_env/bin/activate
步驟2:安裝 pyttsx3
pip install pyttsx3 # 如果需要更好的兼容性,安裝特定版本 pip install pyttsx3==2.90
步驟3:安裝 pypiwin32(Windows 必需)
pip install pypiwin32
快速上手(5行代碼)
import pyttsx3
engine = pyttsx3.init()
engine.say("你好,世界!Hello World!")
engine.runAndWait()
運(yùn)行后,你的電腦就會(huì)說話了!
進(jìn)階功能
1. 調(diào)整語(yǔ)速
import pyttsx3
engine = pyttsx3.init()
# 獲取當(dāng)前語(yǔ)速
rate = engine.getProperty('rate')
print(f"當(dāng)前語(yǔ)速: {rate}") # 默認(rèn) 200
# 設(shè)置語(yǔ)速(范圍 50-300)
engine.setProperty('rate', 150) # 變慢
engine.say("這是慢速語(yǔ)音")
engine.runAndWait()
| 語(yǔ)速值 | 效果 |
|---|---|
| 50 | ?? 極慢 |
| 150 | ?? 正常偏慢 |
| 200 | ?? 默認(rèn) |
| 300 | ?? 極快 |
2. 調(diào)整音量
import pyttsx3
engine = pyttsx3.init()
# 獲取當(dāng)前音量
volume = engine.getProperty('volume')
print(f"當(dāng)前音量: {volume}") # 默認(rèn) 1.0
# 設(shè)置音量(范圍 0.0 - 1.0)
engine.setProperty('volume', 0.8) # 80% 音量
engine.say("這是80%音量的語(yǔ)音")
engine.runAndWait()
3. 切換語(yǔ)音(中英文)
import pyttsx3
engine = pyttsx3.init()
# 查看所有可用語(yǔ)音
voices = engine.getProperty('voices')
for i, voice in enumerate(voices):
print(f"語(yǔ)音 {i}: {voice.name} (ID: {voice.id})")
# 切換到中文語(yǔ)音(通常是索引 1)
engine.setProperty('voice', voices[1].id)
engine.say("這是中文語(yǔ)音")
engine.runAndWait()
# 切換到英文語(yǔ)音(通常是索引 0)
engine.setProperty('voice', voices[0].id)
engine.say("This is English voice")
engine.runAndWait()
輸出示例:
語(yǔ)音 0: Microsoft David (ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0)
語(yǔ)音 1: Microsoft Huihui (ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0)
4. 保存為音頻文件
import pyttsx3
engine = pyttsx3.init()
# 設(shè)置保存路徑
engine.save_to_file("你好,這是保存的音頻", "test.mp3")
engine.runAndWait()
print("? 音頻已保存為 test.mp3")
常見問題及解決方案
問題1:SyntaxError: invalid syntax(海象運(yùn)算符錯(cuò)誤)
原因:Python 版本低于 3.8
解決:
# 方案A:升級(jí) Python 到 3.8+ # 方案B:降級(jí) pyttsx3 pip install pyttsx3==2.90
問題2:_ctypes.COMError: (-2147200966, None, ...)
原因:Windows 語(yǔ)音引擎找不到可用語(yǔ)音
解決:
import pyttsx3
engine = pyttsx3.init()
# ?? 關(guān)鍵:手動(dòng)設(shè)置語(yǔ)音
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) # 使用第一個(gè)語(yǔ)音
engine.say("測(cè)試成功")
engine.runAndWait()
問題3:KeyError: None
原因:驅(qū)動(dòng)初始化失敗
解決:
pip uninstall pyttsx3 -y pip install pyttsx3==2.90 pip install pypiwin32
問題4:沒有中文語(yǔ)音
解決:
- 打開 Windows 設(shè)置 → 時(shí)間和語(yǔ)言 → 語(yǔ)音
- 點(diǎn)擊 “添加語(yǔ)音”
- 搜索 “Chinese” 并安裝
- 重啟電腦
完整實(shí)戰(zhàn)案例
案例1:智能朗讀器(支持中英文切換)
import pyttsx3
class TextToSpeech:
def __init__(self):
self.engine = pyttsx3.init()
self.voices = self.engine.getProperty('voices')
def set_chinese(self):
"""切換到中文語(yǔ)音"""
self.engine.setProperty('voice', self.voices[1].id)
def set_english(self):
"""切換到英文語(yǔ)音"""
self.engine.setProperty('voice', self.voices[0].id)
def set_speed(self, rate=150):
"""設(shè)置語(yǔ)速"""
self.engine.setProperty('rate', rate)
def set_volume(self, volume=0.8):
"""設(shè)置音量"""
self.engine.setProperty('volume', volume)
def speak(self, text, lang='cn'):
"""朗讀文本"""
if lang == 'en':
self.set_english()
else:
self.set_chinese()
self.engine.say(text)
self.engine.runAndWait()
def save(self, text, filename='output.mp3'):
"""保存為音頻文件"""
self.engine.save_to_file(text, filename)
self.engine.runAndWait()
# ?? 使用示例
tts = TextToSpeech()
tts.speak("你好,歡迎使用Python文本轉(zhuǎn)語(yǔ)音!")
tts.set_speed(120)
tts.speak("This is English voice, slower speed.")
tts.save("保存的音頻測(cè)試", "test.mp3")
案例2:批量朗讀文本文件
import pyttsx3
def read_file(filepath):
engine = pyttsx3.init()
engine.setProperty('voice', engine.getProperty('voices')[1].id)
with open(filepath, 'r', encoding='utf-8') as f:
text = f.read()
engine.say(text)
engine.runAndWait()
# 使用
read_file("article.txt")
總結(jié)
| 知識(shí)點(diǎn) | 命令/代碼 |
|---|---|
| 安裝 | pip install pyttsx3==2.90 |
| 初始化 | engine = pyttsx3.init() |
| 說話 | engine.say("文本") |
| 執(zhí)行 | engine.runAndWait() |
| 語(yǔ)速 | engine.setProperty('rate', 150) |
| 音量 | engine.setProperty('volume', 0.8) |
| 切換語(yǔ)音 | engine.setProperty('voice', voices[0].id) |
| 保存文件 | engine.save_to_file("文本", "file.mp3") |
延伸學(xué)習(xí)
| 庫(kù) | 特點(diǎn) | 適用場(chǎng)景 |
|---|---|---|
| pyttsx3 | 離線、可定制 | 桌面應(yīng)用、嵌入式 |
| gTTS | 聯(lián)網(wǎng)、音質(zhì)好 | 在線服務(wù)、API |
| edge-tts | 微軟語(yǔ)音、自然 | 高質(zhì)量語(yǔ)音生成 |
| pyttsx4 | pyttsx3 改進(jìn)版 | 未來(lái)替代方案 |
到此這篇關(guān)于從入門到實(shí)戰(zhàn)詳解Python文本轉(zhuǎn)語(yǔ)音的完全指南的文章就介紹到這了,更多相關(guān)Python文本轉(zhuǎn)語(yǔ)音內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Python和Tkinter實(shí)現(xiàn)文本文件轉(zhuǎn)換為MP3語(yǔ)音文件
- Python使用gTTS實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音的終極指南
- 利用Python開發(fā)一個(gè)簡(jiǎn)單實(shí)用的文本轉(zhuǎn)語(yǔ)音工具
- Python文本轉(zhuǎn)語(yǔ)音引擎pyttsx3的使用完全指南
- Python pyttsx3庫(kù)實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音功能的示例
- 使用Python實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音(TTS)并播放音頻
- Python文本到語(yǔ)音轉(zhuǎn)換庫(kù)pyttsx3的安裝及使用全面指南
- Python使用gTTS庫(kù)實(shí)現(xiàn)文本轉(zhuǎn)換為語(yǔ)音的詳細(xì)步驟
相關(guān)文章
Python使用matplotlib模塊繪制圖像并設(shè)置標(biāo)題與坐標(biāo)軸等信息示例
這篇文章主要介紹了Python使用matplotlib模塊繪制圖像并設(shè)置標(biāo)題與坐標(biāo)軸等信息,結(jié)合實(shí)例形式分析了Python中matplotlib模塊進(jìn)行坐標(biāo)系圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
Python學(xué)習(xí)之基礎(chǔ)語(yǔ)法介紹
大家好,本篇文章主要講的是Python學(xué)習(xí)之基礎(chǔ)語(yǔ)法介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
python中pandas輸出完整、對(duì)齊的表格的方法
今天使用python計(jì)算數(shù)據(jù)相關(guān)性,但是發(fā)現(xiàn)計(jì)算出的表格中間好多省略號(hào),而且也不對(duì)齊。怎么解決這個(gè)問題,下面小編給大家?guī)?lái)了python中pandas如何輸出完整、對(duì)齊的表格,感興趣的朋友一起看看吧2021-10-10

