社区
Delphi
帖子详情
高手请进
nuaawenlin
2003-04-12 10:22:25
各位大虾,tts到底怎么使用呀,怎么Speek,执行就出错呀
还望各位指点一二,
小弟感激不尽;
能写个例子将不胜感激;
...全文
58
5
打赏
收藏
高手请进
各位大虾,tts到底怎么使用呀,怎么Speek,执行就出错呀 还望各位指点一二, 小弟感激不尽; 能写个例子将不胜感激;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DavidBone
2003-04-17
打赏
举报
回复
up
nuaawenlin
2003-04-12
打赏
举报
回复
非常感谢,如能实现,必定重谢
nuaawenlin
2003-04-12
打赏
举报
回复
写个例子
u2m
2003-04-12
打赏
举报
回复
以下例子应该可以的,我就通过它作过一个简单的朗读器
首 先 从 金 山 词 霸 的 光 盘 上\ciba 目 录 下 运 行 并 安 装mstts.exe(MS TTS engine) 和spchapi.exe(MS Speech API)。
----再 在Delphi 里 新 建 一 个Application。
----然 后 从Delphi 的 菜 单Project/Import Type Library... 中 选 击Add..., 浏 览 到Windows 目 录 下 的Speech 子 目 录 里, 打 开vtxtauto.tlb, 可 以 看 到 下 面Class names 中 会 出 现 我 们 需 要 的 接 口 的 包 装 类 的 名 字TVTxtAuto, 注 意 对 话 框 底 部 的Generate Component Wrapper 需 要 被 选 中, 点 击Create Unit 就 可 以 打 开 一 个 名 为VTxtAuto_TLB 的Unit。
----至 此, 我 们 就 可 以 开 始 实 际 编 程 了。
----首 先 在Form 的OnCreate 中 对 需 要 使 用 接 口 初 始 化 并 进 行 注 册:
...
procedure TfrmMain.FormCreate(Sender: TObject);
begin
FISpeech := CoVTxtAuto_.Create;
FISpeech.Register(‘Demo Site', ‘Demo App');
end;
...
----由 于Delphi 对 接 口 进 行 了 良 好 的 包 装, 因 此 只 需 直 接 建 立 包 装 类, 其 他 后 台 的 操 作 如 接 口 的 查 询、 释 放 等 交 给Delphi 在 后 台 自 动 完 成。
----注 意 这 里 的Register 操 作 是 必 不 可 少 的, 因 为 可 能 有 多 个 程 序 不 同 设 置 使 用TTS 引 擎。
----然 后 在MainForm 上 放 一 个TMemo 和 若 干 个 TButton, 并 在 其OnClick 中 加 入 对 应 的 代 码。
Form 定 义 如 下:
object frmMain: TfrmMain
Left = 296
Top = 187
BorderStyle = bsDialog
Caption = ‘ 英 文 全 文 朗 读 演 示'
ClientHeight = 185
ClientWidth = 456
Color = clBtnFace
Font.Charset = GB2312_CHARSET
Font.Color = clWindowText
Font.Height = -12
Font.Name = ‘ 宋 体'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 12
object memText: TMemo
Left = 8
Top = 8
Width = 361
Height = 169
ScrollBars = ssVertical
TabOrder = 0
end
object btnRead: TButton
Left = 376
Top = 8
Width = 75
Height = 25
Caption = ‘ 朗 读( &R)'
TabOrder = 1
OnClick = btnReadClick
end
object btnPause: TButton
Left = 376
Top = 40
Width = 75
Height = 25
Caption = ‘ 暂 停( &P)'
Enabled = False
TabOrder = 2
OnClick = btnPauseClick
end
object btnStop: TButton
Left = 376
Top = 72
Width = 75
Height = 25
Caption = ‘ 停 止( &S)'
Enabled = False
TabOrder = 3
OnClick = btnStopClick
end
object btnForward: TButton
Left = 376
Top = 120
Width = 75
Height = 25
Caption = ‘ 下 一 句( &N)'
Enabled = False
TabOrder = 4
OnClick = btnForwardClick
end
object btnRewind: TButton
Left = 376
Top = 152
Width = 75
Height = 25
Caption = ‘ 上 一 句( &W)'
Enabled = False
TabOrder = 5
OnClick = btnRewindClick
end
end
----关 键 代 码 段 如 下:
---- 1. 朗 读 与 停 止
...
procedure TfrmMain.btnReadClick(Sender: TObject);
begin
FISpeech.Speak(memText.Lines.Text, vtxtst_
READING);
btnPause.Enabled := True;
btnStop.Enabled := True;
end;
procedure TfrmMain.btnStopClick(Sender: TObject);
begin
FISpeech.StopSpeaking;
btnPause.Enabled := False;
btnStop.Enabled := False;
btnPause.Caption := ‘ 暂 停( &P)';
end;
...
----Speak 成 员 函 数 的 第 一 个 参 数 向TTS 引 擎 传 递 需 要 朗 读 的 文 字, 第 二 个 参 数 由 指 定 朗 读 时 使 用 的 语 气 和 优 先 级 的 两 个 符 号 合 并 而 成。
---- 2. 暂 停 与 恢 复
...
procedure TfrmMain.btnPauseClick(Sender: TObject);
begin
with FISpeech do
if IsSpeaking then
begin
AudioPause;
btnPause.Caption := ‘ 恢 复( &R)';
end
else
begin
AudioResume;
btnPause.Caption := ‘ 暂 停( &P)';
end;
end;
...
----这 里 通 过IsSpeaking 属 性 可 以 取 得 当 前 状 态, 然 后 通 过AudioPause 和AudioResume 暂 停 和 恢 复 朗 读。
----另 外 用 成 员 函 数AudioFastForward 和AudioRewind 可 以 向 前 和 后 跳 过 一 句 朗 读, 通 过 读 写Speed 属 性 还 可 以 取 得 或 设 置 朗 读 的 语 速, 单 位 是 字/ 分, 缺 省 值 为170。
----注 意Speed 和Enabled 属 性 缺 省 设 置 是 只 写 的, 但 实 际 上IVTxtAuto 提 供 了Get_Speed 和Get_Enabled 函 数, 所 以 我 们 只 要 把VTxtAuto_TLB 单 元 中 的 声 明 修 改 一 下, 如:
...
IVTxtAuto = interface(IDispatch)
...
property Speed: Integer read Get_Speed write Set_Speed;
property Enabled: Integer read Get_Enabled write Set_Enabled;
...
end;
...
----即 可 正 常 使 用Speed 和Enabled 属 性 了
ffwin
2003-04-12
打赏
举报
回复
TEXT to speech
java源码包---java 源码 大量 实例
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
预测大盘最准确的指标_通达信大盘预测指标,通达信副图指标,需要写一个关于大盘每日成交量的指标
高手
请进
啊...
Q1:通达信副图指标,需要写一个关于大盘每日成交量的指标
高手
请进
啊沪主:"999999$AMOUNT"/100000000,NODRAW;深主:"399001$AMOUNT"/100000000,NODRAW;沪昨:REF(沪主,1);深昨:REF(深主,1);昨总:沪昨+深昨;今总:沪主+...
【机器学习必知必会系列】
高手
必备数学教程-线性代数
【机器学习必知必会系列】
高手
必备数学教程-线性代数 机器学习&人工智能的
高手
必须懂数学,没有数学基础,只能做肤浅的事。姚老师,精选来自麻省理工可汗学院精品数学课程,呕心沥血15个日夜,5本手写讲义,涵盖...
matlab里面怎么算列和,平均值matlab(matlab
高手
请进
!!我导入了excel文件后,如果想计算其中一列的总和sum和均值mean,该怎么做???)...
大神来赐教,不胜感激matlab
高手
请进
!!我导入了excel文件后,如果想计算其中一列的总和sum和均值mean,该怎么做???下面的搞麻烦一个就搞定了比如你的数组A,你要其中的第三算sum那么sum3=sum(A(:,3));平 就是 ...
一维数组最小值及下标c语言,【c语言
高手
请进
1、一维数组实验目的:掌握一维数组的定义、初始化,以及一维数组元素的下标法引用和指针法引用。实验内容:1.将数组a中的10个元素后移m位,移出的m位顺序存放...
c语言
高手
请进
1、 一维数组实验目的:掌握一维数组的定义、初始化,以及一维数组元素的下标法引用和指针法引用。实验内容:1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的前位。要求:(1)数组元素值在...
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章