亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Windows下Python調(diào)用訊飛語音喚醒SDK實戰(zhàn)與避坑指南

Windows下Python調(diào)用訊飛語音喚醒SDK實戰(zhàn)與避坑指南 做了幾年語音交互相關的項目我一直有個感受喚醒詞能穩(wěn)定觸發(fā)的那一刻整個設備才算是真正“活”了。這次在Windows環(huán)境下用Python調(diào)用科大訊飛語音喚醒SDK說實話一開始我有點輕視它以為把SDK文檔里的接口照著調(diào)一遍就行了結果前前后后踩了十幾個坑光是解決“DLL加載就報錯”和“回調(diào)遲遲不來”這兩個問題就花掉大半天。這篇文章就是一次完整的實操記錄把Windows下用Python通過ctypes調(diào)訊飛喚醒SDK的整個鏈路講清楚包含完整可跑的代碼重點說明哪些地方容易翻車、為什么翻車、怎么避開。適合正在做語音喚醒、語音助手的開發(fā)者尤其是想用Python快速驗證產(chǎn)品原型的人參考。1. 方案選型為什么用Python調(diào)訊飛喚醒SDK以及整體思路1.1 Python與C SDK之間的“橋接”方案先回答一個最常見的問題訊飛官方SDK是C/C接口為什么我還要用Python去調(diào)原因很現(xiàn)實。做項目原型、做算法驗證、做自動化測試的時候Python的開發(fā)效率是C沒法比的。我有一次臨時要驗證某個喚醒詞在真實麥克風下的觸發(fā)率如果用C重新寫一套采集流程光搭工程就要大半天用Python加上pyaudio采集音頻再通過ctypes直接加載訊飛SDK的動態(tài)庫一小時以內(nèi)就能跑起來。另外團隊的算法工程師、測試同學普遍更熟悉Python把SDK封裝成Python接口后大家都能直接上手調(diào)參、看日志不需要每個人都去研究C編譯環(huán)境。目前常見的方案有三條路方案A用ctypes直接加載訊飛SDK的動態(tài)庫DLL在Python側定義接口簽名。這是本文采用的方式優(yōu)點是鏈路短、無重編譯、修改靈活適合快速調(diào)試驗證。方案B用pybind11或cffi寫一層C擴展包裝SDK再在Python中導入。優(yōu)點是類型更清晰、性能更好但每次改SDK版本都要重新編譯搭建環(huán)境成本高。方案C完全脫離本地SDK走訊飛開放平臺的HTTP接口做“云端喚醒”。這個方案其實不算真正的喚醒——因為云端識別意味著音頻要持續(xù)上傳網(wǎng)絡延遲、流量消耗和隱私問題都比較明顯而且斷網(wǎng)時整個喚醒功能就廢了所以不適合本地語音交互場景。我做下來最終選了方案A。ctypes是Python標準庫自帶的不需要安裝額外依賴它可以直接調(diào)用DLL里導出的C函數(shù)。關鍵是把每個函數(shù)的參數(shù)類型、返回值類型、回調(diào)函數(shù)簽名在Python側聲明準確只要這一步做對了后面的調(diào)用體驗基本上跟調(diào)本地函數(shù)差不多。1.2 喚醒鏈路整體設計喚醒功能的整體數(shù)據(jù)流是這樣的麥克風采集音頻 → 音頻數(shù)據(jù)寫入SDK → SDK內(nèi)部做VAD檢測和喚醒詞特征匹配 → 命中后觸發(fā)回調(diào) → 應用層執(zhí)行后續(xù)業(yè)務動作這里有一點必須先搞清楚喚醒SDK內(nèi)部是有完整的聲音處理鏈路的它接收的是原始PCM音頻流不是音頻文件路徑。所以我們要做的第一步是拿到真實麥克風的原始音頻數(shù)據(jù)然后把字節(jié)流持續(xù)、實時地喂給SDK。音頻參數(shù)必須嚴格匹配SDK要求一般是16kHz采樣率、16位量化、單聲道也就是PCM_S16LE格式。這個參數(shù)直接決定了喚醒的準確率和觸發(fā)穩(wěn)定性后面我會專門展開講。除了數(shù)據(jù)流Windows下的喚醒還要處理幾個容易忽略的問題麥克風設備權限、設備占用沖突、DLL依賴庫缺失、Python解釋器和DLL的位數(shù)匹配32位還是64位以及回調(diào)線程和Python主線程的交互。這些細節(jié)如果不提前規(guī)劃好連“Hello” 都跑不通。2. 初始化到喚醒監(jiān)聽核心代碼與關鍵參數(shù)說明2.1 環(huán)境準備與SDK文件清單先說環(huán)境我用的是Python 3.1064位版本。為什么強調(diào)位數(shù)因為Windows下DLL也有32位和64位之分Python解釋器的位數(shù)必須和SDK DLL的位數(shù)一致。我一開始圖省事用了Anaconda默認的64位Python結果拷過來一個32位版本的訊飛喚醒SDK第一次調(diào)用就報OSError: [WinError 193] %1 不是有效的 Win32 應用。這個錯誤的意思就是DLL位數(shù)不匹配排查方法很簡單打開任務管理器看Python進程是32位還是64位或者直接看DLL文件屬性。一個訊飛語音喚醒SDK包解壓后你通常會看到這些東西msc_x64.dll或msc.dll核心動態(tài)庫喚醒能力封裝在里面。lib或bin目錄下的若干依賴DLL比如日志、網(wǎng)絡通信相關的庫這些也要放在能被找到的路徑下。resource/目錄或喚醒詞資源文件一般是.irres、.bin或.jet文件里面是喚醒詞的聲學模型和資源初始化時要指定路徑。頭文件ivw.h或qivw.h之類的Windows下用ctypes調(diào)用時最關鍵的是從這里面確認函數(shù)名、參數(shù)類型和回調(diào)函數(shù)簽名。注意不同版本SDK解壓后的目錄結構會有差異但大原則是所有DLL放在同一個目錄下并且讓Python啟動時的當前工作目錄或PATH環(huán)境變量包含這個目錄。否則即使主DLL加載成功它依賴的其他DLL找不到后面調(diào)用某個具體函數(shù)時會莫名其妙崩潰。2.2 加載DLL并定義接口簽名首先做三件事加載DLL、聲明函數(shù)原型、定義回調(diào)類型。這一步是ctypes調(diào)用的地基寫錯一個參數(shù)類型輕則回調(diào)不觸發(fā)重則直接導致Python進程閃退。訊飛喚醒SDK的導出接口風格是典型的C接口函數(shù)名類似QIVWRegisterCallback、QIVWSessionBegin、QIVWAudioWrite、QIVWSessionEnd。不同SDK版本函數(shù)名可能有差異務必以你下載版本的頭文件為準。以我用的版本為例核心代碼如下import ctypes import os # 1) 加載DLL思路是把SDK目錄臨時加到PATH里 sdk_dir rD:\workspace\iflytek_wakeup\bin os.environ[PATH] sdk_dir ; os.environ[PATH] sdk ctypes.CDLL(os.path.join(sdk_dir, msc_x64.dll))這里我直接用ctypes.CDLL加載。如果你的SDK頭文件里聲明了__stdcallWindows API常見要用ctypes.WinDLL加載如果是普通C函數(shù)__cdecl用CDLL。拿不準的時候打開頭文件看一眼函數(shù)聲明前有CALLBACK、WINAPI字樣就是stdcall否則是cdecl。接著聲明函數(shù)的參數(shù)和返回值類型。這一步容易被忽略但它恰恰是ctypes調(diào)用C庫的核心# 2) 聲明函數(shù)簽名 # typedef void (*wakeup_handler)(const char *text, int len, void *user_data); WAKEUP_CB ctypes.CFUNCTYPE(None, ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p) sdk.QIVWRegisterCallback.argtypes [WAKEUP_CB] sdk.QIVWRegisterCallback.restype ctypes.c_int sdk.QIVWSessionBegin.argtypes [ctypes.c_char_p, ctypes.c_char_p] sdk.QIVWSessionBegin.restype ctypes.c_void_p sdk.QIVWAudioWrite.argtypes [ctypes.c_void_p, ctypes.c_char_p, ctypes.c_uint, ctypes.c_int] sdk.QIVWAudioWrite.restype ctypes.c_int sdk.QIVWSessionEnd.argtypes [ctypes.c_void_p, ctypes.c_char_p] sdk.QIVWSessionEnd.restype ctypes.c_int為什么要把argtypes和restype顯式寫清楚因為ctypes默認情況下會把參數(shù)當成c_int處理如果你傳入一個字符串或一個指針內(nèi)存布局就對不上。特別是64位系統(tǒng)下指針長度是8字節(jié)如果不聲明restype c_void_p返回值會被截斷成32位整數(shù)后面回調(diào)、會話操作全都會錯亂。這一行聲明往往就是調(diào)通和調(diào)不通的分水嶺。2.3 初始化、設置回調(diào)與啟動喚醒初始化喚醒會話的流程通常是注冊回調(diào) → 設置喚醒詞資源 → 開始會話 → 寫入音頻 → 持續(xù)監(jiān)聽 → 命中后回調(diào)循環(huán)往復。下面是我把流程簡化后的初始化代碼# 3) 回調(diào)函數(shù)喚醒成功后SDK在內(nèi)部線程里調(diào)用它 WAKEUP_CB def on_wakeup(text_bytes, length, user_data): if text_bytes: word text_bytes.decode(utf-8, errorsignore) print(f[喚醒成功] {word}) # 這里可以做后續(xù)動作亮屏、錄音、播放提示音等 # 4) 注冊回調(diào) ret sdk.QIVWRegisterCallback(on_wakeup) if ret ! 0: raise RuntimeError(f注冊回調(diào)失敗: {ret}) # 5) 開始喚醒會話sdk_params里要配置喚醒詞資源路徑和門限 params bappid12345678,work_dirD:\\workspace\\iflytek_wakeup\\resource,sstwakeup,ivw_threshold0:1450 session_id sdk.QIVWSessionBegin(None, params) if not session_id: raise RuntimeError(會話開啟失敗)這里有兩個容易踩的坑。第一QIVWSessionBegin的參數(shù)是char*字節(jié)串所以在Python里必須用b...不能直接用普通字符串否則編碼不對DLL讀的是亂碼。第二work_dir指向的資源目錄里必須有對應的喚醒詞資源文件而且喚醒詞編號和門限要匹配。ivw_threshold0:1450的含義是第0個喚醒詞的觸發(fā)門限是1450門限越低越容易被觸發(fā)但誤喚醒也會增加建議先用官方默認門限跑通流程再根據(jù)實測調(diào)高或調(diào)低。如果你的SDK版本沒有QIVWSessionBegin這個函數(shù)名而是用AIUI方式初始化也不用慌核心邏輯是一樣的注冊回調(diào)、傳參配置資源、開啟會話。2.4 音頻數(shù)據(jù)如何“喂”給SDK啟動喚醒后要做的事情就是把麥克風采集到的音頻寫入SDK。我在項目里用的是pyaudio庫音頻參數(shù)固定為import pyaudio FORMAT pyaudio.paInt16 # 16位量化 CHANNELS 1 # 單聲道 RATE 16000 # 16kHz采樣率 CHUNK 960 # 30ms一塊CHUNK的選取是有講究的。一塊音頻對應的時間太短比如5ms那么CPU會頻繁在Python層和SDK層之間切換調(diào)用開銷變大一塊音頻對應時間太長比如500msSDK內(nèi)部做成幀處理時的喚醒延遲就會變高。實測下來16kHz采樣率下每塊音頻取960個采樣點即30ms是最舒服的平衡點喚醒延遲大概在200~400ms人耳幾乎感覺不到。把音頻數(shù)據(jù)寫入SDK的循環(huán)p pyaudio.PyAudio() stream p.open(formatFORMAT, channelsCHANNELS, rateRATE, inputTrue, frames_per_bufferCHUNK) try: while running: audio_data stream.read(CHUNK, exception_on_overflowFalse) ret sdk.QIVWAudioWrite(session_id, audio_data, len(audio_data), 0) if ret ! 0: print(f音頻寫入錯誤: {ret}) except KeyboardInterrupt: pass finally: stream.stop_stream() stream.close() p.terminate() sdk.QIVWSessionEnd(session_id, b)注意exception_on_overflowFalse這個參數(shù)。Windows下麥克風驅動偶爾會緩沖區(qū)溢出如果這個參數(shù)不設置成Falsestream.read會直接拋異常導致喚醒循環(huán)中斷。設成False之后read會返回None或歷史殘留數(shù)據(jù)雖然理論上會有輕微噪聲但能保證循環(huán)不崩。更穩(wěn)的做法是判斷audio_data是否為空為空就跳過寫入。3. 避坑實錄Windows環(huán)境下最容易翻車的6個問題3.1 位數(shù)不匹配32位DLL vs 64位Python這個問題我在前面提過但它太典型了值得單獨拿出來重點說。報錯OSError: [WinError 193]時第一時間檢查Python和DLL的位數(shù)。我見過不少同學折騰了半天最后發(fā)現(xiàn)是Anaconda裝的是32位版本而SDK給的是64位DLL或者反過來。判斷方法有幾種打開cmd輸入python -c import platform; print(platform.architecture())輸出中的64bit或32bit就是解釋器位數(shù)。在文件資源管理器里右鍵DLL文件 → 屬性Windows不會直接顯示位數(shù)更可靠的方式是用dumpbin /headers msc_x64.dll或者用Python讀PE頭。還有一個容易混淆的點進程位數(shù)和系統(tǒng)位數(shù)無關64位Windows完全可以運行32位Python進程。所以不要以為“我電腦是64位的就萬事大吉”要看的是解釋器本身。3.2 工作目錄與中文路徑的坑訊飛這套SDK對路徑非常敏感尤其是老版本。我踩過一次很無語的坑SDK放在D:\項目\喚醒SDK\bin下路徑里帶中文“項目”兩個字初始化時QIVWSessionBegin一直返回失敗日志文件里提示找不到資源。后來把整個SDK目錄挪到純英文路徑D:\workspace\wakeup_sdk\下問題立刻消失。原因不復雜很多C庫在Windows下把路徑字符串按**本地代碼頁GBK**處理而Python傳入的bytes字節(jié)串是UTF-8編碼路徑里一旦有非ASCII字符兩邊編碼不一致就會出錯。所以最省心的做法是SDK工作目錄全部使用純英文路徑不要有空格、中文、特殊符號。在工程內(nèi)部統(tǒng)一用UTF-8編寫代碼但傳給SDK的路徑參數(shù)顯示轉換成GBK編碼path.encode(gbk)。如果你的SDK版本比較新可能對中文路徑已經(jīng)做了兼容但項目上線前我仍然建議做一次路徑測試別在這上面賭運氣。3.3 麥克風權限與獨占沖突Windows 10/11有一個“麥克風隱私設置”默認情況下有些應用是無法訪問麥克風的。這個坑藏得比較深因為程序不會像Android那樣彈權限對話框它只會“安靜地”讀到一段全零數(shù)據(jù)或者直接打開設備失敗。表現(xiàn)就是程序在跑日志正常但喚醒永遠不觸發(fā)。排查方法打開Windows設置 → 隱私 → 麥克風確認“允許應用訪問麥克風”打開。同時確認自己這個Python進程對應的宿主程序比如python.exe、pycharm64.exe也在允許列表中。有時候PyCharm里運行的Python進程和直接運行的Python進程不在同一個白名單條目里。用系統(tǒng)自帶的錄音機程序測試一下麥克風是否正常工作。如果系統(tǒng)錄音正常但Python讀不到音頻大概率是權限或設備獨占問題。此外Windows音頻設備同一時間通常只允許一個進程獨占訪問。如果你開著微信語音、騰訊會議或者直播軟件它們可能已經(jīng)把麥克風設備占了。這時候pyaudio打開設備可能會成功但讀出來的數(shù)據(jù)是靜音或者SDK報寫入異常。所以我習慣在跑喚醒程序前先關掉所有可能占用麥克風的軟件再用一個簡單的電平檢測腳本確認能讀到非零數(shù)據(jù)。3.4 無喚醒反應先查音頻格式如果麥克風數(shù)據(jù)正常、代碼跑得順但喚醒就是沒反應十有八九音頻格式出了問題。訊飛喚醒SDK要求的是16kHz采樣率、16位量化、單聲道PCM這是硬性要求。下面這幾種情況我都遇過麥克風默認采樣率是48kHz某些USB麥克風或筆記本麥克風陣列默認設備采樣率是48kHz。如果用pyaudio打開設備時傳RATE16000很多驅動會自動重采樣這個重采樣質(zhì)量參差不齊會導致喚醒率嚴重下降。更好的做法是單獨查一下設備支持的采樣率如果設備只支持48kHz那就先通過系統(tǒng)設置把默認格式改成16kHz或者用librosa、soundfile等庫在Python層顯式重采樣。聲道數(shù)填錯有些麥克風陣列是2聲道或4聲道。如果CHANNELS1但設備實際輸出多聲道數(shù)據(jù)讀回來的字節(jié)流就不是標準單聲道PCMSDK解析全亂??梢酝ㄟ^pyaudio打印設備信息確認。數(shù)據(jù)格式不是int16個別采集庫默認返回float32數(shù)組。如果直接把float32的二進制內(nèi)容交給SDKSDK當成int16解析出來的聲音完全是噪聲。我習慣在啟動喚醒前先跑一個“音頻格式自檢”腳本打印當前設備實際采樣率、聲道數(shù)、緩沖長度并計算音頻數(shù)據(jù)的RMS能量。如果RMS接近0說明沒采到真實聲音如果RMS正常但喚醒不觸發(fā)再重點查格式轉換。3.5 DLL加載失敗的隱藏依賴ctypes.CDLL(msc_x64.dll)這行代碼有時候會直接報OSError: [WinError 126] 找不到指定的模塊。這個“找不到模塊”不一定是指msc_x64.dll本身找不到更可能是它依賴的其他DLL找不到。Windows加載DLL時搜索順序大致是應用程序所在目錄 → 系統(tǒng)目錄 → 環(huán)境變量PATH路徑。訊飛SDK的bin目錄里一堆DLL是互相依賴的如果直接把msc_x64.dll拷到桌面其他依賴DLL不在旁邊加載就會失敗。解決思路有三個盡量把SDK所有DLL保持一個目錄然后把該目錄加到PATH環(huán)境變量中。如果還是報126用Dependencies開源工具可替代老舊的Depends打開DLL看一下缺哪個依賴庫常見的是msvcp140.dll、vcruntime140.dll等VC運行庫去微軟官網(wǎng)裝最新的“Visual C Redistributable”就行。再一個隱藏點DLL文件被殺毒軟件隔離。Windows Defender有時候會對SDK里某些加殼的庫誤殺導致文件還在但內(nèi)容被清空。查殺毒軟件的隔離區(qū)必要時把SDK目錄加入白名單。我在項目里遇到過QIVWSessionBegin返回空指針但沒報錯的情況后來發(fā)現(xiàn)是SDK的日志DLL版本不兼容把依賴庫更新后問題解決。所以遇到詭異問題先開SDK日志訊飛SDK通常支持通過參數(shù)log_level和log_path輸出詳細日志日志里一般會寫清楚卡在哪一步。3.6 回調(diào)線程與GIL的剪不斷理還亂這是Python調(diào)C庫時一個非常微妙的問題。訊飛SDK的回調(diào)函數(shù)是在SDK內(nèi)部線程里觸發(fā)的也就是說當喚醒詞命中時on_wakeup并不是跑在你的主線程里而是跑在DLL創(chuàng)建的工作線程里。這意味著兩件事不要在主線程與回調(diào)線程之間直接操作共享的非線程安全對象。比如在回調(diào)里直接print是可以的但如果要在回調(diào)里操作tkinter界面控件就會引發(fā)各種詭異問題——因為tkinter不是線程安全的更穩(wěn)妥的方式是回調(diào)里只記錄事件把真正的UI操作通過隊列丟回主線程執(zhí)行。Python GIL會限制回調(diào)線程和主線程的同時執(zhí)行。如果你的主線程一直忙于處理其他重計算喚醒回調(diào)可能被延遲。所以喚醒監(jiān)聽線程最好是一個獨立、輕量的循環(huán)不要在同一個線程里又做喚醒采集又做大量的業(yè)務邏輯。我比較推薦的做法是使用queue.Queue做一個事件隊列import queue wakeup_event_queue queue.Queue() WAKEUP_CB def on_wakeup(text_bytes, length, user_data): try: word text_bytes.decode(utf-8, errorsignore) except Exception: word wakeup_event_queue.put(word) # 主線程或其他線程 while True: word wakeup_event_queue.get() print(主線程處理喚醒詞:, word) # 做燈光、播放提示音、啟動語音識別等這樣就把SDK內(nèi)部線程和業(yè)務邏輯解耦了回調(diào)只負責“入隊”主線程負責“處理”。無論后面接什么動作都不會因為線程安全問題莫名其妙崩潰。4. 完整示例代碼與擴展思路4.1 可直接運行的完整實例把前面所有部分串起來一個完整的、可運行的Python版本語音喚醒demo如下。為了減小篇幅我把錯誤處理壓縮了一下但核心鏈路是完整的拿過去改一下SDK路徑就能用。 Windows Python 訊飛語音喚醒SDK 最小可用實例 依賴: pyaudio 注意: 請根據(jù)你的SDK版本頭文件調(diào)整函數(shù)名和參數(shù)類型 import ctypes import os import queue import platform import sys import time import pyaudio # ---------- 配置區(qū) ---------- SDK_DIR rD:\workspace\wakeup_sdk\bin RESOURCE_DIR rD:\workspace\wakeup_sdk\resource APPID b12345678 # 換成你的appid WAKEUP_CB_NAMES [QIVWRegisterCallback, IVWRegisterCallback] SESSION_BEGIN_NAMES [QIVWSessionBegin, IVWSessionBegin] AUDIO_WRITE_NAMES [QIVWAudioWrite, IVWAudioWrite] SESSION_END_NAMES [QIVWSessionEnd, IVWSessionEnd] RATE 16000 CHANNELS 1 FORMAT pyaudio.paInt16 CHUNK 960 # 30ms 16kHz running True wakeup_event_queue queue.Queue() # ----------------------------- def load_sdk(dll_namemsc_x64.dll): os.environ[PATH] SDK_DIR ; os.environ[PATH] dll_path os.path.join(SDK_DIR, dll_name) if not os.path.exists(dll_path): raise FileNotFoundError(fSDK動態(tài)庫不存在: {dll_path}) print(f[INFO] 加載動態(tài)庫: {dll_path}) return ctypes.CDLL(dll_path) def get_func(sdk, names, func_type): for name in names: if hasattr(sdk, name): func getattr(sdk, name) func_type(func) # 這里只是為了觸發(fā)ctypes的函數(shù)包裝檢查 return func, name raise AttributeError(fSDK中不存在可用函數(shù): {names}) def build_callback_type(): # 回調(diào): void handler(const char *text, int len, void *user_data) CB_TYPE ctypes.CFUNCTYPE(None, ctypes.c_char_p, ctypes.c_int, ctypes.c_void_p) return CB_TYPE def main(): if platform.architecture()[0] ! 64bit: print([WARN] 當前Python不是64位如果SDK是64位會出現(xiàn)WinError 193) sdk load_sdk() # 通過工具函數(shù)查找SDK函數(shù) CB_TYPE build_callback_type() cb_func, cb_name get_func(sdk, WAKEUP_CB_NAMES, CB_TYPE) session_begin, begin_name get_func(sdk, SESSION_BEGIN_NAMES, ctypes.c_void_p) audio_write, write_name get_func(sdk, AUDIO_WRITE_NAMES, ctypes.c_int) session_end, end_name get_func(sdk, SESSION_END_NAMES, ctypes.c_int) # 聲明簽名 cb_func.argtypes [CB_TYPE] cb_func.restype ctypes.c_int session_begin.argtypes [ctypes.c_char_p, ctypes.c_char_p] session_begin.restype ctypes.c_void_p audio_write.argtypes [ctypes.c_void_p, ctypes.c_char_p, ctypes.c_uint, ctypes.c_int] audio_write.restype ctypes.c_int session_end.argtypes [ctypes.c_void_p, ctypes.c_char_p] session_end.restype ctypes.c_int CB_TYPE def on_wakeup(text_bytes, length, user_data): try: word text_bytes.decode(utf-8, errorsignore) except Exception: word text_bytes wakeup_event_queue.put(word) ret cb_func(on_wakeup) if ret ! 0: raise RuntimeError(f注冊回調(diào)失敗, 錯誤碼: {ret}) params ( fappid{APPID.decode()}, fwork_dir{RESOURCE_DIR}, sstwakeup, ivw_threshold0:1450 ).encode(utf-8) session_id session_begin(None, params) if not session_id: raise RuntimeError(會話開啟失敗請檢查appid、資源路徑是否有效) print([INFO] 喚醒會話已開啟正在監(jiān)聽...) print([INFO] 按下 CtrlC 退出) p pyaudio.PyAudio() stream None try: stream p.open(formatFORMAT, channelsCHANNELS, rateRATE, inputTrue, frames_per_bufferCHUNK) except Exception as e: print(f[ERROR] 打開麥克風失敗: {e}) session_end(session_id, b) return global running try: while running: audio_data stream.read(CHUNK, exception_on_overflowFalse) if not audio_data: time.sleep(0.01) continue ret audio_write(session_id, audio_data, len(audio_data), 0) if ret ! 0: print(f[WARN] 音頻寫入錯誤碼: {ret}) # 非阻塞處理喚醒事件 try: while True: word wakeup_event_queue.get_nowait() print(f[喚醒成功] {word}) # TODO: 在這里接后續(xù)業(yè)務動作 except queue.Empty: pass except KeyboardInterrupt: print(\n[INFO] 手動退出) finally: running False if stream is not None: stream.stop_stream() stream.close() p.terminate() session_end(session_id, b) print([INFO] 資源已釋放) if __name__ __main__: main()這個demo跑通之后你再往里加功能就很輕松了。比如喚醒成功后自動錄音5秒并調(diào)用識別接口或者喚醒成功后在終端播放一段歡迎音。只要記住喚醒回調(diào)里只做最快的事真正的業(yè)務放到主線程。4.2 后續(xù)擴展建議接語音識別、控制智能家居等喚醒只是語音交互鏈路的“第一公里”。真正實用起來你大概率要把它接入后續(xù)的識別、理解、執(zhí)行能力。我做過的幾種擴展方式供參考本地喚醒 云端識別喚醒成功后在設備端錄制一段音頻通過訊飛WebSocket或HTTP接口做一句話識別。這種模式比全時云端識別省電、省流量而且用戶體驗很自然——只有喊出喚醒詞后才會啟動“聆聽”狀態(tài)。喚醒詞多詞表訊飛喚醒SDK通常支持配置多條喚醒詞比如“你好小飛”“小飛小飛”兩個詞條對應不同編號。在初始化參數(shù)里配置多個喚醒詞時回調(diào)返回的text會告訴你命中了哪一條可以針對不同喚醒詞做不同動作比如“小飛小飛”調(diào)起助手“關閉屏幕”直接進入休眠。和其他傳感器聯(lián)動如果把喚醒SDK放在樹莓派、Windows盒子這類設備上喚醒成功后的回調(diào)里還可以發(fā)MQTT消息給其他智能家居設備實現(xiàn)“語音控制整個房間”的效果。最后分享兩個我實際積累的小技巧第一個技巧是務必給SDK回調(diào)加上超時自愈。我在長時間運行喚醒程序時發(fā)現(xiàn)某些USB麥克風偶爾會“卡死”導致音頻流不產(chǎn)生數(shù)據(jù)程序看起來還在跑實際上已經(jīng)完全聾了。后來我在音頻讀取循環(huán)里加了一個靜態(tài)計數(shù)如果連續(xù)3秒讀不出非空數(shù)據(jù)就自動重啟音頻流同時重新初始化一遍喚醒會話。這個自愈機制在最開始的聯(lián)調(diào)階段幫了我大忙否則半夜測試喚醒穩(wěn)定性時根本不敢跑整宿。第二個技巧是先跑音頻電平檢測再跑喚醒。每次換電腦、換麥克風、重裝驅動之后不要直接上來就測喚醒率先用一個20行的小腳本讀一下麥克風數(shù)據(jù)計算RMS能量并打印波形幅值。如果能量值一直為零或者異常偏低說明設備權限、驅動格式有問題的概率遠大于SDK調(diào)用的問題。把這一步當成習慣之后幾乎不會再被“為什么喚醒不觸發(fā)”這種問題浪費大量時間了。語音喚醒這個東西理論上不復雜但Windows環(huán)境下的坑確實很雜——從DLL位數(shù)、編碼方式、系統(tǒng)權限到線程模型任何一個環(huán)節(jié)出錯都會讓整個鏈路靜默失敗。希望這篇記錄能幫你少走幾步彎路早點聽到那句自己設備的喚醒詞回應。后面有時間我再寫一寫如何把這套喚醒能力封裝成Windows服務讓程序能在后臺常駐運行歡迎關注。注意由于項目開發(fā)環(huán)境和SDK版本差異某些接口名稱可能與你本地的版本不同如果發(fā)現(xiàn)函數(shù)名不一致請以官方頭文件或示例代碼為準并把本文的代碼當作一種結構參考來使用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧洲亚洲人人爽爽视频| 99999久久久久9国产精品| 精品国产乱码久久久久久日本公司| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 久久这里只精品99re66图| 亚洲91射| 亚洲综合一| 99精品视频在线观看| 国产精品一区二区校花| 国产精品不卡一区二区三区av| 精品中文一区二区| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 亚洲中文字幕熟女少妇一区二区| 男人网站婷婷| 亚洲欧洲激情| 美女毛片999| 98一区二区精品| 欧美成va视频网站| 国产精品久久久久综合| av资源在线播放天堂| 国产无马在线| 蜜臀无码视频在线观看| 欧美色欧美| 日韩精品人妻中文字幕不卡乱码| 1024午夜激情男人的天堂| 欲色影视综合吧| 欧美色偷拍| 99亚亚热| 黄色污污污污污污网站| 超碰在线91| 日韩一级特黄av毛片| 久久久久久久九九九九九九| 婷婷av在线中文字幕| 婷婷五月天激情四射| 日韩熟女精一区二区三区不卡| 福利大香蕉| 久久久久久99999国产精品| 久久宗合亚洲| 久草精品在线| 夜夜爽夜夜高潮夜夜爽| 亚洲精品99999| 久久久久久精| 3P乱轮视频| 国产高清免费不卡av| 国产成久久综合片| 岛国毛片在线观看免费| 天天做日日做| 岛国片国产成人亚洲播放| 伊人久久大香线蕉无码| 天天天肏屄欧美| 狠狠狠狠狠狠| 后入式999| 日韩一级二级三级| 亚洲欧美色图片| 狠狠操狠狠操操| 久久久久久久强迫| 一级久久性爱视频| 顶级少妇BT天堂| 色婷婷婷五月天激情四射| 制服中出中文人人精品| 丰满熟女一区二区三区在线播放| 天天插夜夜操| 超碰碰碰碰| 久草视频制服诱惑| 2019亚洲男人天堂| 国产精品久久久久久亚洲色欲| 日逼逼免费看| 99婷婷| 久久香蕉国产传媒一区剧情天美| 亚洲揄拍网| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 懂色AV一区二区三区| 色情亚洲日本成人| 亚洲综合有码| 高潮的A片激情扒开一区| 一区二区影院| 高清不卡国产| 97国产精选| 岛国福利在线精品播放| 激情视频网址| 亚洲成人在线资源| 色婷婷视频| 亚州乱码中文字幕综合久久久| 91美女视频电影| 天天干人人看综合| 久久久久婷婷| 日韩综合97P| 九九九九精| 亚洲日韩国产欧美综合v| 丰满翘臀美女影院视频| 91欧美少妇| 操操操五月天婷婷丁香影院| 一区二区三区在线资源| 97国产精选| 激情抓乳插进去啪啪啪日韩 | 综合 亚洲 欧美| 色黄色美女大长腿午夜视频| 久草久热| 欧美精品一二三| 亚洲av影院在线观看| 色诱中文字幕| 91少妇| 在线播放中文字幕| 人妻天天爽夜夜爽2| 国产一区二区三区久久久精品| 日韩成人免费电影| 天天天做天天天爱天天天爽| 久久国内| 国产农村妇女精品| 久久天天摸| 亚洲丝袜在线观看| 亚洲综合激情五月久久| 日本在线播放不卡一区| 91少妇香蕉久久精品| 97操| 韩日男人的天堂| 超碰九区| 97人肏| 99re久久| 91亚洲人电影| 欧美AAAA黄片| 久久久久久久78| 狠狠操,使劲操| 97久精品| 91久久免费视频互動交流| 999在线电影香蕉| 葡萄牙性视频一二区| 日本天天色| 中出20p| 91在线无码精品秘 软件| 久久人爽| 开心五月深爱五月| 一区二区三| 日韩在线76| 久久精品黄色| 国产噜噜噜噜噜久久久久久久久| 日韩精品人妻一| 99999这里都精品| 激情综合婷婷| 综合夜夜| 无码人妻精品一区二区三区九九| 日韩中文字幕视频在线观看| 九九九久久久W精品| 97九色人妻| 97超碰超碰| 欧美少妇第一页| 午夜视频好爽啊| 精品一久久久| 欧亚在线视频| 色哟哟综合| 欧美在线视频观看一二三四区高清| 久久亚洲AV无码专区首页| 久久一区二区加油站| 五月婷婷丁香中文字幕| 96久久久| 日韩操呦呦影院在线观看| 亚洲精品一区二区三区在线播放| 一起草视频在线| 东北女人被操| 99热9| 国产黄色影片在线观看| 欧美 亚洲| 日日AV加勒比| 99久re热视频精品98| 啊啊啊想要| 色天堂在线观看| 久久久久久国产精品| 日韩激情电影中文字幕 | 很黄很色的视频在线观看| 青青操日韩| 在线天堂999| 亚欧Av| 欧美色999| 国产精品久久久久久久久久久久久久久久 | 99热这里只有精| 久久高清欧美国产| 很黄很色的视频在线观看| 亚洲男人天堂手机版| 天天摸夜夜操视频| 97国产中文| 天天狠| 国产一区二区啪啪视频| 做爱A级亚欧| 日韩欧无码一区二区三区免费不卡| 色偷综合| 亚洲色图美腿丝袜| 97免费视频在线观看视频| 亚洲国产精品久久久久婷婷青年| 综合啪啪| 午夜福利视频在线一区| 亚洲性爱电影| 人人么人人操| 久久少妇| 蜜臀久久99精品久久久久久成人小说 | 狠狠色综合网| 亚洲欧洲网站免费观看| 国产在线精品偷| www.久久制服糖| 国产成人久久精品蜜臀| 一区二区三| 亚洲欧美碰碰| 97亚洲在线| 久久婷婷一区| 国产自偷| 国产精品一区二区三区在线| 18精品一二区| 青青草好吊色| 欧美综合另类| 国产中出内射一区二区| 色吧5亚洲| 人人妻人人玩人人澡人人爽| 亚洲无线观看久久| 国产真乱mangent| 亚洲精品九九九| 超碰97日韩| 黄页网站成人免费| 国语少妇精| 亚洲欧美首页| 午夜舔阴达高潮视频免费看| 亚洲欧美另类激情小说| 色网站导航大全| 国产在线综合网| 欧美高清无码免费视频高清版| 搡老熟女免费视频| 超碰成人公开| 91碰碰碰| 欧美日韩m| 国语人妻精彩刺激| 又黄又爽在线观看视频| 能看的av| 女同性恋一区二区三区精品视频| www欧美91| 在线可观看的黄色网址| 久操影视| 99热这里都是精品| 国产精品内射婷婷一级二| 91一区二区三区蜜桃| 亚洲 日本 国产 综合| 久久黄色性爱视频| 乱色视频中文字幕| 天天综合影院91| 97精品国产手机| 大屁股国产在线视频| 大香蕉一人| 96麻豆精品一区二区三区| 九热中文字幕| 午夜视频好爽啊| 久久99网站| 91 丝袜在线| 91在线丝袜| 2017大香蕉| 亚洲男人久久综合天堂| 欧美视频在线视频免费va| 亚洲人妻色图| 99热在线观看| 大香蕉综合| 精品中文日韩字幕视频| 美女天天干| 中文字幕日本久久| 亚洲色香| 一级做受视频免费是看美女| 久久久久婷婷| 和协影院中文字幕三区| 综合久久97| 亚洲成a人在线观看久| 日韩国语字幕| 精品少妇一区二区| 日韩在线一区二区| 国产精品午夜成人福利| 国产精品农村妇女精品| 亚洲图片色图欧美另类| 九九玖玖精品| 色爱亚洲| 欧美自拍偷拍免费观看| 熟女欧美日韩综合婷婷| 欧美97爱| www五月| 日本男人插女人的逼黄色| 欧美激情精品| 国产尹人在线视频免费| 久久久久96| 极品销魂美女一区二区| 欧美躁死她一区二区| 亚洲做性| 色综合九九| 天天天天做夜夜夜夜做| 国产极品99热在线播放69| 国产视频三区四区| 欧美精品宗合| 亚洲丝袜B诱惑| 欧洲精品一级二级精品综合视频综合| 天天色播亚洲综合网站| 国产精品99999| 综合操逼| 色网综合网| 国产啊v在线免费播放| 亚洲欧美天堂在线| 亚州熟女乱伦| 亚州中文字幕超碰97| 综合久久久久久久久91| sss视频华人在线| 大奶的诱惑| 日韩欧美女优电影| 无码国产精品96久久久久孕妇| 天天爱天天操| 91春色| AV天堂丝袜| 国产97亚洲| 旡码电影特区| 一区二区三区视频国产免费| 狠狠色一区二区中文字幕| 亚州免费啪啪视频| 任我爽在线视频免费观看| 秋霞影音一区二区三区| 九九这里只有精品| 欧美大码在线视频| 永久免费发布性爱网| 乱码人妻一区二区三区| 日本岛国黄色网址| 91网站18| 欧美日韩中国x| 亚洲四虎熟女精品| 99999re| 四虎永久在线精品免费网址 | 视频不卡中文字幕| 超碰天天操| 色噜噜人妻丝袜a∨先锋影| 亚洲天在线| 97网址www| ,成人免费啪啪视频| 丝袜色综合| 啊v视频在线观看| 天天澡天天爽日日AV| 超碰 av 女人天堂| 青草视频在线看看看看看看看看看| 极品销魂美女一区二区| 东京热熟女亚洲视频网站| 高清无码国产亚洲| 国产一区二区三三视频| 亚洲黄色电影| 青女在线| 日韩紧密久久| 综合色色网| 女人与公拘交酡2020视频| 精品一区二区三区蜜桃臀www| 日本一级黄色电影| 免费人成在线观看网站品爱网| 国内外毛片在线观看| 国产夜夜艹| 中日高清无码操逼视频| 国产99精品一区二区三区免费| 国产欧美另类久久久精品课程| 人人澡综合涩| 后入式五六区| 欧美极品少妇交| 成人5码视频| 中文字幕精品免费一区二区| 欧美激情1区| 97色涩| 能看的AV| 成视频在线观看免费看| ,成人免费啪啪视频| 四虎在线视频| 春色综合免费| 中文字幕欧美日本乱码一线二线 | 91操操操操| 99久草| 中文字幕免费看| 麻豆天美传媒在线视频天堂| 夜夜操夜夜爽夜夜高潮| 亚洲日产专区| 婷婷亚洲综合| 国产精品久久久三级无码| 久久首页| se吧提供国产乱老熟视频胖女人| 超碰色综合| 久久久极品| 大色网久久| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 夜夜高潮夜夜爽| 久久亚洲不卡| 国产欧美第五页| 五月婷丁香| 久热九九| 96精品在线| 激情婷婷五月天| www.超碰在线| 人妻少妇色综合| 东京热免费视频| 精品久久久亚洲AV成人网站| 长长久久曰曰夜夜成人网| 免费一级毛片在线视频观看| 久久精品性| 婷婷六月色开| 久久麻豆一区二区| 97天天爽| 国产精品肉丝自拍| 欧美成人色| 97精品视频网站| 男人网站婷婷| 久久一区二区蜜桃| 亚州综合| 日本高清有码网址视频| 狠狠久久亚洲欧美专区| 区一二区日韩亚洲乱码av电影| 禁止观看美女黄| 欧美 日韩 国产传媒| 粉嫩AV输入| 婷婷九月国产| 熟妇女伦乱视频| 99人妻碰碰碰久久久久禁片| 成人免费看吃奶视频网站| 免费超碰97在线观看| 无遮挡h肉动漫在线观看| 凹凸视频特色日本特黄| 丝袜喷水在线| 久久人妻一区二区三区高清| 黄骗免费网站| 操逼操逼逼操操逼91| 五月天激情视频| 一道本东京热加勒比一区二区三区| 中文字幕片| 粉嫩久久久极品| 2017大香蕉| 欧美日韩国产黄色片| 韩国一级做A片免费的| 久久大香蕉手机高清| 91人妻视频| 精品少妇一区二区| 内射小黄片| 日韩另类| 欧美在线综合| 中文字幕精品免费一区二区| 婷婷伊人綜合中文字幕小说| 亚洲色91C| 少妇淫妇久久久久久久| 久久黄色性爱视频| 日韩99神马视频播放片在线播放| 亚洲中字慕不卡| 日本中文字幕不卡视频| 狠狠干综合| 极品久久久久久久久久久久久久| 快灬快灬 一下爽蜜桃在线观看| 亚洲图片日本AⅤ欧美在线| 欧美成人精品A片免费一区99| 殴洲老熟女| 色五月AV| 亚洲操操| 久久97视频| 欧美一级特黄淫片在线观看| 超碰亚洲欧美日韩无| 色综九九九一区| 国产Av超碰| 五月天婷婷欧美三区| 亚州欧美综合| 国产精品亚洲高清在线| 免费久久9999| 欧美人与动性人交a| 丁香六月综合激情| www.91视频网| 狠狠干婷婷| 久久久久婷婷精品av电影| 性影在线视频| 97色涩| 人人操人人摸avav| 国产偷仑| 熟妇xxxxx性春色| 中文字幕加勒比海高清无码免费视频| 亚州男人天堂| 爽爽歪在线视频| 一区二区影视| 一色网男人的天堂| 97超碰色色| 999狠狠综合| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 人妻精品一区二区| 亚洲色偷偷色噜噜狠狠99网| 亚洲国产成人精品女人久久久| 综合熟女| 91色图| 嫩草 人人网精品| 国产亚洲女v在线观看| 99色日| 日日噜噜夜夜狠狠视频无| 十八禁黄色成人网站观看| 热久久国产| 亚洲性综合| 5278欧美一区二区三区| 欧美自拍网| 中文字幕二区日韩天堂| 国产亚洲99久久精品熟| 一区二区不卡| 综合久久中文字幕综合日韩精品| 久久久久久十| 一区麻豆 高清中文字幕| 欧美巨大性舒爽顶到了| 女生自91网站| 日本肉体xxxx裸交| 99热在线播放| 久操网在线| 日韩中文字幕视频在线观看| 香蕉99秘 一区精品蜜桃臀| 欧美亚洲综合色| 女同女同恋久久级三级| 中出91视频| 999日韩中文精品观看视频。| 亚洲成人激情小说视频| 日本熟妇色熟妇在线视频播放| 久久久 国产精品| 东京热双插| 久草男人天堂| 久久极品伊人| 404操逼福利视频| 色综合91好| 亚洲限制级| 一起草AV| 中文字幕亚韩| 国产女s强制榨精视频| 无码九九九九| 欧美综合加勒比在线| 无码聚合| 亚洲欧洲无码bt精品合集| 中出在线视频| 欧美日韩婷婷中文| 最新加勒比丝袜在线| 无码高清专| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 亚洲 欧美综合| 国产精品久久久久久久久久久久久久久久久久| 天天肏夜夜肏| 国产大学生口爆吞精合集| 老女人综合网| 东京热毛片调教| 性性久久| 中文有码第五页| 玖玖在线视频| 婷婷精品视频| 无码乱人伦中文视频| 国产肏逼网站| 亚洲色综合| 99热在线只有精品| 97国产精品久久久久| 美女大乳久久久久久久女人18| www.超碰| 丁香色五月 97干| 国产区91柔拿会所技师| 亚洲午夜AV| 尤物网址| 欧美性爱第一区| 久久精品国产AV一区二区三区| 伊人麻豆传媒| 97在线视频免费看| 91精品人妻一品二品三品| 亚洲se电影| 久久97超碰香蕉| 蜜桃久久久久久久久久久久 | 岛国在线国产| 中文字幕精品免费一区二区| 黄片免费日韩| 97超碰磁| 久操网无码在线| 亚洲av综合色区图片亚洲| 无码精品久久| 久久精品久久久久久久久| 电家庭影院午夜69久久夜色精品国产69乱| 久久久久久97| 20cm女自慰在线日韩欧美| 精品无码久久久久久久杏吧| 男人的天堂 在线一区| 亚洲欧美综合| 国产一区二区免费福利片| 亚洲精品一区二区精华| 一个人免费视频观看在线WWW | 国产成自自拍在线观看| 日韩精品9区| 射丝袜大香蕉| 日韩成人小视频| 亚洲资源一区| 91视频伊人| 淫荡熟女乱伦网| 日本在线激情一区二区三区| 亚洲成人碰碰| 欧美婷婷久久| 少妇精品久久久八区九区| 一本久久久精品| 欧美亚洲情色| 中文字幕一区二区免费在线| 最新啪啪视频| 久都青青视频| 91美女看B| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 国产兽交视频在线播放| 操逼无码一区| 日韩在线女优天天干| 欧美日韩一干二干| 亚洲三级。日韩三级| 色激情综合网站| 国产三级多多影院2022国产AA一级毛片无码 | 亚洲日韩美女中文字幕乱| 婷婷综合网站| 国产精品网站免费| 久久久久成人网| 国产精品成久久久久午夜午夜| 国产精品久久久久亚洲av | 亚洲欧美日韩偷拍色图| 欧美顶级黄色大片免费| 欧美黄页在线| 一本色道久久综合熟妇| 精品午夜福利导航| 一区二区三区精品久久| 好吊色一区| 欧美同性恋 的搜索结果 - 91n| 日韩在线国产字幕| 最近的最新的中文字幕视频| 色女99一级片在线观看| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 少妇被c 黄 免费观看| 少妇高潮对白在线观看| 日韩色图 一区二区| 外站AV在线| 午夜精品久久久久久久99蜜桃一| 伊人成人情色综合| 97超碰9| 亚洲av淫乱| 九热大香蕉| 国产400孕妇孕交群| 粉嫩不卡一区二区性爱| 日韩午夜国产| 欧州一区二区三区四区| 亚洲情色电影网| 婷婷丁香人妻| 丁香婷婷九月| 国产AB视频| 午夜福利精品| 97丝袜亚洲在线播放| 欧州一区二区三区四区| 玖玖97综合| 另类欧美色| av九九| 92大香蕉| 国产视频一区二区免费| 黄色十八禁| 久久社区一区二区三区| 97自拍一区| 日韩免费三级黄片电影| 亚洲男人天堂2012| 欧美一级在线观看成人| 国模限制级电影| 另类图片天天影视| 91美女视屏| 香蕉欧美| 九九英色视频| 天天激情综合站| 中 文字幕一区二区三四 五 区日 日 骚 | 97干色| 精品网站9999| 日本东京热久久久电影| 亚洲精品天天影视综合网 | 九九aV| 97超碰精品图片| 这里有精品| 69精品| 91av天美性媒精品视频| 欧美一区二区三区四区综合| 日韩天天本| 国产三级电影免费观看| 美女91网| 久操99| 一级特黄aaa大片在线观看成人一级片在线观看 | 国产第11页| 天天插天天操| 一级二级在线观看| 亚洲第一二区另类图| 操逼片中文| 97国产|免费| 91女网站| 秋霞影音一区二区三区| 国产白丝AV| 天天弄欧美| 一级性爱aaaa| 欧美综合传媒| 超碰九7免费| 操婢日韩| 国产欧美精选自拍一区| 人人干黄色| 亚洲精品国产专区在线观看| 不卡日本一区二区| 少妇被c 黄 免费观看| 最新亚洲风情电影| 在免费jIzzjIzz在线视频| 男人的天堂VA| 熟女中出视频| av片在线观看免费播放| 国内一区二区免费| 亚洲欧洲无码一区夜| 亚洲国产欧美中文永久| 秋霞网无码| 亚洲一区亚洲天堂| 青青11操操操操操操操操| 欧美大香蕉同搞| 亚洲高清综合网| 欧色性第一页| 成人AV素股で擦久久| 欧美日韩香蕉| 国产高清视频无码在线| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 久久 久久国内精品亚洲| 蜜桃成人1区2区3区| 色网在线视频观看免费| 欧美精品宗合| 国产嫩草精品A88AV| 艳尻美人妻| 久久久艹艹艹| 丁香五月婷婷色| 国产91精品福利在线| 久久的免费性爱视频| 天天日天天干天天摸天天操| 国产免费久久精品99re韩国| 人妻夜夜爽天天爽麻豆三区网站 | 嗯啊不要啊在线| 404操逼福利视频| 欧美日韩*字幕一区| 色五月av| 青青草大香蕉视频| 俺也射| 日韩精品作爱导航| 亚洲综合影片| 国产天天骚| 蜜臀av一区二区三区免费观看| 日韩女模中文造逼| 国产 日韩 欧美高清 | 嗯嗯啊啊视频一区二区三区| 96久久科窝| 嗯啊不要在线观看嗯啊| 色婷久久| 成人av免费观看| a级理论午夜日本| 久久精品国产亚洲AV无码电影| 国产亚洲欧美每日在线| 久久久精品中文字幕爱豆| 人妻一区二区三区四区视频| 97天堂| 91成人18| 小说区 图片区色 综合区| 亚洲色图综合| 国产精品国产亚洲区艳妇糸列| 精品国产乱码久久| 成年无码动漫av片无尽在线 | 日韩一区二区熟女| 宅男午夜在线视频| 情色av电影| 白丝AV网站| 日韩精品9999| 国产精品一区二区后入| 午夜精品人妻二区三区| 色哟哟AV| 欧美丝袜91| 啊v在线观看视频| 一级一性爱免费视频| 视频一区二区免费在线| 国产精品福利资源在线尤物| 亚洲色图尤物视频| 91c色| 91Chinese在线| 国产伦精品一区二区三区视频女| 久久最新免费视频23| 男人的天堂2018.| 91国产美女丝袜足交精品视频 | 操逼网免费无码视频| 91精品大奶人妻| 日韩人妻资源网| 欧美成不卡网| 亭亭在线资源| 四虎影视精品| 日韩成人精品| 一区二区三区激情在线观看| 亚洲成人碰碰| 熟女AV一区| 亚洲综合伊人无码久久| 亚洲影院无码在线| 久久香蕉国产线看观看猫咪av | 国产强奸AV在线| 网页导航五月天免费一二三区| 婷婷丁香五月激情啪啪| 日韩欧亚太美不卡| 91美女視頻| 69精品| 亚欧Av| 中文字幕视频一区视频二区| 欧美大干日韩| 天天插网| 国模精品娜娜一二三区| 极品粉嫩一区二区| 国产少妇内射| 五月丁香六月综合缴清无码 | 91在线国产后入风骚翘臀美女素人| 久久二| 中国zzijzzijzzwww精品| 97色色视频| 国产av热热色| 少妇被c 黄 免费观看| 亚洲成人性爱在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 精久久久91| 日韩91网站| 无码国产精品久久久久| 婷婷色香| 精品人妻一区二区三区日产| 黄色一级视| 欧美78| 日韩激情电影中文字幕| 亚洲综合五月天| 五月天亚洲网| 亚洲天堂一区二区久久| AV天天综合| 欧美大的香蕉有线电视视频 | 伊人欧美大香蕉视频| 99国产精品视频尤物| 91网站18在线观看| 天天干人人乐| 国产无马av| 色天使AV天堂| 国产精品激情久久久久久久| 91日日| 日韩欧美性爱电影在线观看| 丁香五月综合| 女人香蕉久久毛毛片精品| 操逼逼福利视频| 亚洲精品 欧美精品| 欧美A片中文字幕| 中文字幕91综合| 午夜精品久久久| 天天爽爽爽爽| 青青草中文字幕| 欧美1727免费观看视频| 97在线免费视频观看| 五月婷婷无码| 色臀AV| 亚码激情| 91免费看一区二区三区| 午夜福利久久久噜久噜久久综合| 97色亚洲| 欧洲中文字幕| 国产无码精品高清| ai欧美亚洲小说| 91在线视频观看国产| 91少妇香蕉久久精品| 金莲网址| 91超碰在线观看| www.夜夜操| 国产深喉视频一区二区| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 97ai亚洲| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 成年人网站在线免费观看| http://qxhbdz.com| 亚洲欧美另类激情小说| 日日夜夜骚| 吖在线不卡一区二区国产剧情| 神马久久69| 最新中文字幕在线亚洲| 综合欧美色图| 99国内精品| 夜夜操青青草| 亚洲综人网| 欧美极品女人的天堂| 色哟哟 日韩精品| 日韩久久艹| 亚洲超碰在线| 国产v亚洲v日韩v欧美v片另类| 中文字幕版| 久久精品国产亚洲AV片多多| 久久线上视频免费看| 精品国产自在在线99| 男人的天堂午夜av| 日韩电影免费网站麻豆视频| 欧美熟女少妇| 国产高清精品一区二区三区毛片| 九九九九一区| AV高清一区| 日本在线视频导航| 亚洲自拍偷拍视频在线| 中国的操老妇女| 日本特黄f c2| 伊人五月天激情| 亚洲激情视频| 鸥美极品| 99999无码| 青青操狠狠撩| 操逼操2| 精久久久| 亚洲 se图 欧美电影| 国产大学生高潮在线播放| 最新日本中文字幕| 日韩精品人妻中文字幕不卡乱码| 91色黑人少妇| 99热在线播放| 狠狠干婷婷| 性在久久久久久| 国产精品白领在线观看| 欧美日韩不卡传媒| 丁香婷婷激情五月天无毒不卡| av资源在线播放天堂| 北约熟女超碰| a'v在线资源| 东京热,男人的天堂| 91少妇香蕉久久精品| 久久国产精品一级二级三级| 大香蕉强奸乱伦| 日本精品一级二级三级| 久久久青青草| 精品九九淫乱男| 99九九久久| 欧亚综合一卡二卡中文字幕| 操美女高潮抽搐白浆| 中国一级操逼视频| 国产一区二区三区高清视频| 999精品乱码| 狠狠97| 亚洲啪啪啪啪视香蕉| 香蕉久久精品| 欧美有码亚洲中文字幕一区二区三区四区 | 欧美se亚洲| 91精品国产综合久久久蜜臀| 高清国产av无码| 亚洲AV性爱电影| 翔田千里无码中出中文字幕| 国产色图乱伦| 日韩欧美日韩| 97超碰超碰| 香蕉99秘 一区精品蜜桃臀| 99热这里只有精品1| 日韩三级性| 婷婷九月国产| 欧美青青草视频| 美女91色黄18| 我想要啊 啊 啊| 91精品少妇搡搡搡| 欧美日韩人妻少妇 一区二区三区| 超碰人妻中文在线| A啊啊在线观看| 伊人国产视频| 亚州综合色图| jiujiujiujingpin| 久偷拍欧美日韩三区| 9久精品视频在线观看| 加勒比综合九九99视频在线播放| 97人人中文网| 日韩av色图综合| 中文字幕78| 豆1无夜无码| 伊人网在线点播| 插插综合网天天影视网| 欧美se综合| 亚洲情欲| 老外又粗又长一晚做五次| 亚洲av国产av综合av卡| 亚洲国产ⅴ高清在线观看| 中文字幕乱在线伦视频中文字幕乱码在线 | 日韩av影片在线观看| 色色色色电影网| 嗯啊不要啊在线| 综合久欧洲| 亚州九九九精品视频| 午夜亚洲| 国产精品爆乳懂色蜜乳| 草草影院日本第一页| 亚洲精品乱码久久久久久蜜桃麻豆| 国产欧美一区激情交| 混色激情av| 污污污8888| 婷婷人妻激情| 偷拍偷窥与盗摄视频专区| 2020中文在线一区二区三区| 熟女人妻一区二区三区| 亚洲 欧美都市激情| 今日头条成人一区二区三区四虎精品| 白丝在线一区| 伊人九九九| 在线无码视频| 久久综合婷婷| 伊人久久大香线综合无码| 久欲AV| av网站免费看| 秋霞曰韩R级| 中文字幕视频在线观看一区二区| 夜夜 中文视频rt| 狼人狠干| 浪人综合网| 啊a一区在线| 国产97综合| 中文字幕人妻资源在线| 久久性爱免费送| 夜夜嗨av午夜成人| 日日骚av| 91av一区二区在线观看| 五月天激情视频| 新视频sss国产| 亚洲av青草久久一区二区| 屁屁影院一区二区三区国产| 亚洲中文字幕有码视频一区二区三区| 中文一区二区| 激情黄色片在线观看| 综合网色| 久草精品视频| 国产无码三级视频在线观看| 天天色播| 二级毛片| 成 人片 黄色大片| www鬼畜国产男人的天堂| 亚洲极品| 国产h片在线观看视频| 亚洲情色第一页| 婷婷8月天青娱乐| 欧美人妻精品一区二区| 国产AV天美| 蜜臀在线视频| 丁香激情五月天| 亚洲AV色图一区| 日本三级一区二区 在线| 国产乱婷婷精品二区三区| 中文字幕成人乱码熟女精品国50| 日韩欧美午夜视频在线| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 天天天天天天天天天天干美女| 日少妇亚洲版| 97超碰精品| 亚洲天堂中文字幕无码男同| 天天综合~91| 黑人嘿嘿嘿超爽免费视频| 欧洲精品一区二区三区| 91福利网在线观看| 厕所偷拍在线| 女人天堂av在线播放| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 蜜臀人妻少妇久久在线观看| 热99这里有精品综合久久| 日本特黄f c2| 日本一二区不卡| 日本熟妇一区二区三区| 久久久久久久9| 97色伦欧美| 激情小说亚洲色图| 少妇免费视频| 九九九精品成人免费视频小说| 天天看天天综合成人网| 麻豆精品一区二区三区四区免费观看| 色哟哟的毛片| 91日韩| 蜜桃中文字日产乱幕4区| 无码精品久久久久久亚洲| 一区,二区,三区网站| 青娱乐二区免费| 欧美日韩国产电影| 亚洲1区2区三区高清中文字幕| 久久少妇人妻| 国产超碰| 91狠狠综合网| 色婷婷在线视频精品导航| 成人av在线播放| 91性| 大地资源在线观看中文第二页| 亚州欧美另类| 精精夜夜| 亚洲,日韩,欧美,成人播放| 九九九精品一区二区无码| 伊人色综合网电影| 老女人综合| 中美日韩毛片| 欧美一区二区观看在线| 久久久女人| 久久综合日韩亚洲欧美| 亚洲 日本 国产 综合| 久久久精品一区二区| 色九月| 国产日韩无码一区二区三区久久区| 一直超碰| 1024日韩| 国产v片在线免费观看| 亚洲drav色图| 一区二区激情国产熟女 | 国语人妻精彩刺激| 国产操逼视频在线观看| 精品人妻一区二区蜜桃视频| 99久久com免费视频′| 最新岛国大片| 欧美亚洲首页| 成人热久久精品| 色九月| 视频在线观看免费一区二区三区| 欧美性高潮在线| 国产精品第二页| 色丁香五月婷婷| 岛国免费黄色网址| 91国模| 日本性一区| 久久久久久久久久久久久久久乱码| 国产精品自拍欧美在线| 久久成年片色大黄全免费网站| 超碰在线1234区| 夜夜狼人妻| 久久五月综合| 人人看欧美性爱| 男女啪啪网站免费视频| 东京热AV男人的天堂| 美女大乳久久久久久久女人18| 婷婷丁香成人| 制度丝袜99| 熟妇乱伦一区二区| 欧美色97| 欧美一二级| 免费看污网址| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 福利操逼| 思思久热在线精品66| 就去色综合| 日韩中文字幕宗合在线| 国模吧 一区二区三区| 野狼激情网| 免费视频a级毛片免费视频| 国产曰批免费观看久久久| 久久久久久网址| 日躁天天爽爽| 600国产精品视频| 亚洲97网站| 综合一区二区影视| 亚洲性少妇| 熟妇人妻一区二区三在线| 69综合网| 久久9久9久99久9久9| 男人的天堂啪啪| 久久婷婷五月综合| 日韩在线观看中文字幕视频| 欧美aaaaaaa| 亚洲欧美日韩二区视频| 人人人摸人人| 成人国产视频在线观看| 白丝AV| 97超碰中文在线| 天天日天天干少妇日| 91性网| 欧美精品庄| 久久精品—区二区三区内射| 综合色区偷拍| 日韩精品午夜操呦呦不卡影院| 91在线丝袜| 黄站在线免费观看| 我想要啊 啊 啊| 久久9精品网站| 少妇熟女视频一区二区三区| 久草成人影片| 国产精品电| 骚日日av| julia国产在线| 男人的天堂1024| 97在线看| 国产精品人妻一区二区| AV天堂国产| 日韩国产欧美伦理在线| 久久久久久久亚洲Av无码|