uses Comobj;

procedure TForm1.Button1Click(Sender: TObject);
var
voice: OLEVariant;
begin
voice := CreateOLEObject('SAPI.SpVoice');
voice.Speak('Hello World!', 0);
end;

Delphi_TTS_1

unit Unit1; 

interface 

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Menus, OleCtrls, ACTIVEVOICEPROJECTLib_TLB; type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Go1: TMenuItem;
Alpha1: TMenuItem;
N201: TMenuItem;
N501: TMenuItem;
N1001: TMenuItem;
RT: TRichEdit;
ss: TDirectSS;
procedure RS(Sender: TObject);
procedure N201Click(Sender: TObject);
procedure N501Click(Sender: TObject);
procedure N1001Click(Sender: TObject);
procedure Go1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.RS(Sender: TObject);
begin
rt.Width :=form1.Width -;
rt.Height :=form1.Height -;
end; procedure TForm1.N201Click(Sender: TObject);
begin
form1.AlphaBlendValue := ;
end; procedure TForm1.N501Click(Sender: TObject);
begin
form1.AlphaBlendValue := ;
end; procedure TForm1.N1001Click(Sender: TObject);
begin
form1.AlphaBlendValue := ;
end; procedure TForm1.Go1Click(Sender: TObject);
begin
ss.Speak(rt.Text);
end; end.

SpeechLib_TLB控件效能

SpeechLib_TLB控件功能
我在Delphi编写的软件中用到SpeechLib_TLB,声音软件XPSpeech.msi,可以发出的声音不好听,而且声音很小,想请问是哪方面的原因,是XPSpeech.msi软件的原因吗?需要购买发声收费软件吗?
------解决方案-------------------------------------------------------- unit Ifly_Stts; interface implementation // 各种声音格式 Const TTS_ADF_DEFAULT = ; TTS_ADF_PCM8K8B1C = ; TTS_ADF_PCM16K8B1C = ; TTS_ADF_PCM8K16B1C = ; TTS_ADF_PCM16K16B1C = ; TTS_ADF_PCM11K8B1C = ; TTS_ADF_PCM11K16B1C = ; TTS_ADF_ALAW16K1C = ; TTS_ADF_ULAW16K1C = ; TTS_ADF_ALAW8K1C = ; TTS_ADF_ULAW8K1C = ; TTS_ADF_ALAW11K1C = ; TTS_ADF_ULAW11K1C = ; TTS_ADF_ADPCMG7218K4B1C = ; TTS_ADF_ADPCMG7216K4B1C = ; TTS_ADF_ADPCMG7233B1C = ; TTS_ADF_ADPCMG7235B1C = ; TTS_ADF_VOX6K1C = ; TTS_ADF_VOX8K1C = ; //文本内码 TTS_CP_GB2312 = TTS_CP_GBK = TTS_CP_UNICODE = //'参数类型 TTS_PARAM_LOCAL_BASE = &H0; TTS_PARAM_INBUFSIZE = &H1; TTS_PARAM_OUTBUFSIZE = &H2; TTS_PARAM_VID = &H3; TTS_PARAM_CODEPAGE = &H4; TTS_PARAM_AUDIODATAFMT = &H5; TTS_PARAM_SPEED = &H6; TTS_PARAM_AUDIOHEADFMT = &H7; TTS_PARAM_VOLUME = &H8; TTS_PARAM_PITCH = &H9; type //'================================================================ //' STTS Api 声明 //'================================================================ //' 初始化 function STTSInit():boolean;stdcall; external 'STTSApi.dll'; //' 逆初始化 function STTSDeInit():boolean;stdcall; external 'STTSApi.dll'; //' 建立与TTS服务器的连接 function STTSConnect(sSerialNumber:string;sServerIP:string):Integer;stdcall; external 'STTSApi.dll'; //' 断开与TTS服务器的连接 Function STTSDisconnect(hTTSInstance:Integer):boolean;stdcall; external 'STTSApi.dll'; //' 设置本次连接的合成参数 Function STTSSetParam(hTTSInstance:integer;lngType:integer;lngParam:integer):Boolean;stdcall; external 'STTSApi.dll'; //' 获得本次连接的合成参数 Function STTSGetParam(hTTSInstance:Integer;lngType:integer;lngParam:integer):Boolean;stdcall; external 'STTSApi.dll'; //' 从字符串合成到音频文件 Function STTSString2AudioFile(hTTSInstance:Integer;sString:string;sWaveFile:string):Boolean;stdcall; external 'STTSApi.dll'; //' 从文本文件合成到音频文件 Function STTSFile2AudioFile(hTTSInstance:Integer;sTextFile:string;sWaveFile:string):Boolean;stdcall; external 'STTSApi.dll'; //'播放字符串 Function STTSPlayString(hTTSInstance:Integer;sTextFile:string;bAsynch:Boolean):Boolean;stdcall; external 'STTSApi.dll'; //'播放文本文件 Function SSTTSPlayTextFile(hTTSInstance:Integer;sTextFile:string;bAsynch:Boolean):Boolean;stdcall; external 'STTSApi.dll'; //'播放停止 Function STTSPlayStop():Boolean;stdcall; external 'STTSApi.dll'; //'查询播放状态 Function STTSQueryPlayStatus(lngStatus:Integer):Boolean;stdcall; external 'STTSApi.dll'; //'TTS版本信息 Function STTSAbout(sAboutInfo:string;ninfosize:Integer):Boolean;stdcall; external 'STTSApi.dll';
//' 用来获取错误代码的Windows API函数
//Public Declare Function GetLastError Lib "kernel32" () As Long
end; end. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} //'================================================================ //' STTS Api 声明 //'================================================================ //' 初始化 function STTSInit():boolean;stdcall; external 'STTSApi.dll'; //' 逆初始化 function STTSDeinit():boolean;stdcall; external 'STTSApi.dll'; //' 建立与TTS服务器的连接 function STTSConnect(sSerialNumber:string;sServerIP:string):Integer;stdcall; external 'STTSApi.dll'; //' 断开与TTS服务器的连接 Function STTSDisconnect(hTTSInstance:Integer):boolean;stdcall; external 'STTSApi.dll'; //' 设置本次连接的合成参数 Function STTSSetParam(hTTSInstance:integer;lngType:integer;lngParam:integer):Boolean;stdcall; external 'STTSApi.dll'; //' 获得本次连接的合成参数 Function STTSGetParam(hTTSInstance:Integer;lngType:integer;lngParam:integer):Boolean;stdcall; external 'STTSApi.dll'; //' 从字符串合成到音频文件 Function STTSString2AudioFile(hTTSInstance:Integer;sString:string;sWaveFile:string):Boolean;stdcall; external 'STTSApi.dll'; //' 从文本文件合成到音频文件 Function STTSFile2AudioFile(hTTSInstance:Integer;sTextFile:string;sWaveFile:string):Boolean;stdcall; external 'STTSApi.dll'; //'播放字符串 Function STTSPlayString(hTTSInstance:Integer;sString:string;bAsynch:Boolean):Boolean;stdcall; external 'STTSApi.dll'; //'播放文本文件 Function STTSPlayTextFile(hTTSInstance:Integer;sTextFile:string;bAsynch:Boolean):Boolean;stdcall; external 'STTSApi.dll'; //'播放停止 Function STTSPlayStop():Boolean;stdcall; external 'STTSApi.dll'; //'查询播放状态 Function STTSQueryPlayStatus(lngStatus:Integer):Boolean;stdcall; external 'STTSApi.dll'; //'TTS版本信息 Function STTSAbout(sAboutInfo:string;ninfosize:Integer):Boolean;stdcall; external 'STTSApi.dll'; //' 用来获取错误代码的Windows API函数 //Public Declare Function GetLastError Lib "kernel32" () As Long procedure TForm1.Button1Click(Sender: TObject); var myhandle:integer; begin STTSInit(); myhandle:=STTSconnect('','127.0.0.1'); STTSPlayString(myhandle,self.Memo1.Text,true) ; STTSDisconnect(myhandle);
end; procedure TForm1.Button2Click(Sender: TObject);
begin
STTSPlayStop();
end; procedure TForm1.Button3Click(Sender: TObject);
var
strls:string;
myhandle:integer;
begin
if not self.OpenDialog1.Execute then exit;
strls:=self.OpenDialog1.FileName;
STTSInit();
myhandle:=STTSconnect('','127.0.0.1');
STTSPlayTextFile(myhandle,strls,true);
STTSDisconnect(myhandle); end; procedure TForm1.FormDestroy(Sender: TObject);
begin
STTSDeInit();
end; end. 运行目录下必须有四个DLL
AUCodec.dll
iFlySAPI.dll
iFlyTTS.dll
STTSApi.dll

应用 Microsoft TTS 语音引擎的 Delphi 语言实例

建立一个单窗体工程,添加一个 Edit 和 2 个 Button 控件,分别命名为 Edit1、btnSpeak、btnStop。然后安装引用 TTS 的 vtxtauto.tlb 类库文件,方法是点击菜单“工程-Import Type Library”,点“add”按钮,然后选中 Windows/speech 下的 Vtxtauto.tlb 文件,放入安装包后,再将其添加成 Delphi 的一个 Unit,自动产生的名字为“VTxtAuto_TLB”。然后,在主 Unit 的 Uses 里引用 VTxtAuto_TLB,即在 Uses 后添加字串“VTxtAuto_TLB”。最后参考以下代码:

procedure TfrmSpeech.FormCreate(Sender: TObject);

    begin

      vtxt:=CoVTxtAuto_.Create;

      vtxt.Register(‘’,‘Speech’);

      Edit1.Text:=‘I am a chinese, I love my homeland very much, and you?’

    end;

    procedure TfrmSpeech.btnSpeakClick(Sender: TObject);

    begin

      vtxt.Speed:=;

      vtxt.Speak(trim(Edit1.Text),);

    end;

    procedure TfrmSpeech.btnStopClick(Sender: TObject);

    begin

      vtxt.StopSpeaking;

    end;

    end.

delphi7如何调用系统语音库

(一)要使用系统的语音库,你需要先安装MicrosoftSpeechSDK5.1及其语言包,下载地址: SpeechSDK5.1: http://www.newhua.com/soft/38264.htmSpeechSDK5.1语言包(中英文): http://www.onlinedown.net/soft/38265.htm

(二)安装完成后,需要在D7里导入类库以便生成SAPI组件于IDE组件面板. 启动D7,Project->ImportTypeLibrary->找到MicrosoftSpeechObjectLibrary(Version5.0) 点Install.. 成功后会在D7的组件面板里出现SAPI5.1控件页.

(三)OK,开始来个简单的工程. 启动D7新建个工程,往窗口里扔进一个TMemo,两个TButton,再扔进一个TSpVoice(SAPI5.1控件页),写下下边的代码:

unitUnit1; interface uses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms, Dialogs,OleServer,SpeechLib_TLB,StdCtrls; type TForm1=class(TForm) Button1:TButton; Memo1:TMemo; SpVoice1:TSpVoice; Button2:TButton; Button3:TButton; procedureButton1Click(Sender:TObject); procedureButton3Click(Sender:TObject); private {Privatedeclarations} public procedurePlayVoxEx; end; var Form1:TForm1; implementation {$R*.dfm} {TForm1} procedureTForm1.PlayVoxEx;var i:Integer; s,t:String;begin s:=Memo1.Text; fori:=1toLength(s)do begin ifnot(s[i]in[#,#])then begin ifByteType(s,i)=mbSingleBytethen begin SpVoice1.Voice:=SpVoice1.GetVoices('','').Item();//设置报读的语种,0为英文,3为中文 t:=s[i]; end elseifByteType(s,i)=mbLeadBytethen begin SpVoice1.Voice:=SpVoice1.GetVoices('','').Item(3); t:=s[i]; t:=s[i] s[i 1]; end else continue; SpVoice1.Speak(t,SVSFlagsAsync);//读出Text end; end;end; procedureTForm1.Button1Click(Sender:TObject);begin SpVoice1.Voice:=SpVoice1.GetVoices('','').Item(3); SpVoice1.Speak(Memo1.Text,SVSFlagsAsync);end; procedureTForm1.Button3Click(Sender:TObject);begin SpVoice1.Voice:=SpVoice1.GetVoices('','').Item(0); SpVoice1.Speak(Memo1.Text,SVSFlagsAsync);end; end. Button1是直接读中文语音的,Button2可以读中英文混合(效果相当差),Button3直接读英文用的

我知道的就这么多了,希望对你有点用... 这边的代码直接复制编译会报错,需要按CTRL H打开替换框,复制" "双引号内的字符替换成两个空格(全部替换),再编译就行了. procedureTForm1.Button3Click(Sender:TObject);begin SpVoice1.Voice:=SpVoice1.GetVoices('','').Item(0); SpVoice1.Speak(Memo1.Text,SVSFlagsAsync);end; 改成: procedureTForm1.Button3Click(Sender:TObject);begin PlayVoxEx;end; dclusr.dpk是缺省的用户安装控件包,多出来的应该是你之前安装到dclusr.dpk包里的一些别的控件...在导入ActiveX那个界面里点Install后,你可以选Intonewpackage,然后浏览一个目录填个包名再返回安装就不会有这些东西了.

追问:

Delphi 实现简易语音发音(基于TTS方式)的更多相关文章

  1. Delphi - OLE类实现TTS方式语音朗读

    Delphi调用OLE类实现TTS方式语音朗读 直接看代码: unit uMain; interface uses Windows, Messages, SysUtils, Variants, Cla ...

  2. Delphi文字转语音TTS【支持选择语音库,播放,暂停,开始,停止,生成语音文件,设置音量,设置语速】

    作者QQ:(648437169) 点击下载➨文字转语音TTS [Delphi 文字转语音TTS]调用系统自带的TTS组件,支持XP,vista,win7,win8,win10系统,支持选择语音库,播放 ...

  3. 【ALB技术笔记】基于多线程方式的串行通信接口数据接收案例

    基于多线程方式的串行通信接口数据接收案例 广东职业技术技术学院  欧浩源 1.案例背景 在本博客的<[CC2530入门教程-06]CC2530的ADC工作原理与应用>中实现了电压数据采集的 ...

  4. Shiro入门之二 --------基于注解方式的权限控制与Ehcache缓存

    一  基于注解方式的权限控制 首先, 在spring配置文件applicationContext.xml中配置自动代理和切面 <!-- 8配置自动代理 -->    <bean cl ...

  5. 用delphi检查网络连接状态3种方式

    用delphi检查网络连接状态3种方式 用delphi检查网络连接状态 检测计算机是否联网比较简单的做法可以通过一个 Win32 Internet(WinInet) 函数 InternetCheckC ...

  6. 技术实战:基于 MHA 方式实现 MySQL 的高可用(转)

    转自:http://os.51cto.com/art/201307/401702_all.htm MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据.本文分享了基于 ...

  7. Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)

    Elasticsearch生成mapping的方式上有多种方式,我们可以把mapping做成配置文件,也可以用spring-data-elasticsearch基于注解生成. 在基于注解生成这种方式上 ...

  8. SpringMVC入门(基于注解方式实现)

    ---------------------siwuxie095                             SpringMVC 入门(基于注解方式实现)         SpringMVC ...

  9. SpringMVC入门(基于XML方式实现)

    ----------------------siwuxie095 SpringMVC 入门(基于 XML 方式实现) (一)搭建 SpringMVC 环境 1.先下载相关库文件,下载链接: (1)ht ...

随机推荐

  1. ubuntu配置px4编译环境

    一.主要参考的内容 px4的开发者手册 https://dev.px4.io/zh/setup/dev_env_linux.html 其中有的shell指令 权限设置 警告:永远不要使用sudo来修复 ...

  2. hdu 6085 Rikka with Candies (set计数)

    Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...

  3. POJ 1655 Balancing Act (树状dp入门)

    Description Consider a tree T with N (1 <= N <= 20,000) nodes numbered 1...N. Deleting any nod ...

  4. SCP-bzoj-1057

    项目编号:bzoj-1057 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 首先枚举最左上角的点(记为(1,1))是黑点还是白点,这样就可以把与(1,1)不在同一对角线系的格点颜色翻转(形式 ...

  5. Android代码学习--点击事件的几种写法

    由来:常规的写法参见<写一个apk>,每次点击按钮,按钮先查找文本框等元素,然后再操作,其实查找操作是很费时的操作,因此将该定义放到Activity的onCreate中:Oncreate只 ...

  6. VMware Hyper-V不兼容

    VMware Workstation Windows系統的Hyper-V不相容 禁用Device Guard或Credential Guard 1. 以管理員身份運行Windows Powershel ...

  7. Kali 和 Centos、Windows三系统的安装事项!

    过年了,想在硬盘上直接装Kali Linux,就不用每次插U盘进LiveCD了,但是安装过程真的是!!What fucking word I can say!! 先是分区问题,ntfs有四个分区,其中 ...

  8. stc单片机笔记

    volatile是一个类型修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就是防止编译器对代码进行优 ...

  9. vue中按需引入mint-UI报Error: .plugins[3][1] must be an object, false, or undefined

    { "presets": ["@babel/preset-env", "@babel/preset-react"], "plugi ...

  10. 打开myeclipse出现这个错是为什么