dsh-xiaomi-tts:爲 DSH Web 添加 Xiaomi MiMo TTS 語音朗讀

前言

用 DSH Web 跑智能體時,輸出默認是純文字。想讓它開口說話,常見做法是自己接一層 TTS:申請 API、在 Host 側做代理、在瀏覽器側處理音頻流、朗讀前還要把代碼塊和 URL 清洗掉。每一步都不復雜,但串起來要花不少時間。

dsh-xiaomi-tts 把這條鏈路做成了一個可以直接安裝的 DSH Web 插件,裝上後對話旁多一個「朗讀」按鈕,點擊即可播放。

這是什麼

dsh-xiaomi-tts 由 ppy-web 維護,定位一句話:爲 DSH Web 添加 Xiaomi MiMo TTS 語音朗讀。它基於 Xiaomi MiMo TTS 將文字轉爲流暢、清晰的自然語音,許可證爲 MIT。

核心功能

  • 一鍵播報:在對話操作欄中顯示「朗讀」按鈕,默認開啓。
  • 內置音色:使用 mimo-v2.5-tts 輸出音頻,支持 PCM 流式播放。
  • 自定義音色:使用 mimo-v2.5-tts-voicedesign,通過文字描述創造聲音。
  • 瀏覽器本地音色:使用瀏覽器宿主提供的離線或在線音色,作爲兜底。
  • 自動清洗文本:朗讀前移除網址、文件路徑、代碼塊、表情符號、圖標和控制字符等。
  • 三方插件聯動:對外暴露 PCM 流式播放能力(play/stop),新播放會自動打斷當前朗讀。

安裝與啓用

環境要求:

  • @deepseek-ai/dsh 0.1.1-rc.20.1.2-rc.1
  • Node.js 22+
  • Xiaomi MiMo API Key

從 npm 安裝(推薦):

dsh plugin --profile web add dsh-xiaomi-tts

也可以從 GitHub 安裝:

dsh plugin --profile web add github:ppy-web/dsh-plugin-xiaomi-mimo-tts

或者打開 DSH Web 的 設置 → 插件市場,搜索 xiaomi-mimo-tts 並點擊安裝。

安裝後按以下步驟啓用:

  1. 重啓 dsh web
  2. 打開 設置 → 插件 → 插件配置 → 語音朗讀(Xiaomi MiMo)
  3. 填寫 Xiaomi MiMo API Key,支持標準 API Key 和 Token Plan 專屬 API Key。
  4. 修改任意設置後點擊 保存 纔會生效。

典型用法

預置音色與輸出格式

官方內置音色共 8 個:

  • 中文女聲:冰糖茉莉
  • 中文男聲:蘇打白樺
  • 英文女聲:MiaChloe
  • 英文男聲:MiloDean

預置模型默認選擇 PCM(流式播放),音頻分片到達時立即開始播放,等待時間更短。也可以選 MP3(完整音頻)WAV(完整音頻),這兩種會等待完整文件生成後播放:MP3 體積更小,WAV 保留無損音頻但體積更大。

自定義音色

切換到 mimo-v2.5-tts-voicedesign 後,可以用文字描述想要的聲音。插件提供了常用描述模板,直接修改並保存即可:

青年女性,聲線清亮、親切自然,吐字清楚,語速適中,情緒溫柔克制。

注意:自定義音色暫不支持 PCM,待官方上線後可適配。

瀏覽器本地兜底

本地兜底語音有三種策略:

  • MiMo 優先:MiMo 失敗時改用瀏覽器語音。
  • 本地優先:優先使用瀏覽器語音。
  • 關閉本地語音:僅使用 MiMo。

可選音色來自瀏覽器 Web Speech API,是否離線以及實際可用範圍取決於瀏覽器、操作系統和網絡。

三方插件聯動

插件對外暴露了 PCM 流式播放能力,其他 Web 插件可以直接調用。在需要播放的位置寫一行:

ctx.get('xiaomiMimoTts')?.play('歡迎回來')

建議通過 ctx.get() 動態獲取這項能力,不必聲明爲必需的 inject 服務。插件未安裝或未就緒時調用會安全跳過;play() 使用用戶已保存的 MiMo 設置播放 PCM 流,stop() 可主動停止,新播放會自動打斷當前朗讀。

需要 TypeScript 類型提示時,可僅導入類型:

import type { XiaomiMimoTtsService } from 'dsh-xiaomi-tts/client-api'

const tts = ctx.get('xiaomiMimoTts') as XiaomiMimoTtsService | undefined
tts?.play('歡迎回來')

隱私

  • API Key 保存在 DSH Host,不會發送給瀏覽器。
  • 生成語音時,正文會被髮送給 Xiaomi MiMo 服務。
  • 音頻在瀏覽器內存中通過 Web Audio 或臨時 Blob URL 播放,不會持久化到磁盤。

適用場景與注意

適合兩類人:一是日常使用 DSH Web、希望對話能被朗讀出來的用戶;二是在做 DSH Web 插件、需要現成語音播報能力的開發者,可以直接複用它的 play/stop 服務,不必再接一遍 TTS。

使用前注意:

  • MiMo TTS 當前爲限時免費服務,具體政策請關注官方平臺。
  • 插件以當前 dsh 進程權限運行,安裝前建議檢查源碼與許可證。
  • Windows 用戶從本地開發版切換到 npm 版時,需先停止 DSH Web,避免 Windows Junction 被運行中的 Node 進程佔用:
.\start\dsh-plugin-reinstall.bat 3.0.1

結尾

dsh-xiaomi-tts 把 TTS 接入中最繁瑣的部分——API 代理、流式播放、文本清洗、兜底策略——封裝進了一個插件,裝上即可用。如果你想給 DSH Web 加上語音朗讀,或者在自己的插件裏複用播報能力,可以從它開始。

  • 社區插件目錄頁:https://www.skillhub.cn/plugins/ppy-web/dsh-plugin-xiaomi-mimo-tts
  • GitHub 倉庫:https://github.com/ppy-web/dsh-plugin-xiaomi-mimo-tts
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜