简体   繁体   English

使用 python 的 gTTS 不起作用

[英]gTTS with python not working

I am working on a speech recognition project using gTTS.我正在使用 gTTS 进行语音识别项目。 The problem is, when i run the code, the system doesn't respond to it.问题是,当我运行代码时,系统没有响应。 (It won't answer to my query) I tried as per my knowledge but couldn't solve it. (它不会回答我的查询)我根据我的知识尝试但无法解决它。 I would really appreciate if anyone could help me fix this.如果有人能帮我解决这个问题,我将不胜感激。 Thanks very much in advance.非常感谢。 Here is my code:这是我的代码:

import speech_recognition as sr
from time import ctime
import time
import os
import pyaudio
from gtts import gTTS


def speak(audioString):
    print(audioString)
    tts = gTTS(text=audioString, lang='en')
    tts.save("audio.wav")
    os.system("audio.wav")


def recordaudio():
    # Record Audio
    r = sr.Recognizer()
    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source)
        print("Say something!")
    audio = r.listen(source)
    time.sleep(2)
    # Speech recognition using Google Speech Recognition
    data = ""
    try:
        data = r.recognize_google(audio)
        print("You said: " + data)
    except sr.UnknownValueError:
        print("Google Speech Recognition could not understand audio")
    except sr.RequestError as e:
        print("Could not request results from Google Speech Recognition service; {0}".format(e))

    return data


def ADA(data):
    if "how are you" in data:
        speak("I am fine")

    if "what time is it" in data:
        speak(ctime())

    if "What is your name" in data:
        speak("Call me ADA.")

    if "where is" in data:
        data = data.split(" ")
        location = data[2]
        speak("Hold on Sir, I will show you where " + location + " is.")
        os.system("chromium-browser https://www.google.nl/maps/place/" + location + "/&")


# initialization
time.sleep(2)
speak("Hi Touseef, what can I do for you?")
while 1:
   data = recordaudio()
   ADA(data) 

I have tested the speechrecognition and gtts libraries separately to check if they are working or not.我已经分别测试了语音识别和 gtts 库,以检查它们是否正常工作。 There is nothing wrong with both of them.他们俩都没有什么问题。 But when I try to use them in my actual code, something goes wrong and I can't figure it out.但是当我尝试在我的实际代码中使用它们时,出了点问题,我无法弄清楚。

Here are the code snippets for the libraries.以下是库的代码片段。

gTTS语音传输系统

from gtts import gTTS
import os
tts = gTTS(text='Helllo, Good morning my name is ADA. How can I help you?', lang='en')
tts.save("good.mp3")
os.system("good.mp3")

SpeechRecognition语音识别

import speech_recognition as sr

r = sr.Recognizer()
with sr.Microphone() as source:
    r.adjust_for_ambient_noise(source) 
    print("Say something!")
    audio = r.listen(source)


try:
   print(r.recognize_google(audio))
except sr.UnknownValueError:
   print("Could not understand audio")
except sr.RequestError as e:
   print("Could not request results from Google Speech Recognition service; {0}".format(e))

I'm a student and this is my academic project.我是一名学生,这是我的学术项目。 Please somebody help me figure this out.请有人帮我解决这个问题。

Try this;试试这个;

import speech_recognition as sr
from time import ctime
import time
import os
import pyaudio
from gtts import gTTS


def speak(audioString):
    print(audioString)
    tts = gTTS(text=audioString, lang='en')
    tts.save("audio1.wav")
    os.system("audio1.wav")


def recordaudio():
    # obtain audio from the microphone
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print ('Attention! Say something')
        audio = r.listen(source)

    # recognize speech using Google Speech Recognition
    try:
    # for testing purposes, we're just using the default API key
    # to use another API key, use `r.recognize_google(audio, key="GOOGLE_SPEECH_RECOGNITION_API_KEY")`
    # instead of `r.recognize_google(audio)`
        data='something'
        data = r.recognize_google(audio,language='en-US')

    except sr.UnknownValueError:
        print ('Attention ! Google could not understand audio')
        data='Could not understand anything'
    except sr.RequestError as e:

       print ('Attention ! Could not request results from Google service.')

    return data


def ADA(data):
    if "how are you" in data:
        speak("I am fine")

    if "what time is it" in data:
        speak(ctime())

    if "What is your name" in data:
        speak("Call me ADA.")

    if "where is" in data:
        data = data.split(" ")
        location = data[2:]
        speak("Hold on Sir, I will show you where " + location + " is.")
        os.system("chromium-browser https://www.google.nl/maps/place/" + location + "/&")


# initialization
time.sleep(2)
#speak("Hi Touseef, what can I do for you?")
while 1:
   data = recordaudio()
   ADA(data) 

Instead of using gTTS you can use pyTTsx which does not require net for operating like您可以使用pyTTsx而不是使用gTTS ,它不需要 net 进行操作,例如

import pyttsx
engine = pyttsx.init()
rate = engine.getProperty('rate')
engine.setProperty('rate', rate-40)
engine.say('how are yo8u? 123456789 123 1 2 3 4 5 6 7 8 9')
engine.runAndWait()

this.Hope you r problem is solved.这个。希望你的问题得到解决。

Your new code becomes;你的新代码变成了;

import pyttsx


def speak(audioString):
    print(audioString)    
    engine = pyttsx.init()
    rate = engine.getProperty('rate')
    engine.setProperty('rate', rate-40)
    engine.say(audioString)
    engine.runAndWait()

我对 gtts 有类似的问题(没有生成文本到语音的音频),我通过更新模块来修复它,如下所示:

pip install -U gtts

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM