[Python]使用pyttsx3將文字轉語音

閱讀時間約 6 分鐘

本文利用pyqt5,使用pyttsx3將QLineEdit(單行輸入框)的字串,轉成語音呈現出來。


raw-image

程式範例

import sys
import pyttsx3
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QVBoxLayout

class TextToSpeech(QWidget):
def __init__(self):
super().__init__()

self.initUI()
self.engine = pyttsx3.init()

def initUI(self):
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('Text to Speech')

layout = QVBoxLayout()

self.text_input = QLineEdit(self)
layout.addWidget(self.text_input)

self.play_button = QPushButton('Play', self)
self.play_button.clicked.connect(self.play_text)
layout.addWidget(self.play_button)

self.setLayout(layout)

def play_text(self):
text = self.text_input.text()
self.engine.say(text)
self.engine.runAndWait()

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = TextToSpeech()
ex.show()
sys.exit(app.exec_())

程式碼重點說明

play_text :讀取輸入框中的文字並使用 pyttsx3 讀出來。

    def play_text(self):
text = self.text_input.text()
self.engine.say(text)
self.engine.runAndWait()

pyttsx3 用於將文字轉換為語音。與其他語音合成庫不同,pyttsx3 支持多平台,包括 Windows、macOS 和 Linux,並且不需要依賴於線上服務,這意味著它可以在沒有網絡連接的情況下工作。

以下是 pyttsx3 模組的說明,包括安裝、基本使用和常用功能:


基本使用

以下是一個簡單的範例,展示如何使用 pyttsx3 將文字轉換為語音:

import pyttsx3

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

# 設置文字
text = "Hello, how are you today?"

# 說出文字
engine.say(text)

# 等待完成
engine.runAndWait()

常用功能

調整語速

可以調整語音播放的速度:

import pyttsx3

engine = pyttsx3.init()

# 設置語速
rate = engine.getProperty('rate') # 獲取當前語速
print(f"Current speaking rate: {rate}")

engine.setProperty('rate', 150) # 設置語速為150字/分鐘

engine.say("This is the new speaking rate.")
engine.runAndWait()

調整音量

可以調整語音的音量:

import pyttsx3

engine = pyttsx3.init()

# 設置音量
volume = engine.getProperty('volume') # 獲取當前音量
print(f"Current volume level: {volume}")

engine.setProperty('volume', 0.9) # 設置音量(範圍在0.0到1.0之間)

engine.say("This is the new volume level.")
engine.runAndWait()

更改語音

可以更改語音引擎使用的語音(例如男聲或女聲):

import pyttsx3

engine = pyttsx3.init()

# 獲取所有可用語音
voices = engine.getProperty('voices')
for index, voice in enumerate(voices):
print(f"Voice {index}:")
print(f" - ID: {voice.id}")
print(f" - Name: {voice.name}")
print(f" - Languages: {voice.languages}")
print(f" - Gender: {voice.gender}")
print(f" - Age: {voice.age}")

# 設置使用的語音(例如,選擇第二個語音)
engine.setProperty('voice', voices[1].id)

engine.say("This is a different voice.")
engine.runAndWait()








avatar-img
128會員
213內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
微調(Fine tune)是深度學習中遷移學習的一種方法,其中預訓練模型的權重會在新數據上進行訓練。 本文主要介紹如何使用新的訓練圖檔在tesseract 辨識模型進行Fine tune 有關於安裝的部分可以參考友人的其他文章 Tesseract OCR - 繁體中文【安裝篇】 將所有資料
平時都在用tesseract來辨識OCR的部分,在網路上也常常聽說easyOCR比tesseract好用,就拿之前測試的OCR素材來比較看看囉。 以下輸入同樣圖片直接測試,並非絕對誰就比較準,只單純測試數字含英文的部分。 圖片素材就是15碼(英文加數字),檔名為OCR正確結果
本文將展示使用不同激活函數(ReLU 和 Sigmoid)的效果。 一個簡單的多層感知器(MLP)模型來對 Fashion-MNIST 資料集進行分類。 函數定義 Sigmoid 函數 Sigmoid 函數將輸入壓縮到 0到 1 之間: 特性: 輸出範圍是 (0,1)(0, 1)(0,1
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
本文主要應用deepface的正面(frontal)人臉檢測的預設模型,使用analyze 函數,用於分析一張人臉圖像的情感(emotion)。 在Colab上實現,若用其他平台需稍微修改程式碼。 Deepface Deepface是一個輕量級的Python人臉辨識和臉部屬性分析
本文主要使用SpeechRecognition來做一個簡單的語音辨識,使用pyqt5介面呈現。 按下Start Recording,開始錄音,並顯示請開始說話。然後按鈕名改名Stop 在按下Stop Recording,稍等片刻後就會呈現出辨識結果​ 程式範例 import sys i
微調(Fine tune)是深度學習中遷移學習的一種方法,其中預訓練模型的權重會在新數據上進行訓練。 本文主要介紹如何使用新的訓練圖檔在tesseract 辨識模型進行Fine tune 有關於安裝的部分可以參考友人的其他文章 Tesseract OCR - 繁體中文【安裝篇】 將所有資料
平時都在用tesseract來辨識OCR的部分,在網路上也常常聽說easyOCR比tesseract好用,就拿之前測試的OCR素材來比較看看囉。 以下輸入同樣圖片直接測試,並非絕對誰就比較準,只單純測試數字含英文的部分。 圖片素材就是15碼(英文加數字),檔名為OCR正確結果
本文將展示使用不同激活函數(ReLU 和 Sigmoid)的效果。 一個簡單的多層感知器(MLP)模型來對 Fashion-MNIST 資料集進行分類。 函數定義 Sigmoid 函數 Sigmoid 函數將輸入壓縮到 0到 1 之間: 特性: 輸出範圍是 (0,1)(0, 1)(0,1
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
本文主要應用deepface的正面(frontal)人臉檢測的預設模型,使用analyze 函數,用於分析一張人臉圖像的情感(emotion)。 在Colab上實現,若用其他平台需稍微修改程式碼。 Deepface Deepface是一個輕量級的Python人臉辨識和臉部屬性分析
你可能也想看
Google News 追蹤