Applescript:以WAV格式保存“say”命令的shell脚本

时间:2014-05-12 16:46:27

标签: shell save applescript voice

我正在尝试制作一个非常简单的AppleScript,但我遇到了一个问题,无法从这里继续前进。

我的程序应该做的非常简单。它读取文本文件,拆分它的内容以生成数组,然后执行shell脚本以利用mac终端的say命令读取并将文本保存到.wav文件中。

在终端上,我可以使用以下方法保存wav格式的文件: say -o "hello.wav" --data-format=LEF32@32000 "hello world"

我试图模仿我的AppleScript中的代码无济于事,这是代码:

set theFile to (choose file with prompt "Select a file to read:" of type {"TXT"})
open for access theFile
set fileContents to (read theFile)
close access theFile

set everyLine to every paragraph of fileContents

repeat with theLine in everyLine
    set thisOne to split(theLine, ";")
    set fileName to item 1 of thisOne

    do shell script "say -o" & item 1 of thisOne & ".wav --data-format=LEF32@32000 " & item 3 of thisOne

end repeat

to split(someText, delimiter)
    set AppleScript's text item delimiters to delimiter
    set someText to someText's text items
    set AppleScript's text item delimiters to {""} --> restore delimiters to default value
    return someText
end split

运行此代码会产生Opening output file failed: -43

即使是简单的do shell script "say -o hello.aiff hello也会返回相同的错误。 我非常感谢任何帮助,包括告诉我,我根本无法做到这一点,我应该学习一门正确的编程语言:))

1 个答案:

答案 0 :(得分:1)

该脚本没有权限将文件保存在根目录下。您可以使用管理员权限运行脚本,也可以将文件保存到其他位置,例如主目录。

do shell script "say -o $HOME/hello.aiff hello"