怎样实现在语音卡的基础上用delphi实现对文本形式的文件进行语音播放?(50分)

  • 主题发起人 主题发起人 loutian
  • 开始时间 开始时间
L

loutian

Unregistered / Unconfirmed
GUEST, unregistred user!
请指点一下
 
能指引一个方向吗
 
这个看语音卡厂商来定,不同厂商有不同的API函数,和编程语言倒是关系不大,因为多数
厂商提供的都是动态链接库,可以被多种编程语言调用。
要实现你的要求需要TTS(Text To Speech)卡,也叫语音合成卡,其功能就是将一段文字
识别为语音并播放出来。卡本身不是很贵,但相应的语音识别软件价格就很贵了好几万一
套,记不清了。
如果你只需要播报数字、金额等简单的信息,可以用语音文本拼接的办法,即每次放一个字
音,连起来播放就成一串数字了。
 
那照你的意思,我要实现对中文语音的文本文件的语音播放只能购买由语音卡厂家的语音合成卡
了,没有别的办法了吗
 
不用非用语音卡,参考金山词霸
 
能说的更清楚一些吗
 
我记得有的语音卡(像泰兴)提供语音库
 
Microsoft Text-to-speech Engine
微软的东西,不过我不知道它能不能朗读中文
 
我见过用语音库拼的,适用于任何可以放音的语音卡。
而且语音库也可以下载(杭州三汇)。
 
http://www.sinovoice.com.cn/index.asp
到这里看看,是不是有点用?
 
用SAPI吧,微软的,5.1可以朗读中文
 
谢谢你们的回复我用的是杭州三汇公司的语音卡,不错是可以用语音库拼的,可是我的内容
很多,而且改动机率还是比较高的,基于这样的情况,我想最好实现用文本的形式来改变内容
,这样方便修改,不用改内容的时候再去打开程序去修改程序,还有如果我要到某个数据库
中去查询数据,返回的数据流要以语音的形式输出,也就是动态输出语音,那该怎么实现呢
 
问题的关键是在于你想怎么播放声音?如果想在电话上播放的话,语音合成卡是必不可少的。
语音识别软件是不少,但光有软件,没有硬件的支持可不行。我跟东进打过交道,他们的
语音合成卡采用的是IBM的语音合成软件,卡本身不是很贵,但软件确实比较贵。
 
我是要在电话上播放,你的意思是我要买语音合成卡还要买语音合成软件了
 
给相关厂商打个电话就能问清楚了,而且他们会根据你的需求向你提供解决方案的建议。
 
用语音库拼,就是动态的呀。
思路如下:
function mytts(hzstr: string):integer;
对每一个字符,查找她在语音库中的起点和长度,读取语音,存入缓冲区。
然后把缓冲区的心号送入语音卡播放(内存放音方式),此法不依赖于语音卡,
效果也还不错,速度也能接受(我的PIII550,8路同时合成不同的语音,CPU
占用小于50%)
 
function mytts(hzstr: string):integer;这个函数是你自己定义的函数吧,对每一个字符,
查找她在语音库中的起点和长度,读取语音,存入缓冲区。然后把缓冲区的心号送入语音卡
播放(内存放音方式),这一段功能怎么实现自己编吗,怎么样的一个形式,我以前没有接
触过,能讲的具体点吗
 
语音库有两个文件,一个文件里是波形信号,按内码顺序排列,注意每个字的波形信号长度
可能不同,因此需要另一个索引文件,记录内码、起始位置、波形长度。

mytts的首要任务就是分析hzstr,把它们对应的波形数据找到并在内存中拼接,然后利用
所有语音卡都有的内存放音功能播放。
 
有function mytts(hzstr: string):integer 这个函数吗,是不是要自己编写的
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部