📄 speech.~pas
字号:
unit Speech;
interface
uses Classes,Dialogs,VTxtAuto_TLB,ComObj,ActiveX;
type
TSpeech = class
public
function InitVTxtAuto():boolean;
procedure Speak(word:string);
procedure SpeakSpeed(Speed:integer);
function GetSpeakSpeed():Integer ;
public
IVTxtAutoEx:IVTxtAuto;
end;
const
vtxtsp_VERYHIGH = $00000080;
{用于控制朗读的语气和优先级,主要有以下几种,可以根据需要灵活选择,如需多种选择将其进行或运算即可:
vtxtst_STATEMENT = $00000001;平时说话时语气,默认1。
vtxtst_QUESTION = $00000002; 提问的语气2。
vtxtst_COMMAND = $00000004; 命令的语气4。
vtxtst_WARNING = $00000008; 警告的语气8。
vtxtst_READING = $00000010; 阅读文档时的语气16。
vtxtst_NUMBERS = $00000020; 阅读数字时的语气32。
vtxtst_SPREADSHEET = $00000040; 阅读电子表格中元素时的语气64。
vtxtsp_VERYHIGH = $00000080; 立即读出,可以打断当前正读的内容128。
vtxtsp_HIGH = $00000100; 尽快读出,加入播放队列开始256。
vtxtsp_NORMAL = $00000200; 默认,加入播放队列末尾。}
implementation
function SoundCardInstalled : longint; stdcall;
external 'winmm.dll' name 'waveOutGetNumDevs';
function TSpeech.InitVTxtAuto():boolean;
begin
// check sound board
if SoundCardInstalled>0 then begin
try
IVTxtAutoEx:=nil;
CoInitialize(nil);// 初始化COM 库
OleCheck(CoCreateInstance(CLASS_VTxtAuto_,nil,CLSCTX_ALL,IID_IVTxtAuto,IVTxtAutoEx));
// 创建IVTxtAuto 接口
IVTxtAutoEx.Register(' ',' ');
// 向服务器注册
IVTxtAutoEx.Set_Enabled(1);// open MSTTS
IVTxtAutoEx.Set_Speed(150);// 设置语音速度
InitVTxtAuto := true;
result := true;
except
result := false;
end
end
else begin
showmessage('没有检测到声卡,朗读功能不能启动!');
result := false;
end;
end;
procedure TSpeech.Speak(word:string);
begin
if IVTxtAutoEx.IsSpeaking then
IVTxtAutoEx.StopSpeaking;
IVTxtAutoEx.Speak(word,vtxtst_READING);
end;
//
procedure TSpeech.SpeakSpeed(Speed:integer);
begin
if not IVTxtAutoEx.IsSpeaking then
IVTxtAutoEx.Set_Speed(Speed);// 设置语音速度
end;
function TSpeech.GetSpeakSpeed():Integer ;
begin
Result:=IVTxtAutoEx.Get_Speed;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -