Type
Bug
现象
桌面端使用 DashScope 引擎朗读时,每两句之间会有一个短暂的「哒哒」爆音(类似咔哒/爆破声),影响连续朗读的听感。
复现步骤
- 配置 DashScope,打开一本书,朗读一段多句文本;
- 仔细听句子与句子的衔接处;
- 观察:句间出现短暂「哒哒」爆音。
可核实的代码事实(仅供定位)
DashScope 每句是一次独立的 qwen3-tts-flash 合成,得到的 PCM 被逐段排进 Web Audio 时间轴(tts-players.ts 的 flushPendingBytes → source.start(startAt),startAt = max(ctx.currentTime, scheduledEnd),首尾相接)。爆音的两个可能来源:
- 接缝不连续(主因可能):相邻两句是各自独立合成的 PCM,衔接处波形不连续(起止振幅不为 0、无淡入淡出)时,硬拼接就会产生「哒哒」声;
- 奇数字节被丢弃(可核实的代码缺陷):
flushPendingBytes 中 const numSamples = Math.floor(merged.length / 2),若某次合并的字节数为奇数,末尾半个样本的那个字节被直接丢弃且未结转到下次(pendingBytes 已清空),在该 flush/句子接缝处可能引入一次微小不连续 → 爆音。
可能的修复方向(仅建议)
- 在缓冲块/句子接缝处做几毫秒的淡入淡出或对齐零点,消除硬拼接的不连续;
- 修正奇数字节处理:把无法凑成完整 16-bit 样本的尾字节结转到下一次 flush,而不是丢弃,避免样本错位/不连续。
注:此为音频拼接层面的独立问题,与朗读的暂停/继续、引擎切换(#349)、进度同步(#358)均无关。
设备
- Platform: Desktop (Windows), Tauri
- App: v1.3.2
- Locale: zh-CN
- Engine: DashScope (qwen3-tts-flash)
Type
Bug
现象
桌面端使用 DashScope 引擎朗读时,每两句之间会有一个短暂的「哒哒」爆音(类似咔哒/爆破声),影响连续朗读的听感。
复现步骤
可核实的代码事实(仅供定位)
DashScope 每句是一次独立的
qwen3-tts-flash合成,得到的 PCM 被逐段排进 Web Audio 时间轴(tts-players.ts的flushPendingBytes→source.start(startAt),startAt = max(ctx.currentTime, scheduledEnd),首尾相接)。爆音的两个可能来源:flushPendingBytes中const numSamples = Math.floor(merged.length / 2),若某次合并的字节数为奇数,末尾半个样本的那个字节被直接丢弃且未结转到下次(pendingBytes已清空),在该 flush/句子接缝处可能引入一次微小不连续 → 爆音。可能的修复方向(仅建议)
设备