📜  如何使用 pyttsx3 (1)

📅  最后修改于: 2023-12-03 15:08:23.781000             🧑  作者: Mango

如何使用 pyttsx3

简介

Pyttsx3是Python的一个文本到语音转换库。它支持多种语音和语言,可以用于许多语音应用程序,如辅助技术和无人值守系统。

安装
pip install pyttsx3
基本用法
import pyttsx3

# 创建一个引擎实例
engine = pyttsx3.init()

# 将文本转换成语音
engine.say("Hello World")

# 开始语音输出
engine.runAndWait()

我们可以看到,使用pyttsx3非常简单,只需要导入库,初始化一个引擎实例,使用say()方法转换文本成语音,使用runAndWait()方法开始语音输出。下面我们详细介绍pyttsx3的更多特性。

更多特性
改变语音和语言

Pyttsx3支持多种语音和语言,你可以使用下面的语句查询你的机器所支持的语音和语言。

import pyttsx3

# 查询所支持的语音和语言
engine = pyttsx3.init()
voices = engine.getProperty('voices')
for voice in voices:
    print('Name: %s' % voice.name)
    print('Gender: %s' % voice.gender)
    print('Age: %s' % voice.age)
    print('Languages: %s' % voice.languages)

输出:

Name: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0
Gender: 
Age: 
Languages: [u'en-US']
Name: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0
Gender: 
Age: 
Languages: [u'en-US']

这里我们可以看到,我的机器只支持英文的两个语音和语言。

你可以使用setProperty方法来改变默认语音和语言。

import pyttsx3

# 改变默认语音和语言
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)
engine.setProperty('rate', 150)  # 设置语音速度
engine.say('Hello World')
engine.runAndWait()
引擎事件

在语音转换过程中,我们可以监听文本转换成语音的状态,以及文本转换成语音的进度。

import pyttsx3

# 监听引擎事件
def onStart(name):
    print('starting', name)

def onWord(name, location, length):
    print('word', name, location, length)

def onEnd(name, completed):
    print('finishing', name, completed)

engine = pyttsx3.init()
engine.connect('started-utterance', onStart)
engine.connect('started-word', onWord)
engine.connect('finished-utterance', onEnd)
engine.say('The quick brown fox jumped over the lazy dog.')
engine.runAndWait()

输出:

starting None
word The 0 3
word quick 4 5
word brown 10 5
word fox 16 3
word jumped 20 6
word over 27 4
word the 32 3
word lazy 36 4
word dog. 41 4
finishing None True

这里我们可以看到,我们的监听器跟踪了文本转换成语音的状态信息。

总结

在这篇文章中,我们介绍了Pyttsx3的一些基本用法以及更多的特性。Pyttsx3极其易用,可以轻松地集成到Python应用程序中。它支持多种语音和语言,有强大的事件机制,可用于许多语音应用程序。