python中的回調函數

def chunks_process(chunks, pos, folder_name, whole_text):
    r = sr.Recognizer()
    for i in range(pos, len(chunks)):
        chunk_filename = os.path.join(folder_name, f"chunk{i}.wav")
        chunks[i].export(chunk_filename, format="wav")
        with sr.AudioFile(chunk_filename) as source:
            audio_listened = r.record(source)
            try:
                text = r.recognize_google(audio_listened, language='vi-VN')
            except:
                chunks_process(chunks, i, folder_name, whole_text)
            else:
                text = f"{text.capitalize()}. "
                print(chunk_filename, ":", text)
                whole_text += text
        
    return whole_text

每當r.recognize_google()api調用在特定位置失敗時,我想回調chunks_process()函數。

我有一個問題,它在完成數組(塊)的結束索引后重復for循環。

我不知道如何解決這個問題。

? 最佳回答:

這是因為從遞歸調用返回時沒有停止。調用方的i不會被遞歸執行的i更新。

解決方案是當您從遞歸返回時立即返回,因為在這一點上,所有的數據都被處理了。所以在這里加上return

     return chunks_process(chunks, i, folder_name, whole_text)

附帶說明:對于遞歸調用,您似乎希望重試一個操作。我不會為此使用遞歸,而是編寫一個額外的循環,只要需要重試,它就會不斷迭代。

主站蜘蛛池模板: 久久久一区二区三区| 国产日韩精品一区二区三区在线 | 亚洲丰满熟女一区二区哦| 久久青草精品一区二区三区| 人妻少妇一区二区三区| 三上悠亚一区二区观看| 亚洲一区二区三区夜色| 亚洲高清一区二区三区电影| 国产亚洲综合一区二区三区 | 国产成人一区二区三区在线观看| 日韩一区精品视频一区二区| 亚洲国产欧美一区二区三区| 日韩精品人妻av一区二区三区| 中文字幕一区二区三区精华液| 熟妇人妻AV无码一区二区三区| 国产手机精品一区二区| 国产婷婷一区二区三区| 亚洲区精品久久一区二区三区| 亚洲av色香蕉一区二区三区 | 国产福利酱国产一区二区| 精品无码国产一区二区三区51安| 无码成人一区二区| 制服丝袜一区二区三区| 日韩精品成人一区二区三区| 久久无码人妻一区二区三区午夜| 中文字幕一区二区区免| 2020天堂中文字幕一区在线观 | 无码精品黑人一区二区三区| 国产福利一区二区在线视频| 亚洲AV无码一区二区三区鸳鸯影院 | 亚洲av午夜精品一区二区三区| 国模私拍一区二区三区| 加勒比无码一区二区三区| 国产品无码一区二区三区在线蜜桃| 精品欧洲av无码一区二区三区| 高清一区二区三区| 国产AV午夜精品一区二区入口 | 亚洲国产美国国产综合一区二区 | 国模精品一区二区三区| 国产福利无码一区在线| 91精品一区二区三区久久久久|