Python'da "argument of type 'function' is not iterable" hatası

Lnosmni

Hectopat
Katılım
16 Mayıs 2020
Mesajlar
83
Progamı çalıştırdığımda resim gördüğüm hatayı alıyorum acaba sebebi nedir?

olabilemiyor.png
 
Son düzenleyen: Moderatör:
Kod olarak paylaşmamanı geçtim, görselden de okunmuyor ki. Ne yapmamızı bekliyorsun?
Satır sayısını da aç.

 
Python:
import speech_recognition as sr
from gtts import gTTS
import os
import pyaudio
import time
import random
from playsound import playsound




r = sr.Recognizer()


def ses1 (ses = False):
  with sr.Microphone() as source:
    r.adjust_for_ambient_noise(source)
    print("Arka plan gürültüsü:" + str(r.energy_threshold))

    if ses:
        print(ses)

    audio = r.listen(source)
    ses = " "
    try:
        ses = r.listen(source, timeout=2, phrase_time_limit=5)
        print(r.recognize_google(ses, language='tr-TR'))
    
    except sr.WaitTimeoutError:
        print("Dinleme zaman aşımına uğradı")

    except sr.UnknownValueError:
        print("Ne dediğini anlayamadım")

    except sr.RequestError:
        print("İnternete bağlanamıyorum")
    return(ses)




 
    
def etkilesim(ses):
    if "Merhaba" in ses: < hata bu kısımda çıkıyor
        speak("deneme ")
        

 



def speak(string):
 tts = gTTS(string, lang="tr")
 file = "sound.mp3"
 tts.save(file)
 file = "sound.mp3"
 playsound(file)
 os.remove(file)

etkilesim(ses1)
speak("merhaba")
ses1()

time.sleep(0.5)

while 1:
    ses = ses1
    print(ses)
    etkilesim(ses)
 
O kütüphaneler bende yok ve yüklemek istemiyorum. Bu yüzden çalıştıramayacağım. Ama hata mesajı yeterince açık zaten.
61. satırda etkilesim isimli fonksiyonu ses1 parametresi ile çağırıyorsunuz. ses1 bir fonksiyon. Parametre olarak fonksiyon veriyorsunuz. Sonra etkilesim fonksiyonu içinde parametrenin içinde merhaba var mı diye bakıyorsunuz. Fonksiyon gezilebilen bir şey değil. Bir liste, string değil. Bunu yapamazsınız. Yapmanız gereken şey ses1 yerine ses1() yazıp fonksiyonu çağırmak. Onun döndürdüğü şey üzerinden işlem yapmak. 61 ve 68. satırı kastediyorum.
 
in komutu yerine == koydum bu seferde <speech_recognition.AudioData object at 0x000001D7C291F4C0> diye bir hata döndürdü Merhaba deyince bu hata çıkıyor
 
Python:
try:
        ses = r.listen(str,source, timeout=2, phrase_time_limit=5)
        print(r.recognize_google(ses, language='tr-TR'))
  
    except sr.WaitTimeoutError:
        print("Dinleme zaman aşımına uğradı")

    except sr.UnknownValueError:
        print("Ne dediğini anlayamadım")

    except sr.RequestError:
        print("İnternete bağlanamıyorum")
    return(ses)

böyle mi olacak?
 
Son düzenleme:
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı