【无标题】

文章目录

自定义词库的背单词助手------设计思路与实现要点

一、项目愿景

我想做一个小软件或工作流,一句话概括就是 "自定义词库的背单词助手"

核心功能:

  1. 导入自定义词库(先支持 md/txt/xlsx,后续再补充拍照识别等)
  2. 呈现单词读音(音标 + 音频)

二、MVP 数据流

整体处理流程如下:

复制代码
导入文件(md/txt/xlsx) → 解析成 [{word, 释义?}]
                ↓
         匹配 ECDICT → 补全音标、词频、词性
                ↓
    前端卡片展示:单词 + IPA + 🔊播放按钮
                ↓
      音频:点击→有道API→缓存到本地→播放

三、音频方案

  • 最终方向:在线优先,离线降级为本地
  • 初期开发:先依托在线拉取

四、交互形态

首选 卡片翻看模式

  • 正面:英文 + 音标 + 点击UI放音频
  • 反面:中文释义 + 相关用法

五、运行环境与演进愿景

  • 起步 :本地网页(uvicorn app:app --reload,访问 localhost:8000
  • 演进路线:本地网页 → 互联网网站 → 桌面独立程序 → 手机应用商城
  • 架构硬要求前后端彻底分离
    • 后端:纯 FastAPI,只吐 JSON 和音频
    • 前端:不依赖任何框架的静态页
  • 好处:一份核心代码,本地直接跑、部署上线、Tauri 套壳桌面端、Capacitor 打包 App,都无需改动

六、代码中的三个扩展点(来自 README)

  1. dict_lookup() ------ 可替换的词典核心。当前内置 8 个 demo 词,替换成 ECDICT 的 stardict.csv(77 万词,含 IPA、词频、词性,免费离线)只需改造这一个函数。
  2. /audio 接口 ------ 已做成"在线优先"代理结构。要加离线降级,只需在拉有道之前先查本地 cache/ 目录,命中即返回。
  3. next(known) ------ 间隔重复接入点。目前顺序翻页,接上 SM-2 算法即可拥有 Anki 式复习。


七、初期问题与解决方案

问题 1:后台没有词库,用户导入的是英文+中文释义

解决方案:释义以用户导入的为准,词典只兜底音标。

  • 用户导入 hydrogen 氢气,背面就显示"氢气"
  • 若只写单词没给释义,才去内置词典查;查不到则提示"在词库里给它加上释义即可显示"

输入格式设计------让用户怎么写都能解析

要求正则足够"灵活",自动识别分隔符。支持的写法:

复制代码
hydrogen 氢气
hydrogen = 氢气
hydrogen: 氢气
hydrogen | 氢气
hydrogen,氢气
hydrogen, 氢气
hydrogen	氢气    (Tab 分隔,xlsx 双列同理)
hydrogen氢气      (中英文连写)
carbon dioxide 二氧化碳  (带空格的词组)

解析规则:第一段连续英文是单词,遇到第一个分隔符或第一个中文字符时,后面全算释义。这样用户几乎不用记格式。

问题 2:希望支持 .docx 文件

解决方案 :直接加解析分支,用 python-docx 读取段落文本和表格。

问题 3:点击音频播放键有 2~3 秒延迟

原因 :每次点击才去远端拉取音频,存在网络往返耗时。

解决办法(两层叠加):

  1. 前端预取:渲染当前卡片时,在后台提前请求下一张卡片的音频
  2. 后端加本地缓存/audio 接口先把有道返回的 mp3 存入 cache/ 目录,第二次听同一个词直接返回本地文件,秒开

这样,第一次听某个词仍需在线等待,但后续全程无延迟。同时,cache/ 目录里的 mp3 断网也能播放,实现了"在线优先、离线降级"的第一步。

八、运行与使用

安装依赖后启动即可:

bash 复制代码
pip install -r requirements.txt
uvicorn app:app --reload

浏览器打开 localhost:8000,把单词文件拖进去就行。

依赖说明:相比最初版本,增加了 python-docx 用于解析 Word 文档。

相关推荐
郝学胜-神的一滴8 小时前
Python 高级编程 026:内置数据结构之骈文纵论
开发语言·数据结构·python·程序人生·软件工程
Mh14 小时前
别再只会 `find` 了:Map 在前端业务里的真实用法
前端·javascript
DLYSB_14 小时前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
陈随易14 小时前
FFmpeg 9.0 发布,代号 Lei,音视频处理再升级
前端·后端·程序员
阿童木写作15 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
爱丶狸15 小时前
Grafana_Zabbix_ImageRenderer_部署与前端操作手册
linux·前端·zabbix·grafana·kylin
阿童木写作16 小时前
Python实现Temu图片批量翻译自动化教程
运维·人工智能·python·自动化
就是一只白18 小时前
复制地理信息python版本
python
看浪的路人18 小时前
第1讲:Agent 到底是什么?和 Chatbot 有什么区别
python·ai
用户0595401744618 小时前
把AI对话记忆存储测试从手工改成Playwright+pytest,覆盖率从20%提到96%,回归时间缩短90%
前端·css