dsh-music-player 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/lib/client.js +542 -72
- package/lib/index.js +109 -1
- package/lib/lyric.js +186 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,8 +12,8 @@ DeepSeek Harness 本地音乐/小说播放插件。
|
|
|
12
12
|
|
|
13
13
|
- 本地音频流式播放(HTTP Range),刷新后断点续播
|
|
14
14
|
- 顺序播放、单曲循环、乱序播放三种模式
|
|
15
|
-
- 实时
|
|
16
|
-
- **实时歌词/字幕**:本地音频自动匹配同名 `.lrc`
|
|
15
|
+
- 实时 12 段频谱可视化(真实 FFT 频段:浏览器支持时走 `captureStream()`+`AnalyserNode` **只读旁路**实时采样、t=0 即响应——它不重定向媒体元素输出,因此绝不会让播放静音;若该环境报 Chromium 的 `getTopURL` 媒体管线错误、取不到音轨,则回退到解码时离线预计算的包络,跟随播放位置)。实时柱高把各频段的 bin 归到对数频段取峰值、按分析器 dB 量程归一化(标准做法),柱高由**绝对响度**驱动(安静时柱自然低),并用一条**固定、与响度无关的频率加权**抹平音乐天然的 1/f 低频倾斜——低频几根不再常年钉在高位,同时安静片段也保持低柱;离线回退包络与实时共用同一条加权,切到回退时观感一致)
|
|
16
|
+
- **实时歌词/字幕**:本地音频自动匹配同名 `.lrc` 逐行显示;**本地没有同名 `.lrc` 时自动在线兜底**(QQ 音乐官方歌词 → LRCLIB 免费同步歌词,结果按曲目缓存避免重复请求);在线 QQ 歌曲自动取官方歌词(外语歌带逐句翻译「原文 / 翻译」);AI 讲书时显示当前朗读句子(逐句滚动)。歌词/字幕显示在播放条频谱之后、时长之前,仅在闲置(控件组折叠)时展示,鼠标进入操作时自动收起;**AI 讲书还有一条「已读字符/全书字符」的全书进度细线**(按已读字数实时计算,不依赖合成时长,切块不回退,操作时再显示「N%」)
|
|
17
17
|
- 播放时申请屏幕唤醒锁,防止听歌时熄屏/休眠(支持 Wake Lock 的浏览器,如 Chrome/Edge)
|
|
18
18
|
- 播放列表面板可自由拖动,右下角可拖拽调整大小,位置与尺寸跨刷新记忆
|
|
19
19
|
- AI 讲书:本地 `.txt` / `.epub` 小说经 MiMo TTS 合成朗读,自动识别**书名/前言/章节/尾声**结构,播放条带**章节目录**跳转(打开即定位到当前正在播放的章节)、章节切歌,可选 4 种中文 AI 声音(默认白桦)
|
|
@@ -147,6 +147,7 @@ dsh plugin --profile <profile> add ./dsh-music-player-0.1.0.tgz
|
|
|
147
147
|
- **章节目录**(📖 按钮):自动识别全书结构(书名/前言/章节/尾声),点击弹出**位于按钮正上方**的目录(自动定位到当前正在播放的章节),点击任意章节即从该章开头朗读
|
|
148
148
|
- **后退 / 前进**:讲书模式下跳上一章 / 下一章(音乐模式下仍是上一首 / 下一首)
|
|
149
149
|
- **AI 声音**:点音量按钮,在弹层选择声音——冰糖(女)、茉莉(女)、苏打(男)、白桦(男,默认)
|
|
150
|
+
- **全书进度**:播放条底部有一条「已读字符/全书字符」的进度细线,操作时显示「N%」——按已读字数实时计算,无需先合成全书就能给出稳定的整体进度(切块不回退;字符量来自源文本,因此总长总是可知,而总时长得合成完才知道),刷新页面后也会立即恢复显示(无需先点播放)
|
|
150
151
|
4. 刷新页面后从上次位置续读(断点续播)。
|
|
151
152
|
|
|
152
153
|
支持的格式:
|
|
@@ -179,7 +180,7 @@ dsh plugin --profile <profile> add ./ # 或直接改 profile 里的 link 目
|
|
|
179
180
|
点面板顶部「选择音乐目录」,选一个包含音频文件的实际目录(默认 `~/Music`)。目录路径不可读或不存在时会回退到默认目录而不是报错。
|
|
180
181
|
|
|
181
182
|
**改了音乐目录/新增了歌曲,但列表没更新?**
|
|
182
|
-
|
|
183
|
+
播放器在启动时扫描一次,并支持手动重扫:点「选择音乐目录」旁边的新增 **「刷新」按钮**,会重新遍历当前目录并更新列表(音乐与小说通用;无需重选目录)。扫描上限 500 首、递归子目录深度上限 4 层。
|
|
183
184
|
|
|
184
185
|
**`music_play` 工具说"音乐库为空"?**
|
|
185
186
|
说明还没有可用的音乐目录。请先打开播放面板,点「选择音乐目录」配置一次。
|
|
@@ -193,6 +194,9 @@ AI 语音目前仅支持 xiaomi 提供方(限时免费)。请先在 DSH 模
|
|
|
193
194
|
**听书偶尔"没声音但时间还在走"?**
|
|
194
195
|
这种一般是某一段的合成结果异常(返回了退化/静音音频),或瞬时合成失败。0.3.3 起 Host 端会严格校验合成音频(拒绝空数据/非 PCM 等退化 WAV)并自动重试一次瞬时失败,同时把每次合成结果记录在诊断日志里。若再遇到,可访问 `http://<DSH地址>/dsh-music/tts-logs` 查看最近 60 条合成记录(含失败原因、退化音频事件),据此定位具体是哪个块出的问题。
|
|
195
196
|
|
|
197
|
+
**本地音乐没有 .lrc,歌词是怎么来的?**
|
|
198
|
+
播放器会**在线兜底取词**:先用文件名(可带歌手/时长)在 QQ 音乐匿名接口匹配官方歌词(外语歌带逐句翻译),QQ 无果再查 LRCLIB(免费公开歌词库,返回同步 LRC)。结果按曲目在进程内缓存(正命中 6 小时 / 空命中 30 分钟),避免重复请求;无匹配或失败时静默保持无歌词,不影响播放。歌词为版权内容,仅供个人试听。
|
|
199
|
+
|
|
196
200
|
**想支持更多音频格式?**
|
|
197
201
|
格式支持由 Host 端 `AUDIO_TYPES` 表驱动,在 `lib/index.js` 里加扩展名与 MIME 即可(播放器本身用浏览器原生 `<audio>` 解码,最终能否播放还取决于浏览器对该编码的支持)。
|
|
198
202
|
|