首页 > 解决方案 > 无法从python中的函数成功获取返回

问题描述

我正在尝试从以下函数返回一个值(口语音频已成功转录):

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 给了我一个 NoneType 错误,如下所示:

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() 是空的,我不明白为什么没有传递返回值?

非常感谢您的帮助!

标签: pythonpython-3.xfunctionreturn-value

解决方案


这是问题所在:

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

你可以试试这个:)

statement = x["text"]
return statement

要不就

return x["text"]

推荐阅读