简单问题:朗读数字(在线等待)(100分)

  • 主题发起人 主题发起人 ityaa
  • 开始时间 开始时间
I

ityaa

Unregistered / Unconfirmed
GUEST, unregistred user!
想作一个语音计算器,0-9的数字语音文件分别是0.wav-9.wav,通过sndplaysound函数,程序中有一个EDIT组件,其TEXT属性为“348”,如何编码将其读出
 
在输入的时候就提示声音
procedure TForm1.Edit1KeyUp(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin

if key in [ord('0')..ord('9')] then

sndplaysound(Pchar('c:/'+char(key)+'.wav'),SND_SYNC)
else
key:=0;
end;

如果只是提示结果的话可以从Edit中取出字符匹配,分别发3、4、8
 
还可以朗读 MP3
 
我的意思是:比如按一个按钮后,直接读EDIT中的数字“348”,曾考虑用循环来提取各个数字,但似乎只能读最后一个。
 
Var
i,j : integer ;
t : String ;
begin

j := length(edit1.text) ;
t := edit1.text ;
for i:=1 to jdo

sndplaysound(t,SND_SYNC)
end ;
 
to mstar:
这种方法我已经试过,只能读最后一个数字
 
先将声音合并后在读
 
建议你将WAV文件做成资源文件,直接编译到EXE文件中。
我开发过一个语音计算器,源代码可以送给你一份,请留下Email。
 
。。。。。。。。。。。。。
playsound(Pchar('1.wav'),0,SND_SYNC);
playsound(Pchar('2.wav'),0,SND_SYNC);
playsound(Pchar('3.wav'),0,SND_SYNC);
playsound(Pchar('4.wav'),0,SND_SYNC);
playsound(Pchar('5.wav'),0,SND_SYNC);
playsound(Pchar('6.wav'),0,SND_SYNC);
。。。。。。。。。
上面我试验过了是可以的,另外要在 uses 加 MMSYSTEM 。
 
补充一下,语音计算器源码没有找到
请使用下面的语句:

PlaySound(Pchar('h:/1.wav'), 0, SND_ASYNC and SND_FILENAME);
PlaySound(Pchar('h:/2.wav'), 0, SND_ASYNC and SND_FILENAME);
在 uses 加 MMSYSTEM 。
 
多人接受答案了。
 
后退
顶部