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. Mac系统下安装Homebrew后无法使用brew命令

    打开终端输入 brew提示:command not found 解决方法 输入命令: sudo vim .bash_profile 然后输入以下代码: export PATH=/usr/local/b ...

  2. Python--反射(重点)、面向对象内置方法:如__str__、面向对象的软件开发

    复习: Python3统一了类与类型 类的名称空间在定义阶段产生,看名称空间:类.__dict__ Python3特点:可以多继承 Python3都是新式类 继承意义:解决重复代码   组合:也是解决 ...

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

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

  4. vuedraggable 实现拖动数据改变

    // 引入组件 import Draggable from 'vuedraggable' // 使用组件 DragList 为自己封装好的组件 注意一定要使用vue的sync <DragList ...

  5. Linux终端提示符颜色设置

    将以下语句添加到用户目录下的 .bashrc 文件中,然后执行 source .bashrc 使其立即生效. PS1='${debian_chroot:+($debian_chroot)}\[\033 ...

  6. Android如何正确引用其它jar包 (转)

    转:http://blog.csdn.net/liranke/article/details/17226083 Android项目常常需要引用自定义的或者外部的jar包,这里提供一些经验,供参考. 一 ...

  7. 网页实时聊天之PHP如何实现websocket

    网页实时聊天之PHP如何实现websocket 一.总结 一句话总结: 应用 PHP 的 socket 函数库:PHP 的 socket 函数库跟 C 语言的 socket 函数非常类似 PHP 实现 ...

  8. Rust <1>:数据类型、变量、可变性、常量、隐藏

    rust 是强类型语言,所有变量.常量都必须有明确的数据类型:很多情况下,省略类型声明,编译器可自动推导,但不是所有情况下都会成功. rust 有整型.浮点型.布尔型.字符型.数组.元组.枚举.结构体 ...

  9. 【react】---redux-actions的基本使用---【巷子】

    一.安装 cnpm install --save redux-actions 二.为什么使用 redux-actions reducer使用switch case语句进行action类型判断,当act ...

  10. 使用font-size:0px 来制作跨浏览器的inline-block css属性

    如果排列的元素是等高的话,相信很多人都会使用浮动来布局,不过如果元素不等高的话,不添加多余的标签,浮动布局是很难实现下图中的效果.如果遇到这种情况,可以使用inline-block来布局. 现代浏览器 ...