📜  Python:将语音转换为文本和将文本转换为语音

📅  最后修改于: 2022-05-13 01:55:47.868000             🧑  作者: Mango

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