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:
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.
İstediğiniz şey sanırım bu. Ancak belirli bir süre ikinci döngüde hiçbir şey söylenmez ise hata mesajı ile karşılaşırsınız ancak döngü devam eder. Kodda birkaç değişiklik ile sürekli loop halinde olan bir çeviri:

Python:
from asyncore import write
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'))
            cevrilen = r.recognize_google(audio,language="tr-TR")
            ceviri = c.translate(cevrilen,dest="en")
            with open("yazi.txt","w") as f:
                f.write(ceviri.text)

        except Exception as hata:
            print("HATA Muhtemelen Hiçbir Şey Söylenmedi:"+str(hata))


if __name__ == "__main__":
    while True:
        main()
Hocam bu arada gecikmenin sebebi çok büyük ihtimalle bahsettiğim fonksiyonun eksikliği. Adjust_for_ambient_noise 1 saniyeden az bir süre arka plan sesini dinleyerek mikrofona gelen ses akışını kalibre eder ve sadece konuşma seslerinin algılanmasına yardımcı olur.
 
Son düzenleme:
İstediğiniz şey sanırım bu. Ancak belirli bir süre ikinci döngüde hiçbir şey söylenmez ise hata mesajı ile karşılaşırsınız ancak döngü devam eder. Kodda birkaç değişiklik ile sürekli loop halinde olan bir çeviri:

Python:
from asyncore import write
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'))
            cevrilen = r.recognize_google(audio,language="tr-TR")
            ceviri = c.translate(cevrilen,dest="en")
            with open("yazi.txt","w") as f:
                f.write(ceviri.text)

        except Exception as hata:
            print("HATA Muhtemelen Hiçbir Şey Söylenmedi:"+str(hata))


if __name__ == "__main__":
    while True:
        main()
Hocam bu arada gecikmenin sebebi çok büyük ihtimalle bahsettiğim fonksiyonun eksikliği. Adjust_for_ambient_noise 1 saniyeden az bir süre arka plan sesini dinleyerek mikrofona gelen ses akışını kalibre eder ve sadece konuşma seslerinin algılanmasına yardımcı olur.
Aynen şuan çalışıyor çok teşekkürler peki bu aradaki printleri kaldırsak herhangi bir artısı olur mu hızlanması açısından Adjust_for_ambient_noise komutunu ben de denemiştim ama bir artısı olmamıştı şuan sizin paylaştığınız kod daha hızlı çalışıyor ama ilginç bir şekilde.
 
Son düzenleme:
Aynen şu an çalışıyor çok teşekkürler peki bu aradaki printleri kaldırsak herhangi bir + sı olur mu hızlanması açısından Adjust_for_ambient_noise komutunu ben de denemiştim ama bir artısı olmamıştı şu an sizin paylaştığınız kod daha hızlı çalışıyor ama ilginç bir şekilde.

Demek ki ikimizin de farkedemediği daha farklı bir mevzu var arkada yavaşlatan. Muhtemelen kodun düzensizliğinden bir şeyleri kaçırdık. Printleri kaldırmanın çok bir yararı olmaz hocam ancak sevmiyorsanız kaldırabilirsiniz.
Bu arada koda şöyle bir şey ekledim bence havalı oldu :D :

[CODE lang="python" highlight="20-21"]from asyncore import write
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'))
cevrilen = r.recognize_google(audio,language="tr-TR")
ceviri = c.translate(cevrilen,dest="en")
with open("yazi.txt","w") as f:
f.write(ceviri.text)
if cevrilen.lower() == "döngüyü sonlandır":
exit()

except Exception as hata:
print("HATA Muhtemelen Hiçbir Şey Söylenmedi:"+str(hata))


if __name__ == "__main__":
while True:
main()[/CODE]
 
Demek ki ikimizin de farkedemediği daha farklı bir mevzu var arkada yavaşlatan. Muhtemelen kodun düzensizliğinden bir şeyleri kaçırdık. Printleri kaldırmanın çok bir yararı olmaz hocam ancak sevmiyorsanız kaldırabilirsiniz.
Bu arada koda şöyle bir şey ekledim bence havalı oldu :D :

[CODE lang="python" highlight="20-21"]from asyncore import write
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'))
cevrilen = r.recognize_google(audio,language="tr-TR")
ceviri = c.translate(cevrilen,dest="en")
with open("yazi.txt","w") as f:
f.write(ceviri.text)
if cevrilen.lower() == "döngüyü sonlandır":
exit()

except Exception as hata:
print("HATA Muhtemelen Hiçbir Şey Söylenmedi:"+str(hata))


if __name__ == "__main__":
while True:
main()[/CODE]

Vallahi çözemedim bende onu asıl sorun zaten gecikmeli olması :D en basit şekilde kalması daha iyi geliyor ya konu başında dediğim gibi çıktıyı görebildiğim için printlere ihtiyacım olmuyor :D
Bir de son olarak asyncore u yükledim ancak yine hata veriyor ilk başlattığımda
 

Dosya Ekleri

  • Screenshot_2.png
    Screenshot_2.png
    5,5 KB · Görüntüleme: 43
Vallahi çözemedim bende onu asıl sorun zaten gecikmeli olması :D en basit şekilde kalması daha iyi geliyor ya konu başında dediğim gibi çıktıyı görebildiğim için printlere ihtiyacım olmuyor :D
Bir de son olarak asyncore u yükledim ancak yine hata veriyor ilk başlattığımda
Hocam koda auto-import etmiş onu farketmemişim. Silin koddan da pythondan da gerek yok.
 
Hocam koda Auto-import etmiş onu fark etmemişim. Silin koddan da Python'dan da gerek yok.

Anladım tamamdır sildim onu. Script'i durduğumda bu verdiği hata da sanıyorum ki while döngüsüne soktuğumuz için. Bana herhangi bir zararı yok sadece meraktan soruyorum :D Yada acaba delay olmasındaki sorunlar mı bunlar
 

Dosya Ekleri

  • Screenshot_3.png
    Screenshot_3.png
    48,9 KB · Görüntüleme: 43
Script'i durduğumda bu verdiği hata da sanıyorum ki while döngüsüne soktuğumuz için
Aynen öyle hocam, program düzgün bir şekilde durdurulmadığı için hata veriyor. Bu hatayı verdiği için "döngüyü sonlandır" denilerek programın kapatılmasını sağlayan bir kod ekledim zaten.
 
Aynen öyle hocam, program düzgün bir şekilde durdurulmadığı için hata veriyor. Bu hatayı verdiği için "döngüyü sonlandır" denilerek programın kapatılmasını sağlayan bir kod ekledim zaten.

Tamamdır teşekkürler bu arada adjust_for_ambient_noise'a -10 duration verdim ve sanırım çözüldü ama saçmaladım mı bilmiyorum -10 değeri çalışır mı onu da bilmiyorum deneme yanılma çözeceğiz bir şekilde :D
 
Tamamdır teşekkürler bu arada adjust_for_ambient_noise'a -10 duration verdim ve sanırım çözüldü ama saçmaladım mı bilmiyorum -10 değeri çalışır mı onu da bilmiyorum deneme yanılma çözeceğiz bir şekilde :D

Hocam verdiğiniz değer ses şiddeti vs ile alakalı olabilir. Bence kullanmayın değer vererek kullanılan bir fonksiyon değil benim bildiğim. -10 vererek neyi çözdünüz onu da anlamadım ama bir şeyler çözüldüyse sorgulamayın devam :D
 
Hocam verdiğiniz değer ses şiddeti vs ile alakalı olabilir. Bence kullanmayın değer vererek kullanılan bir fonksiyon değil benim bildiğim. -10 vererek neyi çözdünüz onu da anlamadım ama bir şeyler çözüldüyse sorgulamayın devam :D

İzlediğim videolarda genelde 5 değerini veriyorlardı. Ama sanırım çalışmıyor dediğiniz gibi sanırım bu gecikme direkt Google translate kaynaklı bazen çok güzel çalışıyor bazen gecikmeli çalışıyor. Bilgisayarımdan veya internet bağlantımdan kaynaklı olduğunu düşünmüyorum üst düzey bir sistem ve internete sahibim. IBM'in kendi API si var ancak o da paralı bildiğim kadarıyla. Muhtemelen o daha düzgün çalışır. Elimizdekiyle idare edeceğiz muhtemelen :D
 
Son düzenleme:

Technopat Haberler

Yeni konular

Geri
Yukarı