请求帮助截断/修剪自动机操作中的字符串,该操作用于创建文本选择范围从30个左右的字符到800+的文本到语音音频文件,这对于文件名来说太长了。
简而言之,我正在尝试将字符串截断为30个字符,并将其作为文件名传递给“文本到音频文件”操作。
基本工作流程是:
选择文字 通过服务菜单启动以下Automator操作
“运行AppleScript”
on run {input, parameters}
set theResult to input as string
set finalResult to input as string
set txtLength to (length of theResult)
if txtLength > 30 then
set finalResult to (characters 1 thru 30 of theResult) as string
end if
return finalResult
end run
“设置变量值”输入(例如所选文本)并定义为FileName
非常感谢任何帮助/建议!
此致
西风
答案 0 :(得分:3)
通常,您可以使用代码末尾的“return”命令从Applecript传递到下一个操作。在你的情况下,虽然自动机操作“文本到音频文件”不接受fileName变量,所以如果你想要那么多控件,你需要另一种方法。幸运的是,可以使用简单的“说”命令在AppleScript代码中轻松替换自动机操作。
因此,请创建您的自动贩卖机服务并接收所选文字。然后添加一个applescript操作并使用以下代码作为代码。然后添加“编码到MPEG音频”操作。
对于applescript代码,只需使用您选择的值修改voiceName和saveFolder变量。 saveFolder路径必须以冒号(:)结束。请注意,我使用26而不是30,因为我们在文件名末尾添加“.aif”...总共30个字符。
on run {input, parameters}
set voiceName to "Jill"
set saveFolder to path to desktop as text
set selectedText to item 1 of input
if (length of selectedText) > 26 then
set fileName to text 1 thru 26 of selectedText
else
set fileName to selectedText
end if
set fileName to fileName & ".aif"
set filePath to saveFolder & fileName
say selectedText using voiceName saving to file filePath
return {POSIX path of filePath}
end run
如果您需要确定saveFolder,请使用此方法获取路径。运行此代码并将结果复制/粘贴到上面的saveFolder变量中。
(choose folder) as text
答案 1 :(得分:0)
这是有效的:
选择文字
通过服务菜单启动以下Automator操作
“设置变量值”以输入(例如,所选文本)并定义为TextToSpeech
“运行AppleScript”
on run {input, parameters}
set theResult to input as string
set finalResult to input as string
set txtLength to (length of theResult)
if txtLength > 50 then
set finalResult to characters 1 thru 50 of theResult as string
end if
return finalResult as string
end run
“设置变量值”输入(例如所选文本)并定义为FileName
“获取变量值”TextToSpeech 和 忽略此操作的输入
“文本到音频文件”,另存为:设置为“FileName”并保存为位置设置。
“编码为MPEG音频”
结果:所需文本说出的所选文本的音频文件,文件名设置为所选文本的前50个字符。
(我增加了字符以减少我在工作流程中获得的重复文件名的数量。)
@ regulus6633:你的答案更紧凑,更优雅,但我需要更多地了解Applecript如何获取输入并返回结果。再次感谢。