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

Python使用pyttsx3庫(kù)實(shí)現(xiàn)離線文字轉(zhuǎn)語(yǔ)音功能

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

pyttsx3庫(kù)

0、簡(jiǎn)介

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

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

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

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

# macOS:若語(yǔ)音異常,可安裝 pyobjc
pip install pyobjc

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

import pyttsx3

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

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

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

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

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

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

import pyttsx3

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

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

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

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

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

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

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

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

import pyttsx3

engine = pyttsx3.init()

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

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

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

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

engine.stop()

4、中斷正在朗讀的語(yǔ)音(交互場(chǎng)景)

import pyttsx3
import time
import threading

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關(guān)文章

最新評(píng)論

广灵县| 都昌县| 论坛| 万荣县| 宣恩县| 思茅市| 略阳县| 元阳县| 墨玉县| 来宾市| 沁阳市| 无锡市| 客服| 潍坊市| 德州市| 信丰县| 文安县| 富平县| 黄浦区| 成都市| 天柱县| 科尔| 平江县| 昆山市| 武陟县| 鄄城县| 湘潭县| 泽普县| 乌审旗| 建宁县| 崇义县| 阜康市| 社旗县| 溆浦县| 平乡县| 固阳县| 江陵县| 双鸭山市| 正定县| 朔州市| 台江县|