Mac OS X - 快速更改文本转语音的声音

Mac OS X - 快速更改文本转语音的声音

我喜欢 Mac OS X 的文本转语音功能。由于我的母语不是英语,所以我很高兴 Lion 发布后添加了所有附加语言。不过,我使用英语和母语(德语)。改变声音有点麻烦。它需要太多步骤才能舒服。

有什么方法可以让这一切变得简单吗?我正在寻找快捷方式,也许是右上角的下拉菜单,任何东西都可以。

由于我的搜索没有成功,我希望在 SuperUser 上找到一些建议。非常感谢!

古罗马

答案1

我已经使用 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 键也有效,但我不知道如何立即应用更改。

答案2

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

答案3

如果~/Library/Preferences/com.apple.speech.voice.prefs.plist你得到了bash-script 语音它确实添加了您需要的所有命令行功能。

使用 Voices 将标准语音更改为 Alex 的 Apple Script 如下所示:

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 it +x,并将适当的别名添加到我的.bash_profile中以通过键入来调用它speak

答案4

我为此编写了一个状态栏工具:

https://github.com/Fredmf/polyglott

显然它在 Sierra 中仍然有效

相关内容