Mô-đun SpeechRecogniton quá chậm trong python

Sep 04 2020

Tôi đang cố gắng sử dụng Nhận dạng giọng nói cho Chatbot học sâu của mình để lấy thông tin đầu vào từ người dùng. Trên thực tế, mã chức năng Nhận dạng giọng nói của tôi là:

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()

Chà, không có lỗi, và đó là lỗi lớn nhất! Không có vấn đề gì với kết nối internet của tôi vì tôi có thể phát trực tuyến video chất lượng cao cùng một lúc và đây thậm chí không phải là video, nó là một chuỗi, vì vậy vấn đề có thể là gì? Tôi phải đợi gần 15 phút để nhận được một tin nhắn.

Tôi cũng đã thử một API ngoại tuyến: recognize_sphinix()phương pháp. Bạn cần tạo tệp cài đặt nhị phân (whl) của pocketsphinix. Ồ, tôi quên đề cập, bạn cũng cần phải xây dựng pyaudio trong máy của mình để sử dụng speech_recognition. Tôi đã thực hiện tất cả những thứ đó, thậm chí vấn đề tương tự là với API ngoại tuyến này ... Vào buổi sáng đã recognize.sphinix()nhận ra 2-3 lần những gì tôi đã nói, nhưng bây giờ, nó thậm chí không phản hồi điều đó!

LƯU Ý: Tôi đã theo dõi máy tính của mình bằng trình quản lý tác vụ chỉ có chức năng nhận dạng giọng nói đang chạy và Python chỉ chiếm 9MB RAM và 0,3% mức sử dụng CPU. Vì vậy, không có vấn đề gì với Sức mạnh Tính toán hạn chế.

Bất cứ ai có thể giải quyết điều này? Bạn sẽ làm nên ngày của tôi nếu bạn giải quyết được vấn đề đau đầu này. Cảm ơn trước!

Trả lời

2 HarshitRuwali Sep 04 2020 at 00:47

Thông số thời lượng hiện không được dùng nữa. Câu hỏi về Ref StackOverflow .
Thay vào đó sử dụng phrase_time_limithoặc timeout.

Đây là khối mã sử dụng 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

Điều này hoạt động hoàn toàn tốt.