โมดูล SpeechRecogniton ช้าเกินไปใน python

Sep 04 2020

ฉันพยายามใช้การรู้จำเสียงสำหรับ Deep Learning Chatbot ของฉันเพื่อรับข้อมูลจากผู้ใช้ จริงๆแล้วรหัสฟังก์ชันการรู้จำเสียงของฉันคือ:

def get_audio():
    r = sr.Recognizer()

    with sr.Microphone() as source:
        r.pause_threshold = 1
        r.adjust_for_ambient_noise(source, duration=1)
        audio = r.listen(source)
        said = ""

        try:
            print("Listening...")
            said = r.recognize_google(audio)
            print("You said: " + said)
        except Exception as e:
            print("Exception: " + str(e))

    return said.lower()

ไม่มีข้อผิดพลาดใด ๆ และนั่นเป็นข้อผิดพลาดที่ใหญ่ที่สุด! ไม่มีปัญหากับการเชื่อมต่ออินเทอร์เน็ตเนื่องจากฉันสามารถสตรีมวิดีโอคุณภาพสูงได้ในเวลาเดียวกันและนี่ไม่ใช่วิดีโอด้วยซ้ำเพราะเป็นสตริงดังนั้นปัญหาอาจเกิดจากอะไร ต้องรอเกือบ 15 นาทีจึงจะได้รับข้อความ

ฉันได้ลองใช้ API ออฟไลน์แล้วด้วย: recognize_sphinix()วิธีนี้ คุณต้องสร้างไฟล์การติดตั้งไบนารี (whl) ของ pocketsphinix อ้อฉันลืมพูดถึงคุณต้องสร้าง pyaudio ในเครื่องของคุณด้วยเพื่อใช้การจดจำเสียงพูด ฉันได้ทำทุกอย่างแล้วแม้จะมีปัญหาเดียวกันกับ API ออฟไลน์นี้ ... เมื่อเช้าrecognize.sphinix()จำสิ่งที่ฉันบอกได้ 2-3 ครั้ง แต่ตอนนี้มันยังไม่ตอบสนองเลย!

หมายเหตุ:ฉันได้ตรวจสอบพีซีของฉันด้วยตัวจัดการงานโดยมีเพียงฟังก์ชั่นการรู้จำเสียงที่ทำงานอยู่และ Python ใช้ RAM เพียง 9MB และใช้งาน CPU 0.3% ดังนั้นจึงไม่มีปัญหากับพลังคอมพิวเตอร์ที่ จำกัด

ใครสามารถแก้ปัญหานี้? คุณจะทำให้วันของฉันถ้าคุณแก้ปวดหัวนี้ ขอบคุณล่วงหน้า!

คำตอบ

2 HarshitRuwali Sep 04 2020 at 00:47

ตอนนี้เลิกใช้พารามิเตอร์ระยะเวลาแล้ว Ref คำถาม StackOverflow
ใช้แทนphrase_time_limitหรือtimeout.

นี่คือบล็อกของรหัสโดยใช้phrase_time_limit:

import speech_recognition as sr
def myCommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        audio = r.listen(source, phrase_time_limit = 5)  
    try:
        command = r.recognize_google(audio).lower()
        print("you said: " + command)
        
    except sr.UnknownValueError:
        print("Sorry, Cant understand, Please say again")
        command = myCommand()
    return command

ทำงานได้ดีอย่างสมบูรณ์