语音的问题(语音的保存,读取,播放。挂了三天啦,有请高手) (100分)

  • 主题发起人 主题发起人 kifo
  • 开始时间 开始时间
K

kifo

Unregistered / Unconfirmed
GUEST, unregistred user!
想做一个软件,主要实现以下功能:(学习类的)
读一个单词,听写,判断对错;
读一句话,听写,判断对错;
单词句子用真人语音录入,存于数据库或文件
问题:如果存于文件,上万条记语音编辑工作量太大,一个目录里装着有无问题呢;如果存于数据库,方案可
行吗?如何做?
回答时越详细越好。先谢了。
 
用微软的语音库了,网站上有sdk下载,去年春节时是5。0的现在不知道升级到什么版本了
 
这个主意不好。
这个软件可是给小孩子用的,用了微软的语音库谁知道会把他们教成哪国的英语呢。
 
我不知道如何判断对错。我只能告诉你保存文件到数据库,再从数据库中读出的办法。你可以试一试。
你读后将语音,保存成一个文件,以2进制的方式保存数据库,读出方式是将数据库中的字段保存成一个文件
,用播放软件播放就行了。
////保存
if OpenDialog1.Execute then
begin
datam.数据库.Active := true;
datam.数据库.Append;
datam.数据库语音.loadfromfile(OpenDialog1.FileName); /////写入数据库
datam.数据库.Post;
end;
////读出
datam.query.Active := false;
datam.query.SQL.clear;
datam.query.sql.Add(' select * from 数据库 where 条件 );
datam.query.Active := true;
datam.数据库语音.SaveToFile('c:/临时语音文件'); ///保存到临时文件
try
调用语音播放软件,播放临时文件
finally
end;

 
易虎,
谢啦。
关于读出,我是这样想的。好像输入一个单词,点"读"按钮,程序就读出这个单词的读音,当然,这个
读音是先存在数据库中的。
问题是,如果我调用其它程序,还不如将这个程序写入我的程序中了。那么我如何在我的程序中实现这
种功能呢?
 
我想你可以在数据库中查询出这个单词的记录,将声音字段保存到xx.wav文件(前提是你存进去的时候也是wav文件)
再利用 api 调用 playsound(pchar(路径名),0,snd_filename) 播放,不知可以吗。我调用过wav文件是可以的,别的不知道行不行。
 
用Microsoft Speech SDK不是很好嗎, 相關資料可以查閱MSDN.
 
不行啊,alextsui。
我是希望用教学用磁带的语音建库。
关键是如何规划与管理;
如何输出。
 
这种软件一般不用数据库,而是把所有语音存在一个或几个大文件里,然后做一个相应的
索引就可以了。
 
To LuJuhe,
你的主意很好。事实上我原来也有这种想法,只是我不知道实现的方法,能给我一个范例吗?
如果你觉得分不够,我可以在加些。谢谢。
 
不用数据库的好处是不需要数据库引擎,适用性很强。
我以前只做过中文TTS,语音库是按照中文内码排的,因此做起来比较方便,你用的是英文
单词,因此自己作索引工作量要大一些。数据结构学得好的话,因该问题也不大吧,就是
英文单词的排序和查找的问题。
 
To LuJuhe,
索引的方法我想能做到。只是我没做过关于语音的,能给我一个例子吗?
bbb-ccc@21cn.com
 
学学轻轻松松背单词的一些技巧
 
记录每个单词在语音文件中的时间位置,和长度。
播放的时候就从那个时间位置播放
 
我也想了个主意,往语音文件中插入标记。
可是我如何录制这种带标记的文件,又如何播放这种带标记的文件呢?
 
如存到数据库,最好格式转换成Base64
 
多人接受答案了。
 
后退
顶部