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

Python使用pyttsx3庫實現(xiàn)離線文字轉(zhuǎn)語音功能

 更新時間:2026年01月16日 09:39:53   作者:禿了也弱了。  
文章介紹了pyttsx3庫,這是一個用于Python的離線文本轉(zhuǎn)語音庫,支持跨平臺使用,它能夠?qū)崿F(xiàn)基礎(chǔ)文本轉(zhuǎn)語音、自定義語速和音量、切換語音類型、中斷語音、批量朗讀文件和將語音保存為音頻文件等功能,需要的朋友可以參考下

pyttsx3庫

0、簡介

文檔:https://pypi.ac.cn/project/pyttsx3/

pyttsx3 是 Python 輕量級的離線文本轉(zhuǎn)語音(TTS, Text-to-Speech) 庫,區(qū)別于 gTTS(需要聯(lián)網(wǎng)),它直接調(diào)用操作系統(tǒng)內(nèi)置的語音引擎,無需網(wǎng)絡(luò)即可實現(xiàn)文本轉(zhuǎn)語音,響應(yīng)速度快,且支持跨平臺(Windows、macOS、Linux)。

# 基礎(chǔ)安裝(Windows 直接可用,Linux/macOS 需額外依賴)
pip install pyttsx3

# Linux:需安裝 espeak 和 libespeak1
sudo apt-get install espeak libespeak1

# macOS:若語音異常,可安裝 pyobjc
pip install pyobjc

1、基礎(chǔ)文本轉(zhuǎn)語音(入門用法)

import pyttsx3

# 1. 初始化語音引擎
engine = pyttsx3.init()

# 2. 設(shè)置要朗讀的文本(支持中文,Windows 自帶中文語音包)
text = "你好,我是pyttsx3庫,這是基礎(chǔ)的文本轉(zhuǎn)語音示例。"

# 3. 執(zhí)行朗讀(將文本加入朗讀隊列)(可多次調(diào)用,按順序朗讀)
engine.say(text)

# 4. 等待朗讀完成(必須調(diào)用,否則程序會直接結(jié)束,無語音輸出)
engine.runAndWait()

# 5. 釋放引擎資源(可選,建議在程序結(jié)束時調(diào)用)
engine.stop()

2、自定義語速、音量(常用配置)

import pyttsx3

# 初始化引擎
engine = pyttsx3.init()

# ========== 1. 調(diào)整語速 ==========
# 獲取當前語速(默認約200詞/分鐘,值越小越慢)
# getProperty(key):獲取引擎屬性,常用 key 包括 rate(語速)、volume(音量)、voices(語音列表);
current_rate = engine.getProperty('rate')
print(f"當前語速:{current_rate}")

# 設(shè)置新語速(建議范圍:100-300)
# setProperty(key, value):設(shè)置引擎屬性,音量值必須在 0.0-1.0 之間,語速值無嚴格上限,但建議在 100-300 之間。
engine.setProperty('rate', 150)  # 放慢語速

# ========== 2. 調(diào)整音量 ==========
# 獲取當前音量(范圍0.0-1.0,默認1.0)
current_volume = engine.getProperty('volume')
print(f"當前音量:{current_volume}")

# 設(shè)置新音量(0.8表示80%音量)
engine.setProperty('volume', 0.8)

# 朗讀文本
text = "我現(xiàn)在的語速是150詞/分鐘,音量是80%。"
engine.say(text)
engine.runAndWait()
engine.stop()

3、切換語音類型(男聲 / 女聲)

Windows 系統(tǒng)中,中文語音包通常名稱包含 “慧慧”“曉曉” 等,語言代碼為 zh-CN;
若找不到中文語音,可在 Windows 控制面板的 “語音識別” 中安裝中文語音包。

import pyttsx3

engine = pyttsx3.init()

# 1. 獲取所有可用的語音列表
# voices 是一個列表,每個元素是語音對象,包含 id(唯一標識)、name(名稱)、language(語言)等屬性;
voices = engine.getProperty('voices')
print("可用的語音包列表:")
for idx, voice in enumerate(voices):
    print(f"序號:{idx},名稱:{voice.name},語言:{voice.languages}")

# 2. 切換語音(以Windows為例,通常0是英文男聲,1是中文女聲)
engine.setProperty('voice', voices[1].id)  # 切換到中文女聲

# 3. 朗讀中文文本
engine.say("你好,我是中文女聲,現(xiàn)在切換了語音類型。")
engine.runAndWait()

# (可選)切換回英文男聲
engine.setProperty('voice', voices[0].id)
engine.say("Hello, I am English male voice.")
engine.runAndWait()

engine.stop()

4、中斷正在朗讀的語音(交互場景)

import pyttsx3
import time
import threading

# 初始化引擎
engine = pyttsx3.init()
engine.setProperty('rate', 100)  # 放慢語速,方便測試中斷

# 定義朗讀函數(shù)
def read_long_text():
    long_text = "這是一段很長的文本,用于測試中斷功能。我會慢慢朗讀,你可以在朗讀過程中觸發(fā)中斷。" * 3
    engine.say(long_text)
    engine.runAndWait()

# 啟動朗讀線程(避免阻塞主線程)
read_thread = threading.Thread(target=read_long_text)
read_thread.start()

# 等待3秒后中斷朗讀
time.sleep(3)
print("正在中斷朗讀...")
engine.stop()  # 中斷當前朗讀

# 等待線程結(jié)束
read_thread.join()
print("朗讀已中斷")

5、批量朗讀文件中的文本(讀取文件 + 語音朗讀)

import pyttsx3

def read_text_from_file(file_path):
    # 初始化引擎
    engine = pyttsx3.init()
    engine.setProperty('rate', 160)
    engine.setProperty('volume', 0.9)

    try:
        # 讀取文件內(nèi)容(指定編碼為utf-8,避免中文亂碼)
        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.read()

        # 分段朗讀(避免文本過長導(dǎo)致卡頓)
        paragraphs = content.split('\n')  # 按換行符分段
        for para in paragraphs:
            if para.strip():  # 跳過空行
                engine.say(para)
                engine.runAndWait()

    except FileNotFoundError:
        print(f"錯誤:未找到文件 {file_path}")
    except Exception as e:
        print(f"讀取文件出錯:{e}")
    finally:
        engine.stop()

# 調(diào)用函數(shù),讀取并朗讀txt文件
if __name__ == "__main__":
    read_text_from_file("test.txt")  # 確保當前目錄有test.txt文件,且內(nèi)容為中文/英文

6、將語音保存為音頻文件(擴展用法)

pyttsx3 本身不支持直接保存音頻,但可通過 Windows 自帶的 SAPI5 實現(xiàn)(最簡便,僅適用于 Windows):

import pyttsx3
from comtypes.client import CreateObject  # 需要安裝:pip install comtypes

def text_to_audio(text, output_path):
    # 初始化SAPI5語音引擎
    speaker = CreateObject("SAPI.SpVoice")
    # 初始化音頻流
    stream = CreateObject("SAPI.SpFileStream")
    
    # 設(shè)置輸出文件格式(WAV格式)
    stream.Open(output_path, 3)  # 3 = SPSF_CREATE_ALWAYS
    speaker.AudioOutputStream = stream
    
    # 執(zhí)行語音合成并保存
    speaker.Speak(text)
    
    # 關(guān)閉流
    stream.Close()

# 測試:將文本保存為WAV文件
if __name__ == "__main__":
    text = "這是保存為音頻文件的示例,輸出格式為WAV。"
    text_to_audio(text, "output.wav")
    print(f"音頻已保存到 output.wav")

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

相關(guān)文章

最新評論

龙陵县| 来安县| 明星| 普定县| 二连浩特市| 卢龙县| 隆尧县| 聂拉木县| 鄂尔多斯市| 顺义区| 白朗县| 临夏县| 吉首市| 双城市| 铁岭市| 万荣县| 邮箱| 大同县| 偏关县| 梧州市| 涟水县| 榆社县| 会理县| 霍林郭勒市| 宜良县| 溧水县| 元朗区| 壤塘县| 张家界市| 唐河县| 宜兴市| 南宁市| 嫩江县| 读书| 乡城县| 高邑县| 荔浦县| 康马县| 黄大仙区| 祁门县| 惠安县|