Python speech to text translate yavaş çalışıyor

Xalionis

Hectopat
Katılım
5 Aralık 2018
Mesajlar
452
Çözümler
4
Yer
Antalya
Merhaba arkadaşlar başlıkta belirttiğim üzere Python üzerinden speech to text translate yapmaya çalışıyorum. Çeviriyi başarılı bir şekilde yapıyor ancak konuşmamla txt ye yazılması arasındaki süre uzun. Yaklaşık olarak 10+ sn gecikmeli gerçekleşiyor. Kodlarda hata elbet vardır çünkü pek bilgim yok. Print komutlarını ben bilerek yazmadım ihtiyaç duymuyorum, çıktıyı zaten txt üzerinde görüyorum. Kodlardaki hataları ve bu gecikmeyi düzeltmem için yardımcı olabilirseniz sevinirim.
+ Olarak döngünün sürekli sürmesi gerekiyor o yüzden bildiğim kadarıyla while komutunu ekledim ancak başka bir çözüm varsa onda da yardımcı olursanız sevinirim.

Python:
import speech_recognition as sr.
from googletrans import Translator.
translator = Translator()
r = sr.Recognizer()
while True:
 with sr.Microphone() as source:
 audio = r.listen(source)
 try:
 t = r.recognize_google(audio, language='tr-TR')
 lg = 'en'.
 translation = translator.translate(t, dest=lg)
 text = r.recognize_google(audio)
 text = text.lower()
 with open('yazi.txt', 'w') as f:
 f.write(translation.text.center(70))
 except:""
 
Son düzenleyen: Moderatör:
Yaklaşık olarak 10+ sn gecikmeli gerçekleşiyor.
Küçük kuzenimin ödevi için aynı kütüphaneyi kullanarak program yazmıştım. Mikrofon girdisi tamamen kesilmezse, ses algılamak için 5-10 saniye kadar daha bekliyor. Gecikmenin sebebi bu. Bunu nasıl çözersin bilmiyorum. Ben her konuşmayı bitirdiğimde mikrofon kapatıyordum hızlı hızlı tepki versin diye.
 
Merhaba arkadaşlar başlıkta belirttiğim üzere Python üzerinden speech to text translate yapmaya çalışıyorum. Çeviriyi başarılı bir şekilde yapıyor ancak konuşmamla txt ye yazılması arasındaki süre uzun. Yaklaşık olarak 10+ sn gecikmeli gerçekleşiyor. Kodlarda hata elbet vardır çünkü pek bilgim yok. Print komutlarını ben bilerek yazmadım ihtiyaç duymuyorum, çıktıyı zaten txt üzerinde görüyorum. Kodlardaki hataları ve bu gecikmeyi düzeltmem için yardımcı olabilirseniz sevinirim.
+ Olarak döngünün sürekli sürmesi gerekiyor o yüzden bildiğim kadarıyla while komutunu ekledim ancak başka bir çözüm varsa onda da yardımcı olursanız sevinirim.

Python:
import speech_recognition as sr.
from googletrans import Translator.
translator = Translator()
r = sr.Recognizer()
while True:
 with sr.Microphone() as source:
 audio = r.listen(source)
 try:
 t = r.recognize_google(audio, language='tr-TR')
 lg = 'en'.
 translation = translator.translate(t, dest=lg)
 text = r.recognize_google(audio)
 text = text.lower()
 with open('yazi.txt', 'w') as f:
 f.write(translation.text.center(70))
 except:""
Ses gecikmesi bende de oluyordu, mikrofonu tamamen sürekli kapatıp açarak yapıyordum.
 
Son düzenleyen: Moderatör:
Python:
import speech_recognition as sr
from googletrans import Translator

def main():
    r = sr.Recognizer()
    c = Translator()
    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source)
        print("Konuşunuz")

        audio = r.listen(source)

        try:
            print("Söylediğiniz Şey:"+r.recognize_google(audio))

        except Exception as hata:
            print("HATA:"+str(hata))
        cevrilen = r.recognize_google(audio)
        ceviri = c.translate(cevrilen,dest="tr")
        with open ("yazi.txt","w") as f:
            f.write(ceviri.text)


if __name__ == "__main__":
    main()
Muhtemelen [adjust_for_ambient_noise] kullanılmadığı için mikrofon her sesi alıp dinlemeye çalışıyor. Yukarıda bıraktığım kod çalışmakta.
Edit: Siz TR'den çeviri yapmışsınız ona dikkat etmemiştim:
Python:
import speech_recognition as sr
from googletrans import Translator

def main():
    r = sr.Recognizer()
    c = Translator()
    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source)
        print("Konuşunuz")

        audio = r.listen(source)

        try:
            print("Söylediğiniz Şey:"+r.recognize_google(audio,language='tr-TR'))

        except Exception as hata:
            print("HATA:"+str(hata))
        cevrilen = r.recognize_google(audio,language="tr-TR")
        ceviri = c.translate(cevrilen,dest="en")
        print(cevrilen)
        with open ("yazi.txt","w") as f:
            f.write(ceviri.text)


if __name__ == "__main__":
    main()
 
Son düzenleme:
Python:
import speech_recognition as sr
from googletrans import Translator

def main():
    r = sr.Recognizer()
    c = Translator()
    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source)
        print("Konuşunuz")

        audio = r.listen(source)

        try:
            print("Söylediğiniz Şey:"+r.recognize_google(audio))

        except Exception as hata:
            print("HATA:"+str(hata))
        cevrilen = r.recognize_google(audio)
        ceviri = c.translate(cevrilen,dest="tr")
        with open ("yazi.txt","w") as f:
            f.write(ceviri.text)


if __name__ == "__main__":
    main()
Muhtemelen [adjust_for_ambient_noise] kullanılmadığı için mikrofon her sesi alıp dinlemeye çalışıyor. Yukarıda bıraktığım kod çalışmakta.
Edit: Siz TR'den çeviri yapmışsınız ona dikkat etmemiştim:
Python:
import speech_recognition as sr
from googletrans import Translator

def main():
    r = sr.Recognizer()
    c = Translator()
    with sr.Microphone() as source:
        r.adjust_for_ambient_noise(source)
        print("Konuşunuz")

        audio = r.listen(source)

        try:
            print("Söylediğiniz Şey:"+r.recognize_google(audio,language='tr-TR'))

        except Exception as hata:
            print("HATA:"+str(hata))
        cevrilen = r.recognize_google(audio,language="tr-TR")
        ceviri = c.translate(cevrilen,dest="en")
        print(cevrilen)
        with open ("yazi.txt","w") as f:
            f.write(ceviri.text)


if __name__ == "__main__":
    main()
2. sıradaki kodu direkt kopyala yapıştır olarak denedim ancak konuşmadan sonra hata veriyor.
 

Dosya Ekleri

  • Screenshot_1.png
    Screenshot_1.png
    62 KB · Görüntüleme: 52
İstediğiniz şeyi birazcık daha açıklayabilir misiniz? Tam olarak anlayamadım.

Mesela ben bir kelime söylüyorum çeviriyi tamamlıyor script bitiyor. Ancak istediğim şey çeviriyi bitirdikten sonra scripti bitirmeyip başa dönüp yeni söylediğim şeyi çevirmesi. Yani mesela ben "Merhaba" diyorum çeviri tamamlanıyor tekrar Run'a basmam gerekiyor. İstediğim şey "Merhaba" deyip çeviri bittikten sonra bir sonraki cümle/kelimeyi de Run'a basmadan çevirmeye devam etmesi. Benim paylaştığım kod da while ile bunu çözmüştüm. Ama o zamanda gecikme çok fazla artıyor. Farklı bir çözümü var mı acaba.
 

Technopat Haberler

Yeni konular

Geri
Yukarı