当前位置: 首页 > news >正文

记录开发一个英语听力训练网站

背景

在当前全球经济衰退的背景下,IT相关的工作在国内的竞争也是越来越激烈,为了能够获得更多的可能性,英语的学习也许能为程序员打开一扇新的窗户,比如很多远程的工作尤其是国际化背景的工作团队,英语的协作沟通是必不可少的。事实上,我们大多数人从小到大一直都在学习英语,虽然可能在工作中用到的场景并不多,但是多多少少还是有一些英语底子的,比如一些基本的词汇量、语法知识等。但是听力和口语确确实实用到的不多,自然而然也就是听说读写中最为薄弱的两项。为了更好的练习英语听力,我花了两周的时间开发了一个适合精听的网站。作为阶段性总结,想要将用到的技术在这里做一个梳理和分享。

主要技术

前端

HTML、CSS、jQuery、JavaScript、Bootstrap

因为项目比较小,没有采用前后端分离的架构,用的是比较轻量级的框架Bootstrap,然后结合简单的jQuery、JavaScript实现。

后端

Java、SpringBoot、Maven

后端使用比较普遍的SpringBoot结合Maven快速搭建主体框架,事实上后端也相当的“轻量”,因为事实上只是一个学习工具网站,比较简单,也没有做用户体系登录什么的,所以后端其实没什么代码。

对象存储

阿里云OSS

听力音频文件和字幕文件是放在OSS服务器上。

音频转字幕实现

CMUSphinx、Vosk、Buzz

CMUSphinx和Vosk是接入程序代码实现,CMUSphinx体验下来识别率不高,比较旧。
Vosk识别率还可以,英文的模型有简单的、占用内存少的和更完整的、占用内存多的两种,采样率可能需要做一些调整根据不同的文件。Buzz是一款电脑上运行的软件,识别率最高,其中一个模型是OpenAI的Whisper,过程也非常耗时,支持导出字幕。
相关资料:
- https://cmusphinx.github.io/wiki/tutorialsphinx4
- https://alphacephei.com/vosk/server
- https://github.com/chidiwilliams/buzz

字幕编辑工具

Aegisub

Aegisub也是一款本地运行的软件,用来后期编辑字幕,需要导入srt格式的字幕文件。相关资料:https://aegisub.org/downloads

网站介绍

目前只导入了雅思历年真题的听力音频,作为我日常练习英语听力的素材足够了。网站的主要功能其实就是英语句子精听,核心目的就是反复听每一句话,直到听懂为止,我觉得听力训练也没有太多技巧可言,就是老老实实地坚持去听,所谓网上经常说的“磨耳朵”吧。基于此,听力页面主要功能有:播放/暂停、上一句/下一句、播放次数选择、播放倍速选择、字体大小选择、是否显示原文、是否显示译文、是否自动播放下一句。而这些功能,基本上都是页面js操作。
在这里插入图片描述

结束

目前刚刚开发完成上线,我自己正在试用阶段,如果你对这个网站感兴趣,请给我留言,或者发邮件到smartwork.no996@gmail.com,参与内测试用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 定制相亲交友系统如何提升用户体验
  • 如何利用人工智能大模型来进行数字化营销?
  • 面试题篇: 跨域问题如何处理(Java和Nginx处理方式)
  • Cesium 获取BBOX
  • Matlab求解微分方程(解析解与数值解)
  • Brave编译指南2024 Windows篇:安装Git(四)
  • UE-- 引入IOS framework 库 真机运行闪退
  • OPENAIGC开发者大赛企业组钻石奖 | AI For 3D Generation
  • navicate远程linux上的pgsql提示密码失败
  • 1. 运动控制指令概要(omron 机器自动化控制器)
  • TiDB 扩容过程中 PD 生成调度的原理及常见问题丨TiDB 扩缩容指南(一)
  • 代数模型(Algebraic Models)---线性规划------ + 案例 + Python源码求解(见文中)
  • 【已解决】请教 “Sa-Token 集成 xxl-job,报错:非 web 上下文无法获取 HttpServletRequest” 如何解决
  • go语言开发windows抓包工具
  • Oracle发送邮件功能:配置自动化发信指南?
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [NodeJS] 关于Buffer
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Java编程基础24——递归练习
  • java中具有继承关系的类及其对象初始化顺序
  • leetcode388. Longest Absolute File Path
  • LintCode 31. partitionArray 数组划分
  • Mybatis初体验
  • nginx 负载服务器优化
  • React as a UI Runtime(五、列表)
  • Spark RDD学习: aggregate函数
  • 动态规划入门(以爬楼梯为例)
  • 批量截取pdf文件
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 译米田引理
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​configparser --- 配置文件解析器​
  • #define 用法
  • #pragam once 和 #ifndef 预编译头
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (九)c52学习之旅-定时器
  • (四) Graphivz 颜色选择
  • (学习总结16)C++模版2
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)树状数组
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .cfg\.dat\.mak(持续补充)
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core 外观者设计模式 实现,多种支付选择
  • .net wcf memory gates checking failed
  • .Net 代码性能 - (1)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)