如果你基本了解Lingo,可以撰写自定义的脚本给影片添加TTS功能。
首先,你必需初始化语音软件。
初始化TTS软件要使用voiceInitialize()命令。
下面的脚本测试是否安装了TTS软件。如果软件没有安装将显示警告对话框。
on exitFrame
if voiceInitialize() then
go to frame "Start"
else
alert "Text-to-speech is not available"
end if
end 辅助功能的Lingo--TTS
voiceCount()
语法:
voiceCount()
描述:
函数;返回可用的TTS发音引擎索引号。.返回的数值是一个整数。voiceSet()和 voiceGet()可以通过这个索引号指定特殊的发音引擎。
范例:
这个语句把可用的TTS发音引擎索引号传递给变量numVoices。
numVoices = voiceCount()
参考:
voiceInitialize(), voiceSet(), voiceGet()
voiceGet()
语法:
voiceGet()
描述:
函数;把当前发音引擎的名称、性别、年龄和索引号返回到一个属性列表中,这个列表具备下列属性。
·#name 显示发音引擎的名称。
·#age 显示发音是哪个年龄段的人。这个值是一个字符串。可能包含值有“Teen”、“Adult”、“Toddler”和“Senior”, 也有象“35”这样的数值。实际上这个值依赖于操作系统中安装了的TTS软件版本和发音引擎。
·#gender 显示是女性还是男性的发音,这个值是一个字符串。
·#index 显示发音引擎安装在语音库中的位置,voiceSet()命令通过这个索引号可以把一个发音引擎设置成当前的发音引擎。
使用voiceGet()可以测定可用发音引擎的编号。
范例:
这个语句把当前TTS的属性列表传递给变量oldVoice:
oldVoice = voiceGet()
这个语句显示当前TTS的属性列表:
put voiceGet()
-- [#name: "Microsoft Mary", #age: "Adult", #gender: "Female", #index: 1]
下面的脚本会测试当前的语音如果是女性嗓音则开始朗读。其中voiceSpeak()命令指定的文本演员的名字是“TextCommentary”。
on exitFrame
voiceProps = voiceGet()
if voiceProps.gender = "female" then
voiceSpeak(member("TextCommentary").text)
end if
end
参考:
voiceInitialize(), voiceCount(), voiceSet(), voiceGet()
voiceGetAll()
语法:
voiceGetAll()
描述:
函数;把所有可用的发音引擎的属性返回到一个属性列表中。
范例:
这个语句显示所有可用的发音引擎的属性列表:
put voiceGetAll()
-- [[#name: "Microsoft Mary", #age: "Adult", #gender: "Female", #index: 1], [#name: "Microsoft Mike", #age: "Adult", #gender: "Male", #index: 2], [#name: "Microsoft Sam", #age: "Adult", #gender: "Male", #index: 3]]
参考:
voiceGet()
voiceGetPitch()
语法:
voiceGetPitch()
描述:
函数;返回当前发音的频率为一个整数,.这个数值的范围取决于操作系统平台和TTS软件。
范例:
这些语句检测当前的语音频率是否大于10,如果大于10则把频率设置为10。
if voiceGetPitch() > 10 then
voiceSetPitch(10)
end if
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceWordPos()
voiceGetRate()
语法:
voiceGetRate()
描述:
函数;返回当前TTS引擎朗诵的速度。返回的数值是一个整数,这个数值的范围取决于操作系统平台和TTS软件。一般情况下这个数值介于-10到10之间。
范例:
这些语句检测语音回放的速度是否小于50,如果小于50则设置为50。
if voiceGetRate() < 50 then
voiceSetRate(50)
end if
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceWordPos() voiceGetVolume()
语法:
voiceGetVolume()
描述:
函数;返回当前TTS引擎的音量,返回的数值是一个整数,这个数值的范围取决于操作系统平台。
范例:
这些语句检测TTS的音量是否小于55,如果是则设置为55。
if voiceGetVolume() < 55 then
voiceSetVolume(55)
end if
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceSetVolume(), voiceState(), voiceWordPos()
voiceInitialize()
语法:
voiceInitialize()
描述:
命令;加载电脑的TTS引擎。如果voiceInitialize()命令返回0,说明TTS软件不存在或加载失败。
如果加载成功这个命令返回1,否则返回0。
范例:
这些语句加载电脑的TTS引擎,然后在使用voiceSpeak()命令朗读“Wellcome to Shockwave”这个短语之前测试TTS引擎是否加载成功:
err = voiceInitialize()
if err = 1 then
voiceSpeak("Welcome to Shockwave")
else
alert "Text-tospeech software failed to load."
end if
参考:
voiceCount(), voiceSet(), voiceGet()
voicePause()
语法:
voicePause()
描述:
命令;让TTS引擎暂停输出语音。如果成功这个命令返回1,否则返回0。
范例:
这些语句在用户单击鼠标后导致TTS引擎暂停。
on mouseUp
voicePause()
end mouseUp
参考:
voiceSpeak(), voiceResume(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceWordPos()
voiceResume()
语法:
voiceResume()
描述:
命令;让TTS继续输出语音。如果成功这个命令返回1,否则返回0。
范例:
这些语句在分镜表中的播放头离开这一帧时继续播放语音:
on exitFrame
voiceResume()
end exitFrame
参考:
voiceSpeak(), voicePause(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceWordPos()
voiceSet()
语法:
voiceSet(integer)
描述:
命令;设置一个独特发音引擎作为TTS的当前引擎,这个数值必需指定一个整数。.数值的有效范围取决于安装在电脑中的发音引擎数量。如果指定了超出范围的数值,则设置为索引号最接近该数值的那个发音。如果设置成功,这个命令将返回新设置的数值,使用voiceCount()确定可用发音的数量。
范例:
这个语句把安装在系统中的第三种发音设置为当前TTS发音。
voiceSet(3)
参考:
voiceInitialize(), voiceCount(), voiceGet()
voiceSetPitch()
语法:
voiceSetPitch(integer)
描述:
命令;把TTS引擎的当前发音频率设置为指定的数值。返回新设置的频率数值,这个数值的范围取决于操作系统平台和TTS引擎。
范例:
这个语句设置当前的发音频率为75。
voiceSetPitch(75)
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceWordPos()
voiceSetRate()
语法:
voiceSetRate(integer)
描述:
命令;把TTS引擎播放的速度设置为指定的整数。这个命令返回新设置的数值。这个数值的范围取决于操作系统平台,一般情况下,在大多数TTS软件中这个数值介于-10到10之间较合适,如果指定了超出范围的数值,则播放速度将设置为最近似的数值。
范例:
这个语句把TTS引擎的播放速度设置为7:
voiceSetRate(7)
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceGetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceWordPos()
voiceSetVolume()
语法:
voiceSetVolume(integer)
描述:
命令;设置TTS引擎的音量。给定的数值必需是一个整数,这个数值的取值范围取决于操作系统平台。如果设置成功这个命令返回新设置的数值。如果指定的数值无效,设置为最近似的数值。
范例:
这个语句把TTS引擎的音量设置为55:
voiceSetVolume(55)
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceState(), voiceWordPos()
voiceSpeak()
语法:
voiceSpeak("string")
描述:
命令;让TTS引擎朗读指定的字符串。当使用这个命令时,当前的朗读将被新的字符串中断。
范例:
这个语句让TTS引擎朗读“Wellcome to Shockwave”这个短语。
voiceSpeak("Welcome to Shockwave")
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceWordPos()
voiceState()
语法:
voiceState()
描述:
函数;把当前的语音情况返回成一个符号。可能返回的值有#playing、#paused和#stopped。
范例:
这些语句检测TTS引擎是否正在使用中,如果是则采用索引号为1的发音:
if voiceState() <> #playing then
voiceSet(1)
end if
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceWordPos(), voiceSpeak()
voiceStop()
语法:
voiceStop()
描述:
命令;停止TTS引擎输出语音,并清空TTS缓冲。如果成功这个命令返回数值1,否则返回0。
范例:
这些语句在分镜表中的播放头离开一帧时停止语音:
on exitFrame
voiceStop()
end exitFrame
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceWordPos(), voiceSpeak()
voiceWordPos()
语法:
voiceWordPos()
描述:
函数;返回一个整数标示单词在被朗读的字符串中的位置。例如,一个被朗读的文本演员包含15个单词,当使用这个函数时正朗读的是第五个单词,返回的数值是5。
范例:
下列的语句朗读“Hello,how are you?”这个句子并在Message窗口显示当前朗读的是第几个单词。在使用了voiceSpeach()命令后马上执行voiceWordPos()函数,返回的数值将是1。
voiceSpeak(“Hello, how are you?”)
put voiceWordPos()
-- 1
参考:
voiceSpeak(), voicePause(), voiceResume(), voiceStop(), voiceGetRate(), voiceSetRate(), voiceGetPitch(), voiceSetPitch(), voiceGetVolume(), voiceSetVolume(), voiceState(), voiceSpeak()
辅助功能的Lingo--键盘导航
autoTab
语法:
member(whichCastMember).autoTab
the autoTab of member whichCastMember
描述:
角色成员的属性;指定可编辑的文本域或被指定为whichCastMember的文本角色成员。这个属性可以被激活(TRUE)或停止(FALSE)。响应Tab键的次序取决于精灵的次序编号,和在场景中的位置没关系。
这个属性在Director生成的Jave程序中总是为TRUE。
范例:
在用户按Tab键后这个语句使角色成员Comments自动预置插入点到下一个可编辑的文本域或文本精灵。
点语法:
member ("Comments").autotab = TRUE
传统语法:
set the autoTab of member "Comments" to TRUE
hilite()
语法:
fieldChunkExpression.hilite()
hilite fieldChunkExpression
描述:
命令;高亮显示(即处于选择状态)在文本域精灵中指定的文本块。Lingo可以让你定义任何文本块,就象字符、单词或行。在Macintosh上用颜色控制面板可以设置高亮的色彩。
范例:
这个语句将高亮显示文本域角色成员Comments的第四个单词。
member("Comments").word[4].hilite()
这个语句取消文本域精灵myRecipes中文本块的高亮显示:
myLineCount = member("myRecipes").line.count
member("myRecipes").line[myLineCount + 1].hilite()
参考:
char...of, item...of, line...of, word...of, delete, mouseChar, mouseLine, mouseWord, field, selection() (function), selEnd, selStart
keyboardFocusSprite
语法:
set the keyboardFocusSprite = textSpriteNum
描述:
系统属性;让用户通过键盘输入聚焦到当前场景中指定的精灵上(除控制光标插入点之外)。当选择了演员的AutoTab属性时这相当于使用了Tab键。
设置keyboardFocusSprite为-1则允许通过键盘输入聚焦到用精灵通道编号指定的精灵上,设置为0则禁止通过键盘输入进入任何可编辑的精灵。
范例:
这个语句禁止通过键盘输入聚焦在任何可编辑的精灵上:
setthe keyboardFocusSprite = 0
这个语句允许通过键盘输入聚焦在一个可编辑的精灵上:
setthe keyboardFocusSprite = -1
这个语句通过键盘输入聚焦在位于第三个精灵通道的精灵上:
set the keyboardFocusSprite = 3
参考:
toTab, editable
selection (text cast member property)
语法:
member(whichTextMember).selection
描述:
文本角色成员属性;把文本角色成员中被选择的第一个和最后一个字符的位置返回到一个列表中。
这个属性可以被测试和设置。
范例:
下列语句设置文本角色精灵myAnswer的第6个到第10个字符为高亮显示:
member("myAnswer").selection = [6, 10]
参考:
color(), selStart, selEnd
selection() (function)
语法:
the selection
描述:
函数;把当前可编辑的文本域中高亮显示的部分返回成一个字符串。.这个功能可用于测试用户在文本域中选择的文本块。这个功能仅显示被选择的字符串,不能用它来选择字符串。
范例:
这个语句检测是否选择了字符,如果是否,则在警告对话框中显示“Please select a word.”:
if the selection = EMPTY then alert "Please select a word."
参考:
selStart, selEnd
selection (cast property)
语法:
castLib (whichCast).selection
the selection of castLib whichCast
set the selection of castLib whichCast =[ [ startMember1 , endMember1 ],\
{[startMember2 , endMember2 ], [ startMember3 , endMember3 ]...]}
castLib(whichCast). selection =[ [ startMember1 , endMember1 ],\
{[ startMember2 , endMember2 ], [ startMember3 , endMember3 ]...]}
描述:
角色属性;确定在指定的Cast窗口选择哪些角色成员。这个列表范围包括被选择的角色成员开始和结束的数字。可以包含多个被指定的角色成员范围。要指定跟多的选择范围,通过按住Ctrl(Windows)或Command(Macintosh)配合拖动鼠标进行选择。
范例:
这个语句选择演员库1中的第1个到第10个角色成员:
castLib(1).selection = [[1, 10]]
这个语句选择演员库1中第1个到第10个角色成员和第30个到第40个角色成员:
castLib(1).selection = [[1, 10], [30, 40]]
selectedText
语法:
member(whichTextMember).selectedText
描述:
文本角色成员属性;返回当前选择文本块的属性。
范例:
下列的处理程序显示当前选择文本所具有的局部变量对象。这个对象涉及文本所使用的多方面的特征。它们将被逐一显示在Message窗口:
property spriteNum
on mouseUp me
mySelectionObject = sprite(spriteNum).member.selectedText
put mySelectionObject.text
put mySelectionObject.font
put mySelectionObject.fontSize
put mySelectionObject.fontStyle
end
selEnd
语法:
the selEnd
描述:
Global属性;指定选择的最后一个字符。.它将和selStart一起从字符开始位置计算,确定当前可编辑域中的选择块。
这个属性可以被检测和设置。默认数值为0。
范例:
这些语句选择域中“abcdefg”中的“cde”:
the selStart = 3
the selEnd = 5
当selEnd和selStart的值是一样的时候这个语句执行noSelection处理程序:
if the selEnd = the selStart then noSelection
这个语句可以用于选择20字符:
the selEnd = the selStart + 20
参考:
editable, hilite (command), selection() (function), selStart, text
selStart
语法:
the selStart
描述:
角色成员属性;指定开始选择的字符,.和selEnd一起从字符开始位置计算确定当前可编辑域中的选择块。
这个属性可以被检测和设置。默认数值为0。
范例:
这些语句选择域中“abcdefg”中的“cde”
the selStart = 3
the selEnd = 5
当selEnd和selStart的值是一样的时候这个语句执行noSelection处理程序:
if the selEnd = the selStart then noSelection
这个语句可用于选择20字符:
the selEnd = the selStart + 20
参考:
selection() (function), selEnd, text
|