毕业设计日志

GAEWave0123 gaeinjava 5 加入了applet

 

2009/12/27 昨天把SphinxEclipse下的整个环境差不多弄好了,之前也把GAEEclipse下开发的环境弄好了。今天就开始看Sphinx in details.

 

2010/1/3 新年快乐,新年初始发生了不少事情,做了个不算小的决定。嗯,应该是正确的。开开心心安安静静的做毕业设计吧。

 

2010/1/4 新建一个工程,然后把Sphinx的一个demo导入,再修改config.xmljsgfGrammargrammarLocation value=”resource:/HelloDigits” 程序就可正常运行,但不知道为什么自己建的一个工程就不行,报gram缺少self-identifierwarning

 

2010/1/8 Eclipse中新建一个工程,对一个wave文件进行识别,输出文本。翻译Sphinx-4白皮书。

 

2010/1/11 1/8的指导下构建了GAEWave工程,但有错,明天再来看吧。休息,休息一下。

 

2010/1/13 javax.sound.sampled GAE不支持,尝试自己构建javax.sound.sampled源代码包

 

2010/1/14 config.xmlURLEclipse下模拟的开发环境下获取成功,cm ( Configuration Manager ) 也初始化成功。但现在有个问题就是在cm.lookup()中,FlatLinguist那里出错,然后出现javax.speech.recognition.GrammarException异常。以前在Java App里面遇到的找不到jsgf fiel: digits.gram 是在PropertySheet.java 280ps.getOwner()触发的,现在是在278cm.getPropertySheet(flattenProp(name))触发的,所以应该不是digits.gramconfig.xml中的位置不对造成的。

明天还可以把,config.xmlURLGAE上显示出来,看是啥样。

 

2010/1/15 config.xmlURL在真实的GAE上显示还没做。今天解决了昨天的问题,还好,见笔记本。接着的问题是FlastLinguist.allocate的时候,当调用到ModelLoader.java中的readS3BinaryHeader(path, props),path的值是data/means,但根据这个path得到的inputStreamnull,然后跑出了异常。明天调查这个问题。

明天看看在Applicationpath是什么值。

 

2010/1/17 StreamDataSource替换AudioFileDataSource成功回避了javas.sound.sampled。但结果有错,明天看bbs上的人怎么回应。

 

2010/1/19 昨天有了小进步,成功在GAE上实现wave文件的识别。今天跑了那个SpeechCloud的开源工程,知道了他的参数怎么用,但服务器返回有错,先看看他的代码吧。然后Sphinx白皮书在看看。

值得担忧的是,如果没有现成的中文JSGFDictionary我就囧了。

 

2010/1/21 我现在的工作是如何实现Local AppServer App的通信。好像要用到URLConnection, 要快速稳定的通信,还有可能VoIP。但我的瓶颈是在于GAE始终是单线程的,不管是传一个文件过去,还是一个Stream的一部分,都要最后结果出来了,才能去获取新的输入,因为最后的 应用希望系统有即时的反馈,所以也不能说发一大段数据过去在服务器上缓存起来。发了一个邮件给sourceforge上的SpencerHttpRecoginzer的源代码,先看看他是怎么做的吧。

 

2010/1/23

ClientServer之间传一个String成功了,但传wav文件没成功,纠结在几个Stream的转换中.今天有点脾气,可能是因为工作不顺利的原因,原本有的自信和骄傲都没了。没事,静下心来,淡然处之。也有可能只是因为昨天晚上失眠了。我最近思考的问题是,到底什么是我喜欢做的和能做的呢?

 

FileOutputStream new 出来的ObjectOutputStream 在服务器抛EOF异常。

 

不错, bayt[] 做中间转化,目前为止所有关于Stream的问题都得到了解决。

 

成功在localhost localapp之间是实现了wav文件的传递并返回识别结果。Good boy,这至少又是一个10%

 

接下来: 1 Firefox插件开发。 2Sphinx4复杂化。

 

在网上看见一个叫玻璃盒子的博客,其中有记录它的主人开发Firefox Extension Plugin的过程,那人先准备开发Extension后来发现Extension完成不了他想要的功能,于是又看了Plugin的开发,呵呵,我就跟随他的路径吧,希望能少走弯路。

 

然后我看了他的日志语言,觉得他应该也是一边开发一边做的记录。我也就把这篇工作日志先当做我的工作微博用吧,呵呵。开始吧。先完成Firefox插件开发。Sphinx4的复杂化,估计比较困难,可以一边写文章,一边做。

 

Decision made. 放弃Firefox插件开发。1,没有录音的任何资料2servlet通信又是另外的框架,3,这不是重点。

 

applet 代替。

 

2010/1/24 applet也成功运行,对jar进行签名后也能访问本地文件,至少是jar包中的文件,问题是目前IEChrome都没有结果反馈,不知道什么原因。Firefox下,目前貌似一切是正常的,不管了,接下来的工作是用applet获取Microphone,得到wave文件。这个工作量还挺大的,也很多细节要考虑,噪音,录音质量,断电判断,多长的录音断成一个wav文件。

 

2010/1/29 25号,星期一看AVATAR那天,接到周四去面试后,周二,周三,我的毕业设计就暂停了。今天面好回来,继续,晚上解决了一个根本原因是wav file 没找到的问题。有几点疑惑之处得到了解决。1,浏览器一定要重启才会重新load新的applet,经验告诉我Firefox有的时候会抽筋,即使重启也不重新load,甚至有时不光不load applet,连网页也不load2,我一开始以为是appletinitstart没有执行,后来debug才发现其实是try catch里面出现了异常,就是new file那里,然后后面的代码就不执行了。嗯,暂时用电脑上的绝对路径回避了这个问题,毕竟我并不需要一定要获取jar包里面的文件。接下来就是microphoneSphinx升级了。

 

2010/2/4 JMFdataSource获取不到ByteStream。可能JMF就不能用了。还是研究SphinxMicrophone类吧。

 

2010/2/5 SphinxMicrophone也没搞清楚,后来在网上搜到了一段从MicrophoneByteArrayOutputStream的代码,移植到了我原来的程序,建立了一个可以和Server通信的AppApplication0204Server端还是GAEWave0123。接下来在研究下Sphinx升级识别算法。在回来看客户端怎么个互动。

 

2010/2/7 重新看了一遍白皮书,Decoder部分没看得懂。LinguistFrontEnd都看懂了。有一点是肯定的,要想顺利的通过答辩,支持对中文的识别是必须的。这样我就必须去看怎么形成中文的AcousticModelDictionaryLanguageModel。去看吧。好像Decoder是和具体的某个语言没有关系的,他只用特征和SearchGraph。训练部分就是在Linguist中完成的吧。如何训练中文的,这些都可以写到我的论文当中。

 

2010/2/8 刚下的中文声学模型并不仅在Eclipse中打不开,用其他的文本编辑器打开也是乱码。

 

2010/2/10 今天开始学SphinxTrain,他要自己编译Train的程序,Cygwinconfigure和编译环境搞了我很长时间,一方面是网速奇慢,后来还好找到了一个中国的景象。一方面是不熟悉这套东西。嗯,继续看。然后开始写论文的其它部分了。

 

2010/2/14 弄了VMWareUbuntu来弄SphinxTrain。跟着那个Tutorail做的时候出了错,也看不懂到底出在了什么地方,于是开始搜论坛,看材料。关于Sph,例子中的语音文件时sph格式,根据论坛上的帖子,可以用sox转化成wav,如果我是wav也可以转换成sph。但这是不需要的,可以更改etc/sphinx_train.cfg里面的设置:

$CFG_WAVFILE_EXTENSION = 'wav';
$CFG_WAVFILE_TYPE = 'mswav'; # one of nist, mswav, raw

来使用wav文件。

但我现在始终都没弄清楚wav文件是怎么和dicitionarylanguage model等联系起来,是怎么使用的。transcription.

 

2010/2/15 各个声学模型中的那些什么classloader之类的源码都是一样的,只要声学模型不一样就行了,嗯,modularity, good.

 

2010/2/21 perlmodule00ctl应该是fileids文件。找到了一个调试训练出错的办法,以提示语言去perl代码中去搜索,perl的大意能看懂。

Dictionary中的SIL是干嘛的?怎么用的?

 

2010/2/21 Windows下的回车和Linux下的回车不一样这件事把我玩弄了一两下,一是莫名的说我多出来空格,一说我莫名的找不到mfc文件。还好训练完成。接下来就看训练出来的声学模型能不能用了。

 

2010/2/25 要按下载的sphinx中的文档使用acoustic model,网页上的那个不适合我现在的beta3版本。运用了我在家训练好的模型后,没有什么输出,应该问题是出在模型上面。明天再看看。

 

2010/3/10 下次训练除了按照论坛上给出的建议修改外,别忘了还要提取一遍特征。就此一次了。还有那个mdef还是用model.architectue下的mdef吧。在仔细读读那个How to decode How to train。还要确认字典等文件的名字和train.cfg文件中的一致。

posted @ 2010-04-01 23:33  Rossi  阅读(1711)  评论(1编辑  收藏  举报