最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用pyttsx3庫實(shí)現(xiàn)文本轉(zhuǎn)語音的完整教程

 更新時(shí)間:2026年05月20日 08:16:49   作者:detayun  
本文詳細(xì)介紹了Python文本轉(zhuǎn)語音庫pyttsx3的完整使用指南,主要內(nèi)容包括pyttsx3的特點(diǎn),安裝方法,快速入門示例等內(nèi)容,希望可以幫助開發(fā)者快速掌握pyttsx3的使用技巧

從安裝到實(shí)戰(zhàn),一篇搞定!支持中英文,附完整代碼示例

pyttsx3 是什么

pyttsx3 是 Python 最流行的 離線文本轉(zhuǎn)語音(TTS)庫

核心特點(diǎn)

特性說明
離線運(yùn)行無需聯(lián)網(wǎng),無需API
支持中文完美支持中英文
跨平臺(tái)Windows / Mac / Linux
速度快實(shí)時(shí)語音合成
可定制語速、音量、語音均可調(diào)

安裝步驟

方式1:pip 安裝(推薦)

# 基礎(chǔ)安裝
pip install pyttsx3
# Windows 用戶額外安裝(必須?。?
pip install pypiwin32
# 如果遇到版本問題,使用穩(wěn)定版
pip install pyttsx3==2.90

方式2:虛擬環(huán)境安裝(最佳實(shí)踐)

# 創(chuàng)建虛擬環(huán)境
python -m venv tts_env
# 激活環(huán)境
# Windows:
tts_env\Scripts\activate
# Mac/Linux:
source tts_env/bin/activate
# 安裝
pip install pyttsx3 pypiwin32

驗(yàn)證安裝

import pyttsx3
print(pyttsx3.__version__)  # 應(yīng)輸出 2.90 或更高

快速開始(3行代碼)

import pyttsx3

engine = pyttsx3.init()
engine.say("Hello, 我是Python!")
engine.runAndWait()

運(yùn)行后,你的電腦就會(huì)說話了! ??

核心參數(shù)詳解

參數(shù)1:調(diào)整音量(0.0 ~ 1.0)

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.5)  # 50% 音量

engine.say("這是半音量的語音")
engine.runAndWait()
音量值效果
0.0?? 靜音
0.3?? 小聲
0.7?? 正常
1.0?? 最大

參數(shù)2:調(diào)整語速(50 ~ 300)

import pyttsx3

engine = pyttsx3.init()

# 查看當(dāng)前語速
rate = engine.getProperty('rate')
print(f"當(dāng)前語速: {rate}")  # 默認(rèn) 200

# 設(shè)置語速
engine.setProperty('rate', 150)  # 變慢
engine.say("這是慢速語音")
engine.runAndWait()

engine.setProperty('rate', 250)  # 變快
engine.say("這是快速語音")
engine.runAndWait()
語速值效果
50?? 極慢(像樹懶)
150?? 慢速(適合教學(xué))
200?? 默認(rèn)(正常說話)
300?? 極快(像松鼠)

參數(shù)3:切換語音(中英文)

import pyttsx3

engine = pyttsx3.init()

# 查看所有可用語音
voices = engine.getProperty('voices')
for i, voice in enumerate(voices):
    print(f"[{i}] {voice.name}")
    print(f"    ID: {voice.id}\n")

# 切換到中文語音(通常索引為 1)
engine.setProperty('voice', voices[1].id)
engine.say("你好,這是中文語音")
engine.runAndWait()

# 切換到英文語音(通常索引為 0)
engine.setProperty('voice', voices[0].id)
engine.say("Hello, this is English")
engine.runAndWait()

輸出示例(Windows)

[0] Microsoft David
    ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0

[1] Microsoft Huihui
    ID: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ZH-CN_HUIHUI_11.0

進(jìn)階功能

功能1:保存為音頻文件

import pyttsx3

engine = pyttsx3.init()

# 保存為 MP3 文件
engine.save_to_file("你好,這是保存的音頻", "output.mp3")
engine.runAndWait()

print("? 音頻已保存到 output.mp3")

功能2:暫停和繼續(xù)

import pyttsx3

engine = pyttsx3.init()

engine.say("這是第一句")
engine.runAndWait()

engine.say("這是第二句")
engine.runAndWait()

# 暫停
engine.stop()

# 繼續(xù)(需要重新初始化)
engine = pyttsx3.init()
engine.say("這是第三句")
engine.runAndWait()

功能3:批量朗讀文本

import pyttsx3

def read_text(text, lang='cn'):
    engine = pyttsx3.init()
    
    voices = engine.getProperty('voices')
    engine.setProperty('voice', voices[1].id if lang == 'cn' else voices[0].id)
    engine.setProperty('rate', 150)
    
    engine.say(text)
    engine.runAndWait()

# 批量朗讀
texts = [
    "第一句:Python真好用",
    "第二句:文本轉(zhuǎn)語音太酷了",
    "第三句:Hello World"
]

for text in texts:
    read_text(text)

完整實(shí)戰(zhàn)案例

案例1:智能語音助手類

import pyttsx3

class VoiceAssistant:
    def __init__(self):
        self.engine = pyttsx3.init()
        self.voices = self.engine.getProperty('voices')
        
    def speak(self, text, lang='cn', rate=150, volume=0.8):
        """通用朗讀方法"""
        # 設(shè)置語音
        voice_id = self.voices[1].id if lang == 'cn' else self.voices[0].id
        self.engine.setProperty('voice', voice_id)
        
        # 設(shè)置參數(shù)
        self.engine.setProperty('rate', rate)
        self.engine.setProperty('volume', volume)
        
        # 朗讀
        self.engine.say(text)
        self.engine.runAndWait()
    
    def speak_cn(self, text):
        """中文朗讀"""
        self.speak(text, lang='cn')
    
    def speak_en(self, text):
        """英文朗讀"""
        self.speak(text, lang='en')
    
    def save_audio(self, text, filename):
        """保存音頻"""
        self.engine.save_to_file(text, filename)
        self.engine.runAndWait()

# ?? 使用示例
assistant = VoiceAssistant()

assistant.speak_cn("你好,我是你的智能語音助手!")
assistant.speak_en("Hello, I am your voice assistant!")
assistant.save_audio("測試保存", "test.mp3")

案例2:閱讀器(朗讀文本文件)

import pyttsx3

def read_file(filepath, lang='cn'):
    """朗讀文本文件"""
    try:
        with open(filepath, 'r', encoding='utf-8') as f:
            text = f.read()
        
        engine = pyttsx3.init()
        voices = engine.getProperty('voices')
        
        voice_id = voices[1].id if lang == 'cn' else voices[0].id
        engine.setProperty('voice', voice_id)
        engine.setProperty('rate', 150)
        
        engine.say(text)
        engine.runAndWait()
        
        print(f"? 已朗讀文件: {filepath}")
        
    except FileNotFoundError:
        print(f"? 文件不存在: {filepath}")

# 使用
read_file("article.txt", lang='cn')

案例3:語音鬧鐘

import pyttsx3
import time

def voice_alarm(hour, minute, message):
    """語音鬧鐘"""
    engine = pyttsx3.init()
    engine.setProperty('rate', 180)
    engine.setProperty('volume', 1.0)
    
    while True:
        now = time.localtime()
        if now.tm_hour == hour and now.tm_min == minute:
            engine.say(f"鬧鐘響了!{message}")
            engine.runAndWait()
            break
        time.sleep(30)  # 每30秒檢查一次

# 設(shè)置早上7:30的鬧鐘
voice_alarm(7, 30, "起床啦!新的一天開始了!")

常見錯(cuò)誤及解決方案

錯(cuò)誤1:SyntaxError: invalid syntax(海象運(yùn)算符)

原因:Python 版本 < 3.8

解決

pip install pyttsx3==2.90

錯(cuò)誤2:_ctypes.COMError: (-2147200966, ...)

原因:找不到可用語音

解決

import pyttsx3

engine = pyttsx3.init()

# ?? 關(guān)鍵:手動(dòng)設(shè)置語音
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)

engine.say("測試成功")
engine.runAndWait()

錯(cuò)誤3:KeyError: None

原因:驅(qū)動(dòng)初始化失敗

解決

pip uninstall pyttsx3 -y
pip install pyttsx3==2.90
pip install pypiwin32

錯(cuò)誤4:沒有中文語音

解決

  1. Win + I → 時(shí)間和語言 → 語音
  2. 點(diǎn)擊 “添加語音”
  3. 搜索 “Chinese” 并安裝
  4. 重啟電腦

總結(jié)速查表

操作代碼
初始化engine = pyttsx3.init()
說話engine.say("文本")
執(zhí)行engine.runAndWait()
語速engine.setProperty('rate', 150)
音量engine.setProperty('volume', 0.8)
切換語音engine.setProperty('voice', voices[0].id)
保存文件engine.save_to_file("文本", "file.mp3")
查看語音voices = engine.getProperty('voices')

延伸推薦

特點(diǎn)適用場景
pyttsx3離線、可定制桌面應(yīng)用、嵌入式
gTTS聯(lián)網(wǎng)、音質(zhì)好在線服務(wù)、API
edge-tts微軟語音、自然高質(zhì)量語音生成
pyttsx4pyttsx3 升級(jí)版未來替代方案

到此這篇關(guān)于Python使用pyttsx3庫實(shí)現(xiàn)文本轉(zhuǎn)語音的完整教程的文章就介紹到這了,更多相關(guān)Python pyttsx3文本轉(zhuǎn)語音內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python三元表達(dá)式的基本用法詳解

    Python三元表達(dá)式的基本用法詳解

    Python的三元表達(dá)式是一種緊湊、簡潔的條件表達(dá)式,允許在一行代碼中根據(jù)條件選擇不同的值,三元表達(dá)式通常用于需要在單行中根據(jù)條件進(jìn)行值選擇的情況,有助于提高代碼的可讀性和簡潔性,本文給大家介紹了Python三元表達(dá)式的基本用法,需要的朋友可以參考下
    2023-10-10
  • Python使用文件操作實(shí)現(xiàn)一個(gè)XX信息管理系統(tǒng)的示例

    Python使用文件操作實(shí)現(xiàn)一個(gè)XX信息管理系統(tǒng)的示例

    這篇文章主要介紹了Python使用文件操作實(shí)現(xiàn)一個(gè)XX信息管理系統(tǒng)的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Tensorflow實(shí)現(xiàn)部分參數(shù)梯度更新操作

    Tensorflow實(shí)現(xiàn)部分參數(shù)梯度更新操作

    今天小編就為大家分享一篇Tensorflow實(shí)現(xiàn)部分參數(shù)梯度更新操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • numpy.sum()坐標(biāo)軸問題的解決

    numpy.sum()坐標(biāo)軸問題的解決

    本文主要介紹了numpy.sum()坐標(biāo)軸問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 基于pytorch中的Sequential用法說明

    基于pytorch中的Sequential用法說明

    這篇文章主要介紹了基于pytorch中的Sequential用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python中文分詞工具之結(jié)巴分詞用法實(shí)例總結(jié)【經(jīng)典案例】

    Python中文分詞工具之結(jié)巴分詞用法實(shí)例總結(jié)【經(jīng)典案例】

    這篇文章主要介紹了Python中文分詞工具之結(jié)巴分詞用法,結(jié)合實(shí)例形式總結(jié)分析了Python針對(duì)中文文件的讀取與分詞操作過程中遇到的問題與解決方法,需要的朋友可以參考下
    2017-04-04
  • Python 字典判斷空的解決方案

    Python 字典判斷空的解決方案

    這段代碼定義了一個(gè)使用Any類型注解的字典task_map,并通過條件判斷檢查它是否為空,如果為空,則打印1111,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • python中seaborn包常用圖形使用詳解

    python中seaborn包常用圖形使用詳解

    今天小編就為大家分享一篇python中seaborn包常用圖形使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Flask框架學(xué)習(xí)筆記(一)安裝篇(windows安裝與centos安裝)

    Flask框架學(xué)習(xí)筆記(一)安裝篇(windows安裝與centos安裝)

    Flask是一個(gè)輕量級(jí)的Web應(yīng)用框架, 使用Python編寫。Flask也被稱為 “microframework” ,因?yàn)樗褂煤唵蔚暮诵?,?extension 增加其他功能。
    2014-06-06
  • DJANGO-ALLAUTH社交用戶系統(tǒng)的安裝配置

    DJANGO-ALLAUTH社交用戶系統(tǒng)的安裝配置

    django-allauth是集成了local用戶系統(tǒng)和social用戶系統(tǒng),其social用戶系統(tǒng)可以掛載多個(gè)賬戶。也是一個(gè)流行度非常高的Django user系統(tǒng),我們這里簡單介紹下,分享下個(gè)人的使用經(jīng)驗(yàn)
    2014-11-11

最新評(píng)論

塔城市| 准格尔旗| 开化县| 大悟县| 碌曲县| 台东县| 望城县| 长丰县| 延安市| 栾川县| 邛崃市| 泰安市| 灯塔市| 南康市| 四川省| 全州县| 噶尔县| 永康市| 盱眙县| 阿城市| 勃利县| 利津县| 宝山区| 彩票| 西城区| 绍兴市| 唐海县| 调兵山市| 门头沟区| 靖远县| 蒙山县| 抚州市| 深圳市| 运城市| 精河县| 上栗县| 新源县| 金寨县| 丰都县| 牡丹江市| 宁明县|