基于讯飞语音识别技术开发提高学生口语的Java程序
===========================================================================基于讯飞语音识别技术开发提高学生口语的Java程序cemike@126.com20180531=========================================================================== *.
===========================================================================
基于讯飞语音识别技术开发提高学生口语的Java程序
cemike@126.com 20180531
===========================================================================
* 程序介绍
在人工智能飞速发展的今天,教育管理机构、学校及教师已经不能只满足于“人肉机器”式的教学。我们应该充分利用现有的科技成果服务于我们的教学。
这里我们介绍利用讯飞语音的人工智能语音识别平台(免费),结合强大且免费的Java编程语言开发的具有自主知识产权且可高度定制的程序来提高学生的口语水平。
程序展示了两个小功能:
A. WordInMyMind猜单词游戏
类似于做单选选择题,但是必须通过语音接口来操作,也就是学生必须读出单词来做出选择。
B. 英文句子朗读过关游戏
将任意文本(如人教版高中英语选修8 Unit 3课文或任意一段)分析为句子。学生朗读句子。朗读正确的单词绿色标注,错误(未识别)的单词红色标注。比较原句与学生朗读句子的相似度(0~1.0),相似度大于等于0.8为通过标准(同时也是此句所得分数)。通过进入下一句,不通过继续朗读。所有句子朗读结束,显示结果报告。包括原句、学生所有尝试读出的句子(用|分隔)、得分等。
其中功能A不必以游戏的方式,也可以给出单词逐一朗读过关的方式;功能B的句子来源也可以来自数据库;二者均已实现,未在本文展示。
功能A脱胎于Hangman Game (参考https://baike.baidu.com/item/Hangman/9308312?fr=aladdin )。游戏还可以有其他玩法,完全取决于于编程者的创意。功能B类似于国内某高考口语软件提供的功能。但是该软件不是免费的,且价格不菲(上百元只能使用一个周期),而我们的软件是完全免费的。
我们程序展示的两个小功能已经达到完全实用的程度。但界面和操作都比较原始,目前是基于桌面电脑(Desktop),也可以开发手机应用(Android及iOS)。单纯展示了我们掌握的技术,只要有志者继续完善和深入开发,一定可以达到商业级教学软件的程度。
欢迎通过以下方式联系开发者:cemike@126.com
* 程序界面
A. WordInMyMind猜单词游戏
1. 选择要测试的单元,点击Game按钮
2. 每组显示三个单词,初始状态均为[未猜],学生通过读出(语音)单词来猜计算机选中的目标单词。
3. 如果讯飞语音识别出给定的三个单词之一,但不是目标单词,会在单词后方括号标注[猜错]。
4. 如果讯飞语音识别出给定的三个单词之一,而且是目标单词,会在单词后方括号标注[猜中],进入下一个单词猜测。
5. 每次猜对一词得一分,如果同一词三次猜错,本轮不得分,进入下一词。
6. 最后显示未猜对的此表。
B. 英文句子朗读过关游戏
1.打开要朗读的文本文件,如人教版高中英语选修8 Unit 3课文第一段。
2. 将文本分析为句子,可以选择拆分依据(句号,逗号,分号等)。选中要朗读的句子。
3. 单击Oral按钮, “测试列表来源” 选择 “资源编辑器” 。
4. 朗读界面上部显示要读的句子。下部显示讯飞语音识别出来的学生朗读的句子。
5. 朗读正确的单词绿色标注,错误(未识别)的单词红色标注。
6. 将原句与朗读句子比较相似度(0~1.0),相似度大于等于0.8为通过标准(同时也是此句所得分数)。通过进入下一句,不通过继续朗读。
7. 所有句子朗读结束,显示结果报告。包括原句、学生所有尝试读出的句子(用|分隔)、得分等。
* 技术要点
- 讯飞开放平台Java SDK http://www.xfyun.cn/sdk/dispatcher
- 语音合成技术
- Java 及Android编程
- 高考考纲单词数据库
* 开发日志
version 9.4 2018-05-31
--------------------------------------------
* 口语训练界面增加WordInMyMind猜单词游戏界面:“单词学习”界面》Game按钮。
* 每组n个单词,通过语音输入,猜出每组目标单词是哪一个;每组n-1次(包含)以内猜出单词为成功得1分;否则不得分。
* 借助讯飞语音识别功能,将用户口头输入转换成文本,然后与给出单词或句子比对,判断发音是否准确。参考:
org.cj.myword.ui.WordInMyMindPane
org.cj.myword.ui.LearningPane.doOralGame(final ArrayList<Word>, final int)
.createWordInMyMindView()
version 9.2 2018-04-07
--------------------------------------------
* 口语训练界面增加句子拼读功能。句子拼读每句显示得分(0.0-1.0),识别结果中分红绿色显示错误和正确单词(类似科大讯飞启明E听说),总得分以每句的得分累加。
首先在资源编辑器界面输入从数据库English表抽取句子的SQL,如:
SELECT * FROM english WHERE id>3204 and id<3208 ORDER BY id;
然后在“单词学习”界面》Oral按钮。来源下拉列表中选择“资源编辑器”即可。
参考:
org.cj.myword.ui.OralTrainingPane.check()
org.cj.myword.ui.OralTrainingPane.next()
org.cj.myword.ui.OralTrainingPane.recognizerListener.new RecognizerListener() {...}.onResult(...).new Runnable() {...}.run()
org.cj.myword.ui.OralTrainingPane.doQuizEnd()
* 句子拼读结束后特别以QuizItem方式显示详细报告。参考:
org.cj.myword.ui.OralTrainingPane.showOralTestReport()
org.cj.myword.ui.OralTrainingPane.createAndShowGUI(Container)
version 9.1 2018-04-01
--------------------------------------------
* 口语训练界面过滤掉带有标点符号的词语,参考:org.cj.myword.ui.OralTrainingPane.next()
* EnglightingPane界面CorrelationSet增加Sate状态筛选功能,参考:
org.cj.myword.ui.EnglightingPanel.setTableHeader()
org.cj.myword.ui.EnglightingPanel.customizeCellRendererAndEditor()
org.cj.myword.ui.EnglightingPanel.CheckBoxEditor
* “启发”界面“Graph”(图形)标签页创建的图增加单词的Usage节点,参考:
org.cj.myword.ui.EnglightingPanel.updateGraph(CorrelationSet)
* org.cj.myword.ui.LearningPane.saveLearningData(String, long, int)增加最后一个int mode参数;
并整理第一个参数String testName含义如下:
testName 类似VocabularyTest[M]-Book[N]-Unit[K]或VocabularyTest[M]-Book[N]-Unit[K]-review(错词复习)或SelectedWords(自定义单词表,通常为来自资源编辑器的单词)
* 其中[N]=Book;[K]=Unit;
* [M]与各种测试类型的对应关系如下:
* 1-org.cj.myword.ui.LearningPane.restartWithList(ArrayList<Word>) Language: Chinese - English
* 2-org.cj.myword.ui.LearningPane.restartWithList(ArrayList<Word>) Language: English - Chinese
* 3-org.cj.myword.ui.LearningPane.doSpellingWordTest(ArrayList<Word>) Language: Chinese - English
* 4-org.cj.myword.ui.LearningPane.doSpellingWordTest(ArrayList<Word>) Language: English - Chinese
* 5-org.cj.myword.ui.LearningPane.doWordMatchTest(ArrayList<Word>, int) Language: Chinese - English
* 6-org.cj.myword.ui.LearningPane.doWordMatchTest(ArrayList<Word>, int) Language: English - Chinese
* 7-org.cj.myword.ui.LearningPane.doContextQuiz(ArrayList<QuizItem>) 语境测试
* 8-org.cj.myword.ui.LearningPane.doOralTest(ArrayList<Word>, int) 单词拼读;
* 9-org.cj.myword.ui.LearningPane.doOralTest(ArrayList<Word>, int) 句子拼读;
version 9.0 2018-03-13
--------------------------------------------
* 增加“口语训练”功能。“单词学习”界面》Oral按钮。参考:
org.cj.myword.ui.OralTrainingPane
org.cj.myword.ui.LearningPane.doOralTest(ArrayList<Word>, int)
* 按钮声效播放参考:
org.cj.audio.TXWavPlayer
org.cj.myword.ui.OralTrainingPane.play(String)
* 依赖:
* 1. lib\Msc.jar;lib\json-jena-1.0.jar;
* 2. msc32.dll,msc64.dll,libmsc32.so,libmsc64.so
* 3. res目录
* 4. msc目录
* 5. src\com\iflytek\*源代码
* 6. 网络(在线语音识别)
* 7. 麦克风
* 联系开发者
cemike@126.com
更多推荐
所有评论(0)