fpc : 调用 MS TTS 读中英文

这个例子是 free pascal 在Windows XP 调用 MS TTS 读中英文

tts2.pas

Program space2;
{$mode objfpc}{$H+}

uses
  Classes,SysUtils,Process,Variants,ComObj,RegExpr,ShellApi;

var
  Sp: Variant;
  re: TRegExpr;
  i : Integer;
begin
  if Assigned(InitProc) then
    TProcedure(InitProc);
  try
    Sp := CreateOleObject('SAPI.SpVoice') ;
    re := TRegExpr.Create;
    re.Expression := '^[A-Za-z]+$';
    for i:=1 to ParamCount do
    begin
	  if re.Exec(ParamStr(i)) then
	    Sp.Speak(ParamStr(i)) // english
	  else // speak.vbs 读中文
	    ShellExecute(0,nil, PChar('".\speak.vbs"'),PChar(ParamStr(i)),nil,0);
	  Sleep(1);
    end
  except
    writeln(' OLE Error ');
  end;
  re.free;
end.

speak.vbs  见 blog.csdn.net/belldeep/article/details/7064800

时间: 2024-10-09 03:50:04

fpc : 调用 MS TTS 读中英文的相关文章

?FMX下调用安卓TTS

TextToSpeech的使用 官方Api地址:TextToSpeech FMX下调用安卓TTS例子效果图: unit Main; interface uses   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,   FMX.Mem

FreeSWITCH调用第三方TTS 使用tts_commandline

FreeSWITCH 支持调用第三方TTS命令,本身已经搭好了框架,只需要配置即可用. 下面写一下步骤,以免忘记,也希望给你带来帮助. 第一步:编译模块mod_tts_commandline,并加载. 编辑源码下 modules.conf 文件,把 asr_tts/mod_tts_commandline  这一行的注释去掉. 然后 ./configure,    make,  makeinstall 重启FreeSWITCH 在CLI界面看到 [email protected]> module_

第七天、调用 BIOS 中断读软盘

保护模式内容太多,一时半会消化不完,慢慢体会清楚了再继续写吧.今天先把读软盘搞清楚--当然是调用 BIOS 中断直接读了.就是 int 013h 中断,即"直接磁盘服务"(Direct Disk Service).这个中断功能丰富,今天只学 02 号功能,就是"读软盘". 首先讲清楚软盘的物理结构:软盘,顾名思义就是存储信息的软式磁盘片(Floppy Disk)--因为是塑料做的,当然软.一般一块软盘有一张磁片,磁片两面都涂有磁性材料,这层磁性材料就叫磁层.磁层就是

fpc : 调用桌面应用程序

这个例子是讲 how to 调用桌面应用程序,比如:WPS电子表格 testCom.pas program testCom; {$mode objfpc}{$H+} uses SysUtils,Variants,ComObj,ActiveX,Windows; const Com = 'KET.Application'; var App :Variant; wbook :Variant; Filename :WideString; begin if Assigned(InitProc) then

[转]Net 下采用GET/POST/SOAP方式动态调用WebService C#实现

本文转自:http://www.cnblogs.com/splendidme/archive/2011/10/05/2199501.html 一直以来,我们都为动态调用WebService方法而烦恼.在.Net环境下,最常用的方法就是采用代理类来调用WebService,可以通过改变代理类的Url属性来实现动态调用,但当xmlns改变时就会出错,似乎要重新绑定Webservice并重新编译后才能再次运行.我无意中通过百度搜索找了一个采用GET/POST/SOAP方式动态调用WebService的

C#/Java 调用WSDL接口及方法

一.C#利用vs里面自带的"添加web引用"功能: 1.首先需要清楚WSDL的引用地址  如:http://www.webxml.com.cn/Webservices/WeatherWebService.asmx 2.在.Net项目中,添加web引用. 3.在弹出页面中,输入URL->点击点击绿色图标(前往)按钮->自定义引用名->点击添加引用 4.添加成功,查看类中可调用的方法: 5.在项目中,调用wsdl中的方法. [csharp] view plain copy

(转载)Net 下采用GET/POST/SOAP方式动态调用WebService C#实现

转自http://www.cnblogs.com/splendidme/archive/2011/10/05/2199501.html 一直以来,我们都为动态调用WebService方法而烦恼.在.Net环境下,最常用的方法就是采用代理类来调用WebService,可以通过改变代理类的Url属性来实现动态调用,但当xmlns改变时就会出错,似乎要重新绑定Webservice并重新编译后才能再次运行.我无意中通过百度搜索找了一个采用GET/POST/SOAP方式动态调用WebService的简易灵

读文件使用feof()多读一次的问题

读文件使用feof()多读一次的问题 这是一个经典的错误, 很多教科上都是这么写的.  在读完文件的最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾.直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾.这样就多执行了一次.  对于feof()这个函数, 它是先读再判断是否到文件尾, 也就是说在它之前一定要读一次才能做出判断.  而我们经常这样把它使用在循环中: int c;   while(!feof(fp))   {     

DOS功能的调用

DOS功能的调用:主要包含三方面的子程序:设备驱动(基本I/O),文件管理和其他(包括内存管理,自取时间,自取终端向量,总之程序等)随着DOS版本的升级,这种DOS功能调用的子程序数量也在不断的增加,功能恶搞更加完备,使用也更加方便 调用的方法 可以按照下面方法调用DOS功能 [1]根据需调用的功能调用准备入口参数,有部分调用是不需要入口参数的,但是大部分的功能调用需要入口参数,在调用前应该准备好入口参数 [2]把功能调用号送到AH [3]发软中断指令INT 21H 基本的I/O的调用 1:带回