===========================================================================

基于讯飞语音识别技术开发提高学生口语的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,也可以开发手机应用(AndroidiOS。单纯展示了我们掌握的技术只要有志者继续完善和深入开发,一定可以达到商业级教学软件的程度。

欢迎通过以下方式联系开发者: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

 

 

 

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐