我开源了一个英语听说学习工具!

Keywords: #技术 #学习 #Python #英语
Release Date: 2025-08-07
Table of Contents

我开源了一个英语听说学习工具!名叫「听句 TingJu」,它通过将输入英文文章生成逐句🌐翻译与🎵音频,从而帮助用户进行📖阅读、🎧听写和🔊发音练习。

🌟 简介

听句 TingJu」是一个专为英语学习者设计的听说训练工具。通过智能文本处理、精准翻译和高质量语音合成技术,帮助用户提升英语听说能力。

image.png

🚀 功能特性:

  • 📂 多种格式:支持 PDF、TXT、DOCX、XLSX、PPTX 等多种文档格式
  • ✂️ 智能分句:使用 NLP 自然语言处理技术,根据语义和语法规则进行精准分句
  • 🌐 双语对照:调用多种翻译引擎(Bing、百度、有道等)生成准确翻译
  • 🔊 标准发音:使用 Microsoft Edge 官方英文音色,还原地道英文发音
  • 🎧 句子听写:支持句子听写功能,隐藏英文与翻译,练习英语听力
  • 📤 离线使用:支持导出内容,在手机电脑平板上随时随地英语听句
  • 🎨 多种主题:内置多种颜色和字体主题,换个主题,换个心情

具体内容可在 GitHub 仓库主页中获取。

👉 下载链接:Release 页面

💻 桌面端使用

Release 页面下载最新版压缩包📦,解压并双击运行 TingJu 可执行文件。TingJu 会在 2 秒后自动打开默认浏览器📑,即可开始使用。若未自动打开浏览器,请手动打开浏览器访问 http://127.0.0.1:51122

TingJu 会自动弹出一个🖥️终端命令行,请不要关闭这个命令行终端,你可以通过这个终端查看实时的📄日志信息,了解系统正在运行什么步骤,以及出现了哪些警告和错误。

在 TingJu 的运行目录下的 logs/TingJu.log 文件中,你可以查看所有的运行日志信息。

上传界面

image.png

进入上传界面,上方是工具的介绍信息,下方是📁文件选择框,你可以点击“选择文件”按钮或🖱️拖拽上传支持格式的英文文档,也可以点击✍️“手动填写”直接输入英文文本。

选择成功后,“选择文件”按钮下方会出现你选择的📝文件名,检查上传的文件是否正确 👀,再点击“上传识别”按钮,即可开始解析识别文本。

如果你选择了“手动填写”,则会直接进入下一步 ➡️。

编辑文本界面

image.png

在这个页面中,上方的文本框展示了文档解析识别的结果,其结果自动去除了换行符,使其整理成一整段文字,你需要仔细检查其中的识别结果是否正确无误,避免影响到后续🌐翻译和🔊发音的效果。

如果在上一个界面 ⬅️,你选择了✍️“手动填写”,这个文本框将是空白的,你需要手动填写或者📋复制英文内容。

你可以不考虑分段和分句等格式问题,因为工具会自动处理,你唯一需要注意的问题就是内容是否完全正确无误✅,并且语法没有错误(包括英文符号后的一个空格)🧐。

下方是选择音色的选择框👇,你可以参考音色风格🎶,根据喜好选择一个合适的音色❤️。

以上工作完成后,就可以点击“确认生成”按钮。这时工具会全力为你生成对应的翻译和音频文件,⏳生成时长与文本长短和网络情况有关。

生成时长参考:一篇 500 字左右的英文文章,生成时间大约为 45

听读模式

image.png

生成成功后,会自动进入结果展示页面的📖听读模式。你可以在这个模式下进行,中英文对照,收听发音音频🔊,并跟读句子,完成逐句的学习🎯。

学习完成后✅,你会在页面的底部发现两个按钮👇,点击“学新内容”按钮会返回最开始的界面,你可以上传或填写新的英文内容,生成新的📚学习材料。

点击✒“听写模式”按钮,会进入听写界面。

听写模式

image.png

在听写界面中,英文句子和翻译被模糊隐藏,音频上方多了一个输入框 ⌨️。你可以收听对应句子的音频🔊,在输入框中听写句子。

遇到听写困难时🤔,可以将鼠标悬浮在翻译或英文句子上方 🖱️,这将会暂时显示翻译和原文 👀,为听写提供一些提示💡。

当输入框中的句子填写完成✅正确时,输入框将会以💚绿色显示,代表听写正确,与此同时,原文和翻译解除模糊。

当学习完成后🏆,你将会在页面底部发现两个按钮👇,一个是🗑️“清空听写”按钮,点击它会清空上方所有输入的文本,并再次隐藏原文和翻译,你可以🔁反复进行听写练习,不断提升听力能力💪。

点击📖“听读模式”按钮,则会回到最初始的听读模式界面。

主题设置

image.png

在学习页面的分别有主题字体的切换按钮。

🎨主题颜色样式有:晴空、云海、春野、桃夭、暮灰、紫霭。

📝字体样式有:Source Sans、Source Serif、Arvo、Outfit、Nunito、Bree-Serif。

当学习枯燥乏味时,尝试换个喜欢的主题和字体,换个的💖心情,接着学习。

如果你有一定的前端基础,也可以通过编写 static/css/theme.css 文件,添加自定义颜色或字体样式,并添加到 results.html 中的 tools-group,完成主题自定义。

导出内容

image.png

在学习页面右上角,有一个📥“导出”按钮,点击该按钮,会将学习页面导出为📴离线版本,这样下次接着学习或复习时,就不需要再次识别、翻译并发音了,⚡️减少了生成等待的时间。

导出的页面会存放在 TingJu 运行目录下的 exports/ 目录📁中,并以 TingJu_YYYY-MM-dd_HH-mm-ss 命名🏷️文件夹,目录结构如下:

TingJu_2025-08-05_20-46-20/
├─── index.html
├─── audios
│    └───51b02a47
├─── css
├─── img
└─── js

你可以将这个离线文件夹移动到任意位置,甚至是其他设备中💻📱。需要学习时,只需要使用浏览器打开 index.html 文件(可以直接双击🖱️选择浏览器打开)即可开始学习。

💡该离线版本可以完全离线运行,其中包含了所有需要的静态文件。

但是由于字体是通过 Google API 在线🌐获取,因此当你完全没有🚫网络链接时,字体样式可能无法显示。不过这并不影响其他功能的使用👌。

结束学习

学习结束后,只需要直接关闭命令行终端,或者在终端中使用 CTRL + C 快捷键即可关闭 TingJu 服务,并且它会自动清理产生的临时文件。

📱 移动端使用

Release 页面下载的最新版压缩包📦中的可执行文件,只能在桌面端运行。但是移动端仍然有两个方法可以使用 TingJu 服务。

  1. 🌐局域网在线访问:可以通过 TingJu 对外暴露的端口,在同一局域网中使用服务。
  2. 📲 导出离线使用:通过导出离线版本,将其复制到移动端进行服务的使用。

在线使用

对于第一种方法,具体来说,TingJu 服务在启动时会在不同的网卡上进行监听,你可以在启动的命令行终端中获取相应的信息。

image.png

比如移动端和桌面端在同一局域网中,网段为 192.168.1.1/24 ,那么移动端就可以在浏览器输入网址 http://192.168.1.3:51122 来访问 TingJu 服务。

image.png

📱移动端上的功能与💻桌面端功能完全一致,同样可以上传手机平板中的📄文档,完成识别翻译发音等操作。唯一需要注意的是,在移动端点击导出按钮,其导出的文件夹依然是保存到桌面端的运行目录下,而不是手机中。

如果你的移动设备无法通过局域网 IP 和端口来访问 TingJu 服务,这可能是因为🔥防火墙阻止了连接,这需要你在桌面设备中开放防火墙 51122 入站端口

  1. Windows 用户

使用 PowerShell 管理员权限运行:

New-NetFirewallRule -DisplayName "TingJu-51122" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 51122 -Profile Any -Enabled True

或者 CMD 管理员权限运行:

netsh advfirewall firewall add rule name="TingJu-51122" dir=in action=allow protocol=TCP localport=51122 profile=any enable=yes
  1. Linux 用户:

如果启用 UFW:

sudo ufw allow 51122/tcp

或者使用 firewalld:

sudo firewall-cmd --permanent --add-port=51122/tcp
sudo firewall-cmd --reload
  1. MacOS 用户

先检查是否已开启系统防火墙:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

如果已开启,最简单的方法是在“系统设置 → 网络 → 防火墙 → 选项”里把 TingJu 应用加入“允许传入连接”

以上为 AI 生成的命令与方法,Windows 已验证,Linux 和 MacOS 均需自行验证,或者自行搜索各自设备开放端口的操作。

离线使用

通过桌面端服务,将生成后的内容导出为离线版,然后传输到移动端,同样可以让移动端使用 TingJu 服务。

但是由于手机系统的安全限制,文件无法通过正常路径被调用,如果直接通过浏览器打开 index.html 文件,其中的 css、js 以及音频等静态文件均无法成功加载,如下图所示:

image.png

为了解决这个问题,我们可以在移动端启动一个 http 服务器,通过服务器来访问这些文件。

下面以 Android 端为例。

我们可以在应用商店下载一个叫 Simple HTTP Server 的应用(其他 HTTP Server 应用也是类似的原理)。

image.png

打开应用,点击 Files 选择,选中我们导出的文件夹,比如 TingJu_2025_08_07_00_29_12/,点击下方的 SELECT THIS FOLDER按钮,完成选择。

image.png

image.png

最后点击 START 按钮启动服务,点击 URL: http://192.168.1.5:8080,选择 Navigate 浏览器打开即可正常访问页面。

image.png

其他系统的移动端可自行搜索 HTTP Server 应用,原理基本一致。

📄 许可证

本项目采用 AGPL 许可证。详情请见 LICENSE 文件。

🙏 致谢

感谢本项目中所使用的开源项目:

  • 后端框架FastAPI - 现代、快速(高性能)的 Python Web 框架
  • TTS 引擎edge-tts - Microsoft Edge TTS 的 Python 接口
  • 文本处理NLTK - 自然语言处理工具包
  • 翻译服务translators - 多平台翻译库
  • 文档处理PyMuPDF - PDF 和文档处理库
  • 模板引擎Jinja2 - 现代和设计友好的 Python 模板引擎

📧 联系方式