Mac OS X-快速更改语音以进行语音合成


10

我喜欢Mac OS X的文本到语音功能。由于我不是英语母语人士,所以我对自Lion问世以来添加的所有其他语言感到非常高兴。但是,我确实使用英语以及母语(德语)。改变声音有点痛苦。它只需要太多的步骤就可以舒适。

有什么办法可以简化这一过程?我在寻找快捷方式,也许是在右上角的某个下拉菜单,一切都很好。

由于搜索不成功,我希望在此处找到有关SuperUser的建议。非常感谢!

古罗马


我在Mac上,并创建了Talkie:具有自动语言检测功能的文本到语音浏览器扩展。所有这些都是开源的,但是某些功能在商业发行版Talkie Premium中。最容易在浏览器中使用(带快捷键),但是您可以通过剪贴板在任何应用程序中使用它(高级)。可能会帮助您!joelpurra.com/projects/talkie
Joel Purra

Answers:


9

我已经使用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密钥也可以,但是我不知道如何立即应用更改。


哇,非常感谢您提供非常详细的答案,并向我展示了很多选择。Automator服务对我来说非常有用,此外,我现在知道这些服务。我可能也想添加一些其他的内容:)

1
好东西。从OSX 10.10开始:要~/Library/Preferences/com.apple.speech.voice.prefs.plist立即应用更改,请运行pkill com.apple.speech.speechsynthesisd,这将导致系统自动重新启动该过程,此时将获取更改。
mklement0

1
在OS X 10.10.4上,仅当我在第1行和第2行之间插入“激活”行时,UI脚本才起作用。否则,我将收到错误消息:“进程\“系统偏好设置\”的窗口1的选项卡组1无法被阅读...为什么这适用于我但不适用于其他人的任何建议?
詹斯·沃思

3

非常感谢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"

0

~/Library/Preferences/com.apple.speech.voice.prefs.plist如果您获得了bash脚本音色,它确实添加了所需的所有命令行功能,则实际上并不需要直接更改。

使用“语音”将标准语音更改为Alex的Apple脚本看起来就像这样:

on run
    do shell script "voices -d Alex"
end run

我确实更喜欢终端,而不是测试多语言菜单栏的入侵,而是制作了这个(很简单的愚蠢)shell脚本(使用语音)来满足我的语言切换需求。有了它,我要做的就是更改默认语言,就是跳到终端中键入speak swedishspeak 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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.