Skip to content
 
 

Repository files navigation

Qwen3 ASR MiniTool

本地語音辨識字幕生成工具。基於 Qwen3-ASR-0.6B 模型, 使用 OpenVINO INT8 量化推理,目前版本不使用 GPU,純 CPU 即可執行。 此版本辨識率普通,主要是要你同事、你同學,拷貝給你阿嬤都能免費進行語音辨識。 之後會調整一個使用 Python 環境的 GPU 專業版本,以提升辨識的正確性和給 LLM 使用。


功能

  • 音訊檔案(MP3 / WAV / FLAC / M4A / OGG)→ SRT 字幕
  • 即時語音辨識(麥克風輸入),並非完全串流即時,會在停頓中自動處理辨識
  • 自動 VAD 靜音偵測,分段轉錄
  • 說話者分離(Speaker Diarization):可指定說話人數,SRT 自動標記說話者身份
  • 多語系辨識:支援中文、日文、英文等 30 種語系,亦可設為自動偵測
  • 辨識提示(參考文字):可貼入歌詞、關鍵字或背景說明,提升辨識準確度
  • 繁體中文輸出,可辨識中英混合
  • 首次執行請選擇資料夾自動下載模型(約 1.2 GB)
  • Portable 版本包括模型開箱即用,Basic 版本檔案較小,採自動下載模型
  • 若系統已有 Python 虛擬環境且已安裝需求,可執行 app.py,使用 build.bat 可建立為 exe 檔案

使用說明

音檔轉字幕

音檔轉字幕介面

  1. 啟動後,上方狀態列確認顯示 「✅ 就緒(CPU)」,表示模型已載入完成
  2. 點選「瀏覽…」選擇音訊檔案(MP3、WAV、FLAC、M4A 等均支援)
  3. 點選「▶ 開始轉換」,下方進度列與記錄視窗會即時顯示各段處理狀態
  4. 完成後點選「📁 開啟輸出資料夾」即可取得 .srt 字幕檔

首次啟動若模型尚未下載,程式會自動提示選擇存放資料夾並開始下載(約 1.2 GB),完成後自動載入。


即時語音辨識

即時語音辨識介面

  1. 切換至「即時轉換」分頁
  2. 在下拉選單選擇正確的音訊輸入裝置
    • 筆電通常選擇預設的麥克風陣列(Microphone Array)
    • 桌機請選擇對應的麥克風裝置
    • 若清單顯示異常,點選「重新整理」更新裝置列表
  3. 點選「▶ 開始錄音」後,對著麥克風說話
  4. 辨識並非完全即時串流,系統會在說話停頓的過程中進行辨識處理,停頓約 0.8 秒後自動觸發,結果以時間戳記顯示在下方字幕區
  5. 點選「■ 停止錄音」結束,可再點選「💾 儲存 SRT」將累積的字幕存檔

說話者分離(0221 新增)

說話者分離介面

音檔轉字幕時,可勾選「說話者分離」,並透過「人數」下拉選單指定說話人數(自動 / 2–8 人)。開啟後,SRT 字幕的每一段文字會自動加上「說話者1:」、「說話者2:」等標記。

適用場景與限制:

  • Podcast、NotebookLM 雙人對談等輪流說話的形式效果最佳,分段清楚明顯
  • 多人會議或同時說話的情境效果較不理想
  • 首次使用時,程式會自動提示下載說話者分離模型(約 32 MB),下載完成即可啟用

建議: 已知說話人數時請明確指定,可有效避免過度分割(例如 2 人對話被誤判為 5 人)。


多語系辨識(0221 新增)

多語系辨識介面

上方工具列新增「語系」下拉選單,可強制指定辨識語言(預設為自動偵測)。支援中文、日文、英文、韓文、法文等共 30 種語系,對音檔轉字幕及即時辨識均有效。

  • 自動偵測:模型依音訊內容判斷語言,適合多語混合的音訊
  • 指定語系(如「Japanese」):鎖定語言,可減少誤辨的情形
  • 日語歌詞辨識的掉字率較中文高,但咬字清晰的音調仍能正確辨識

辨識提示 / 參考文字(0221 新增)

辨識提示介面

在「音檔轉字幕」和「即時轉換」分頁各新增一個「辨識提示」文字框,可貼入歌詞、關鍵字或背景說明文字,協助 ASR 模型提升辨識準確度。

  • 應用範例: 貼入 Suno 歌詞,再進行即時演唱辨識,確認歌詞是否唱正確
  • 有參考文字的情況下,歌詞辨識的字詞準確度相對較高
  • 亦可讀入 .txt 檔案,或使用右鍵選單直接貼上文字

更版方式

Python 版本

git pull

拉取後直接執行 app.py 即可,程式啟動時會自動檢查模型完整性並在必要時補齊缺少的檔案。

EXE 編譯版本(Portable / Basic)

  • 已下載過 Portable 版本的使用者:不需重新下載 Portable,僅需下載 Basic 版本,解壓縮後覆蓋現有資料夾即可。
  • 啟動後程式會自動檢查模型完整性;若為首次使用說話者分離功能,會彈出提示下載說話者分離模型(約 32 MB)。
  • 原有的 Subtitle 輸出資料夾內容不會受到影響

系統需求

項目 最低要求
作業系統 Windows 10 / 11(64-bit)
Python 3.10 以上
RAM 6 GB(推理時峰值約 4.8 GB)
硬碟空間 2 GB(模型 1.2 GB + 程式)
CPU Intel 11th Gen+ 或同等級 AMD

GPU 非必要。OpenVINO GPU 目前僅支援 Intel GPU,不支援 NVIDIA。


模型來源

項目 連結
OpenVINO INT8 量化版(主要下載源) dseditor/Qwen3-ASR-0.6B-INT8_ASYM-OpenVINO
OpenVINO INT8 量化版(備用下載源) Echo9Zulu/Qwen3-ASR-0.6B-INT8_ASYM-OpenVINO
原始 PyTorch 模型 Qwen/Qwen3-ASR-0.6B
VAD 模型 snakers4/silero-vad v4.0
說話者分離模型(分段 + 聲紋) altunenes/speaker-diarization-community-1-onnx

開發者說明

重新產生 prompt_template.json

processor_numpy.py 的 BPE prompt 模板需要從原始模型提取一次。 若更換模型版本,請在有 torch + transformers 的環境中執行 generate_prompt_template.py

python generate_prompt_template.py

這會在目錄下產生:

  • prompt_template.json:Prompt token ID 模板,執行程式時必須存在於根目錄
  • ov_models/mel_filters.npy:Mel 濾波器矩陣

架構說明

app.py                  # CustomTkinter GUI 主程式
downloader.py           # 模型完整性檢查與自動下載(含備援 URL)
processor_numpy.py      # 純 numpy Mel / BPE 處理器(不依賴 torch)
diarize.py              # 說話者分離引擎(兩階段聚類,不依賴 torch)
generate_prompt_template.py  # 從原始模型提取 prompt 模板
prompt_template.json    # Chat template token ID(含語系 suffix IDs)
ov_models/
  mel_filters.npy       # 預計算 Mel 濾波器
  silero_vad_v4.onnx    # VAD 靜音偵測模型(執行後下載)
  qwen3_asr_int8/       # OpenVINO INT8 模型(執行後下載,~1.2 GB)
  diarization/          # 說話者分離 ONNX 模型(首次使用時下載,~32 MB)
    segmentation-community-1.onnx
    embedding_model.onnx

授權

本專案程式碼以 MIT 授權釋出。模型權重依各自來源的授權條款。

About

基於OpenVino-int8權重,精簡的QwenASR小工具,用於即時辨識以及字幕轉換使用

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages