Python:将语音转换为文本和将文本转换为语音
语音识别是家庭自动化、人工智能等多个应用程序中的重要功能。本文旨在介绍如何使用Python的 SpeechRecognition 和 pyttsx3 库。
需要安装:
- Python语音识别模块:
pip install speechrecognition
- PyAudio:对 linux 用户使用以下命令
sudo apt-get install python3-pyaudio
- Windows 用户可以通过在终端中执行以下命令来安装 pyaudio
pip install pyaudio
- Python pyttsx3 模块:
pip install pyttsx3
使用麦克风的语音输入和语音到文本的翻译
- 允许调整环境噪声:由于周围的噪声变化,我们必须允许程序一秒钟或更长时间来调整记录的能量阈值,以便根据外部噪声水平进行调整。
- 语音到文本翻译:这是在谷歌语音识别的帮助下完成的。这需要有效的互联网连接才能工作。但是,有一些离线识别系统,例如 PocketSphinx,但安装过程非常严格,需要多个依赖项。谷歌语音识别是最容易使用的一种。
语音到文本的翻译:
首先,我们需要导入库,然后使用 init()函数对其进行初始化。此函数可能需要 2 个参数。
init(driverName string, debug bool)
- 驱动程序名称: [可用驱动程序名称] Windows 上的 sapi5 | MacOS 上的 nsss
- debug:启用或禁用调试输出
初始化后,我们将使用 say()函数让程序说出文本。
此方法也可能需要 2 个参数。
say(text unicode, name string)
- 文本:您希望听到的任何文本。
- 名称:为该演讲设置名称。 (选修的)
最后,为了运行语音,我们使用 runAndWait() 除非解释器遇到 runAndWait(),否则不会说出所有 say() 文本。
下面是实现。
Python
# Python program to translate
# speech to text and text to speech
import speech_recognition as sr
import pyttsx3
# Initialize the recognizer
r = sr.Recognizer()
# Function to convert text to
# speech
def SpeakText(command):
# Initialize the engine
engine = pyttsx3.init()
engine.say(command)
engine.runAndWait()
# Loop infinitely for user to
# speak
while(1):
# Exception handling to handle
# exceptions at the runtime
try:
# use the microphone as source for input.
with sr.Microphone() as source2:
# wait for a second to let the recognizer
# adjust the energy threshold based on
# the surrounding noise level
r.adjust_for_ambient_noise(source2, duration=0.2)
#listens for the user's input
audio2 = r.listen(source2)
# Using google to recognize audio
MyText = r.recognize_google(audio2)
MyText = MyText.lower()
print("Did you say "+MyText)
SpeakText(MyText)
except sr.RequestError as e:
print("Could not request results; {0}".format(e))
except sr.UnknownValueError:
print("unknown error occured")
Input: voice speech (Hi buddy how are you)
Output: Did you say hi buddy how are you