Невозможно успешно получить возврат из функции в python

#python #python-3.x #function #return-value

#питон #python-3.x #функция #возвращаемое значение

Вопрос:

Я пытаюсь вернуть значение (произносимый звук успешно расшифрован) из следующей функции:

 def takeCommand():
    model = Model("model")
    rec = KaldiRecognizer(model, 16000)

    p = pyaudio.PyAudio()
    stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000)
    stream.start_stream()

    while True:
        data = stream.read(4000, exception_on_overflow=False)
        if len(data) == 0:
            break
        if rec.AcceptWaveform(data):
            x=json.loads(rec.Result())
            print(x["text"])
            statement = print(x["text"])
            return statement
            
        else:
            #print(rec.PartialResult())
            pass
    
    #print(rec.FinalResult())
 

Я могу успешно видеть текст, который транскрибируется с помощью

печать(x[«текст»])

Однако return выдает мне нетипичную ошибку следующим образом:

 Traceback (most recent call last):
  File "jarvis_vosk.py", line 116, in <module>
    if "thank you" in statement or "ok bye" in statement or "stop" in statement:
TypeError: argument of type 'NoneType' is not iterable
 

Таким образом, функция takeCommand() пуста, и я не могу понять, почему возвращаемое значение не передается дальше?

Ваша помощь очень ценится!!

Ответ №1:

Вот в чем проблема:

 statement = print(x["text"])
return statement
 

Вы можете попробовать это 🙂

 statement = x["text"]
return statement
 

Или просто

 return x["text"]
 

Ответ №2:

Решил это … мне просто нужно было изменить

оператор = print(x[«текст»])

учитывать, что оператор является строкой …. а не просто печатать его:

оператор = str(x[«text»])