我喜欢Mac OS X的文本到语音功能。由于我不是英语母语人士,所以我对自Lion问世以来添加的所有其他语言感到非常高兴。但是,我确实使用英语以及母语(德语)。改变声音有点痛苦。它只需要太多的步骤就可以舒适。
有什么办法可以简化这一过程?我在寻找快捷方式,也许是在右上角的某个下拉菜单,一切都很好。
由于搜索不成功,我希望在此处找到有关SuperUser的建议。非常感谢!
古罗马
我喜欢Mac OS X的文本到语音功能。由于我不是英语母语人士,所以我对自Lion问世以来添加的所有其他语言感到非常高兴。但是,我确实使用英语以及母语(德语)。改变声音有点痛苦。它只需要太多的步骤就可以舒适。
有什么办法可以简化这一过程?我在寻找快捷方式,也许是在右上角的某个下拉菜单,一切都很好。
由于搜索不成功,我希望在此处找到有关SuperUser的建议。非常感谢!
古罗马
Answers:
我已经使用FastScripts为该脚本分配快捷方式:
try
set old to the clipboard as record
end try
try
tell application "System Events" to keystroke "c" using command down
delay 0.05
say (the clipboard) using "Kyoko"
end try
try
set the clipboard to old
end try
您还可以在Automator中创建服务:
10.7和10.8中存在一个错误,其中直到您将鼠标悬停在菜单栏中的服务菜单上时,Automator服务的快捷方式才总是起作用。说文字时,WorkflowServiceRunner也可以使用100%以上的CPU。
另一个选择是使用UI脚本在两种声音之间切换:
tell application "System Preferences"
reveal anchor "TTS" of pane "com.apple.preference.speech"
end tell
tell application "System Events" to tell process "System Preferences"
tell pop up button 1 of tab group 1 of window 1
click
delay 0.1
if value is "Alex" then
click menu item "Victoria" of menu 1
else
click menu item "Alex" of menu 1
end if
end tell
end tell
quit application "System Preferences"
更改com.apple.speech.voice.prefs.plist中的SelectedVoiceID密钥也可以,但是我不知道如何立即应用更改。
~/Library/Preferences/com.apple.speech.voice.prefs.plist
立即应用更改,请运行pkill com.apple.speech.speechsynthesisd
,这将导致系统自动重新启动该过程,此时将获取更改。
非常感谢Lauryi。
我扩展了您的UI脚本编制方法,以正确处理德语和英语语音。问题是,当您的系统语言不是英语时,所有非系统语言都将被隐藏(如果当前未选择)。您必须选择:首先显示更多声音。我的代码缺乏一点优雅,但是可以工作。这是(已更新):
tell application "System Preferences"
reveal anchor "TTS" of pane "com.apple.preference.speech"
end tell
set tom to 0
tell application "System Events" to tell process "System Preferences"
tell pop up button 1 of tab group 1 of window 1
click
delay 0.2 -- without this the value was sometimes "Loading Voices…"
if value is "Tom" then
click menu item "Anna" of menu 1
else
click menu item "Mehr Stimmen anzeigen" of menu 1 -- show up all available voice
set tom to 1
end if
end tell
end tell
if tom is 1 then
delay 0.5
tell application "System Events" to tell process "System Preferences"
tell pop up button 1 of tab group 1 of window 1
click
delay 0.2 -- without this the value was sometimes "Loading Voices…"
click menu item "Tom" of menu 1
end tell
end tell
end if
quit application "System Preferences"
~/Library/Preferences/com.apple.speech.voice.prefs.plist
如果您获得了bash脚本音色,它确实添加了所需的所有命令行功能,则实际上并不需要直接更改。
使用“语音”将标准语音更改为Alex的Apple脚本看起来就像这样:
on run
do shell script "voices -d Alex"
end run
我确实更喜欢终端,而不是测试多语言菜单栏的入侵,而是制作了这个(很简单的愚蠢)shell脚本(使用语音)来满足我的语言切换需求。有了它,我要做的就是更改默认语言,就是跳到终端中键入speak swedish
或speak french
。这非常适合我的工作流程。希望您能找到适合您的解决方案。
# Choose a voice in one of some selected languages
# Use "voices" from https://github.com/mklement0/voices#manual-installation
if [[ $1 = "" ]]
then
echo "ERROR. No language specified. Type a language as in 'speak hebrew'"
fi
if [[ $1 = "swedish" || $1 = "Swedish" ]]
then
voices -d Klara
fi
if [[ $1 = "english" || $1 = "English" ]]
then
voices -d Daniel
fi
if [[ $1 = "american" || $1 = "American" ]]
then
voices -d Alex
fi
if [[ $1 = "french" || $1 = "French" ]]
then
voices -d Aurelie
fi
if [[ $1 = "spanish" || $1 = "Spanish" ]]
then
voices -d Jorge
fi
我将其保存为脚本“ speak.command”,将其chmod + x,然后将适当的别名添加到我的.bash_profile中,以通过键入来调用它speak
。