SpeechRecogniton modülü python'da çok yavaş

Sep 04 2020

Kullanıcıdan girdi almak için Derin Öğrenme Sohbet Botum için Konuşma Tanıma'yı kullanmaya çalışıyordum. Aslında Konuşma Tanıma işlev kodum şudur:

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

Eh, hiç hata yok ve bu en büyük hata! Aynı anda yüksek kaliteli video akışı yapabildiğim için internet bağlantımla ilgili bir sorun yok ve bu video bile değil, bu bir dizi, peki sorun ne olabilir? Metin almak için yaklaşık 15 dakika beklemem gerekiyor.

Ayrıca çevrimdışı bir API denedim: recognize_sphinix()yöntem. Pocketsphinix'in ikili kurulum dosyasını (whl) oluşturmanız gerekir. Oh, söylemeyi unuttum, ayrıca konuşma_ tanımayı kullanmak için makinenizde pyaudio oluşturmalısınız. Tüm bu recognize.sphinix()şeyleri yaptım , hatta aynı sorun bu çevrimdışı API ile ... Sabah söylediklerimin 2-3 katını tanıdım, ama şimdi buna yanıt bile vermiyor!

NOT: Bilgisayarımı görev yöneticisi ile yalnızca konuşma tanıma işlevi çalışırken izledim ve Python yalnızca 9 MB RAM ve% 0,3 CPU kullanımı alıyordu. Dolayısıyla, sınırlı Bilgi İşlem Gücü ile ilgili bir sorun yoktur.

Bunu kimse çözebilir mi? Bu baş ağrısını çözersen günümü kutlayacaksın Şimdiden teşekkürler!

Yanıtlar

2 HarshitRuwali Sep 04 2020 at 00:47

Süre parametresi artık kullanımdan kaldırılmıştır. Ref StackOverflow sorusu .
Bunun yerine phrase_time_limitveya timeout.

İşte kullanan kod bloğu 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

Bu gayet iyi çalışıyor.