我正在尝试在mac终端上使用序列中的多个语音来使用say
命令。
例如,请注意以下代码:
say -v 'Alex' 'Hello World'
say -v 'Kathy' 'Hello World!'
这会做我想要的但它会重复命令say
。我假装的是这样的:
say -v 'Alex' 'Hello World' -v 'Kathy' 'Hello World'
此行不起作用,但它代表我正在尝试做的事情。
我的当前脚本编写如下:
say -o ttsTest.aiff \
-v 'Kathy' "Hello world! This is Kathy speaking!" \
-v 'Fred' "And here is Fred." \
-v 'Bruce' "Right" \
-v 'Alex' "Alex over here, don't forget me."
以上代码以单一语音读取所有文本。
参考文献: say(1)
PS:如上面我的脚本摘录所示,我试图将多个声音输出到同一个文件中。
答案 0 :(得分:2)
使用say
命令无法执行您的操作。如果可以这样做,引用肯定会注意到-v
可以多次使用,而不是。{/ p>
您需要的是合并AIFF文件的工具。 OS X不附带一个,但存在这样的命令行工具,例如sox,ffmpeg等,但您必须自己构建它们。
BTW要在终端中获取命令的引用,只需使用man
工具,例如man say
显示引用(向上/向下滚动箭头键,空格键向下滚动整页,<
转到第一行,>
转到最后一行,退出{{ 1}};您也可以搜索,例如输入q
并按Enter键,它会向前搜索语音,/voice
再次搜索,n
搜索语音但向后搜索?voice
1}}以获得更多帮助)
答案 1 :(得分:0)
您可以通过链接cmd1 && cmd2
来运行其他命令。所以你会把
say -v 'Alex' 'Hello World' && say -v 'Kathy' 'Hello World!'
。
答案 2 :(得分:0)
你可以写一个脚本:
#!/bin/bash
while [ ! -z "$1" ]; do
voice="$1"
shift
say -v "$voice" "$1"
shift
done
将其保存到文件中,运行chmod +x myscript
,然后按以下方式调用它:
`./myscript Kathy "Hello world! This is Kathy speaking!" Fred "And here is Fred." Bruce "Right" Alex "Alex over here, don't forget me."`