1. uVar.pas单元如下

unit uVar;interfaceusesSysUtils, Forms;typeTAppPara = classpublicclass function AppPath: string;class function AppName: string;end;TFilePath = class(TAppPara)publicclass function VoicePath: string;end;implementation{ TFilePath }class function TFilePath.VoicePath: string;
beginResult := AppPath + 'voice\';
end;{ TAppPara }class function TAppPara.AppName: string;
beginResult := ExtractFileName(Application.ExeName);
end;class function TAppPara.AppPath: string;
beginResult := ExtractFilePath(Application.ExeName);
end;end.

2. uVoice.pas单元如下

unit uVoice;interfaceusesSysUtils, MMSystem;constFileExt= '.wav';type//播放wav文件TVoice= classprivateFFilePath: string;      //wav文件目录publicproperty _FilePath: string read FFilePath write FFilePath;constructor Create(sPath: string);destructor Destroy; override;function Play(sFile: string): Boolean;end;implementation{ TVoice }constructor TVoice.Create(sPath: string);
beginFFilePath:= sPath;
end;destructor TVoice.Destroy;
begininherited;
end;function TVoice.Play(sFile: string): Boolean;
varfilename: string;
beginResult:= False;tryfilename:= FFilePath+ sFile+ FileExt;if FileExists(filename) thenResult:= sndPlaySound(PChar(filename), SND_NODEFAULT+ SND_ASYNC);{SND_ASYNC        用异步方式播放声音SND_LOOP         播放载入到内存中的声音SND_MEMORY       播放载入到内存中的声音SND_NODEFAULT    不播放缺省声音SND_NOWAIT       如果驱动程序正忙则函数就不播放声音并立即返回SND_PURGE        停止所有的声音SND_SYNC         同步播放声音,在播放完后PlaySound函数才返回}finally//end;
end;end.

3. uFrmMain.pas如下

unit uFrmMain;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, OleServer, SpeechLib_TLB, StdCtrls, uVoice;typeTFrmMain = class(TForm)Button1: TButton;Button2: TButton;Label1: TLabel;Edit1: TEdit;SpVoice1: TSpVoice;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);private{ Private declarations }FVoice: TVoice;public{ Public declarations }end;varFrmMain: TFrmMain;implementationuses uVar;{$R *.dfm}procedure TFrmMain.Button1Click(Sender: TObject);
varsName: string;
begin//语音文件名sName:= '欢迎光临';if Assigned(FVoice) thenFVoice.Play(sName);
end;procedure TFrmMain.Button2Click(Sender: TObject);
varsName: string;
begin//可能有问题
//  sName:= Trim(Edit1.Text);
//  SpVoice1.Speak(sName, SVSFlagsAsync);
end;procedure TFrmMain.FormCreate(Sender: TObject);
beginFVoice:= TVoice.Create(TFilePath.VoicePath);
end;procedure TFrmMain.FormDestroy(Sender: TObject);
beginFreeAndNil(FVoice);
end;end.

4. 工程文件

program DelphiVoice;usesForms,uFrmMain in 'uFrmMain.pas' {FrmMain},uVoice in 'uVoice.pas',uVar in 'uVar.pas';{$R *.res}beginApplication.Initialize;Application.MainFormOnTaskbar := True;Application.CreateForm(TFrmMain, FrmMain);Application.Run;
end.

Delphi 播放wav声音相关推荐

  1. windows播放wav声音文件--java播放wav完整demo

    有个新的需求,要java的windows应用发声音,原本说的只是使用蜂鸣器发声音,直接上代码: public static void main(String[] args) {Toolkit tool ...

  2. BlackBerry 10:Qt中使用OpenAL播放wav声音文件

    BlackBerry 10/PlayBook OS 2.0里面都内置OpenAL的类库,所以在程序中使用OpenAL类库播放声音是很方便的. BlackBerry 10开发者网站上提供的例子程序Cow ...

  3. 用DELPHI播放WAV和MP3

    用于某企业知识竞赛,为了更有现场感,要加入音效. unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Gra ...

  4. Qt:QSound无法播放.wav声音的解决办法

    从网上下载了音频素材,格式为.wav,用QSound播放,没声音.刚开始放在资源文件里,后来看到有的人说不能引用资源文件里的音频文件,事实证明纯属扯淡!改为播放本地文件系统内的音频文件,但是仍然无法播 ...

  5. qt4.8+Phonon播放.wav声音文件

    本来打算使用QSound来播放声音文件,但是在Ubuntu(虚拟机)和Centos下都失败了,使用QSound::isAvailable()静态函数查看是否存在相应的音频设备,返回值均为false.后 ...

  6. 用API函数播放wav文件声音不连续的解决方法

    作为一个多媒体技术方面的初学者,我从wav文件的播放开始了解媒体播放的流程. 于是从建立两个线程开始,线程1用来将文件中的数据读到Buffer中去,以后称为读线程,线程2用来将Buffer中的数据送到 ...

  7. Java 采集声音_通过java采集PC麦克风音频及播放wav音频文件

    AudioFormat对象 sampleRate 采样率 每秒音频采样数量 sampleSizeInBits 采样位数 每个采样的位数 channels 声道 1: Mono 单声道,2:Stereo ...

  8. android java 打开snd,使用SndPlaySound从内存中播放WAV

    有些时候,我们写的程序需要播放音乐,一般大家会采用以下几种方式:1.把音乐文件放置在某个特定的目录,例如Sound,WAV,Music供程序读取播放:2.使用资源来存放音乐.有些人估计也是使用这个方法 ...

  9. arduino下载库出错_【arduino】DIY音乐播放器,arduino播放wav音乐,TRMpcm库测试及使用...

    微信关注 "DLGG创客DIY"设为"星标",重磅干货,第一时间送达. arduino特点库超多,想必大家都领教了,今天来分享一下之前玩过的TRMpcm库. 这 ...

  10. 【arduino】DIY音乐播放器,arduino播放wav音乐,TRMpcm库测试及使用

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. arduino特点库超多,想必大家都领教了,今天来分享一下之前玩过的TRMpcm库. ...

最新文章

  1. [UVa1213]Sum of Different Primes(递推,01背包)
  2. 信息安全系统设计基础第一周学习总结
  3. 【share】PHP站点用Squid再次疯狂加速你的WEB
  4. java jdbc dbcp连接SQL Server
  5. Linux环境下Android开发环境的搭建
  6. 实现一个简单的HTTP
  7. css实现三栏布局的几种方法及优缺点
  8. 空循环和无穷循环的区别
  9. python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...
  10. 卡饭里的云计算机,微云可以在电脑用吗
  11. ajax 导致 css 延迟_在H5,小程序,uni-app中使用animate.css
  12. 泛型list集合类转换成DataTable、datatable转list
  13. 基于Redis消息的订阅发布应用场景
  14. 穿越技术火线,聆听内心声音——暨龙泉第三届IT禅修营
  15. 重装正版Win10系统图文教程
  16. IDEA使用Git大全
  17. 在线 excel 产品技术调研
  18. CAN总线错误分析方法
  19. [渝粤教育] 中国地质大学 人力资源开发与管理 复习题 (2)
  20. JavaWeb技术归档大全

热门文章

  1. 手把手教你如何下载编译Spring源码
  2. uefi模式安装win7出现winload.efi和oxc0000428错误的另类解决办法
  3. 账龄分析表excel模板_老会计分享财务报表及EXCEL会计报表分析系统模板!收藏领取!...
  4. 电子电工产品成品及材料灼热丝测试用试验仪
  5. 易语言大漠插件模块制作设置字库及OcrEx识别字符串
  6. JSONObject.fromObject爆红,显示无fromObject方法
  7. ART艺术作品相关公开数据集
  8. KeepLive for Android 安卓保活组件
  9. Linux内核编程(1)
  10. swustoj水王C语言,swust西南科技大学OJ数据结构80题答案