Mac OS X-音声合成の音声をすばやく変更


10

Mac OS Xのテキスト読み上げ機能が大好きです。私はネイティブスピーカーではないので、Lionがリリースされてから追加されたすべての追加言語にとても満足しています。ただし、私は母国語(ドイツ語)だけでなく英語も使用しています。声を変えることは少し苦痛です。快適にするために必要な手順が多すぎます。

これを簡単にする方法はありますか?私はショートカットを探していました。多分、右隅にあるドロップダウンメニューで何でもかまいません。

私の検索は成功しなかったので、ここでSuperUserに関するアドバイスを見つけたいと思います。どうもありがとう!

cu Roman


私はMacを使っており、トーキーを作成しました。自動言語検出機能を備えたテキスト読み上げブラウザ拡張機能です。すべてオープンソースですが、一部の機能は商用ディストリビューションのTalkie Premiumに含まれています。ブラウザーで(ショートカットキーを使用して)使用するのが最も簡単ですが、クリップボード(プレミアム)を介して任意のアプリケーションから使用できます。あなたを助けるかもしれません!joelpurra.com/projects/talkie
Joel Purra

回答:


9

FastScriptを使用して、このスクリプトへのショートカットを割り当てました。

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は、テキストの読み上げ中にCPUを100%以上使用することもできます。

別のオプションは、UIスクリプトを使用して2つの声を切り替えることです。

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 2015年

1
OS X 10.10.4では、1行目と2行目の間に「activate」という行を挿入した場合にのみ、UIスクリプトが機能します。それ以外の場合、次のエラーが発生します。読んでください...これが私に当てはまるが他の人には当てはまらない理由はありますか?
Jens Wirth、2015

3

ラウリィさん、ありがとうございました。

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スクリプトVoiceを取得する場合、への直接の変更は実際には必要ありません。

Voicesを使用して標準の音声をAlexに変更するApple Scriptは、次のようになります。

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

私はターミナルを好み、ポリグロットメニューバーの侵入をテストする代わりに、言語切り替えのニーズに応じて、この(明らかに単純な愚かな)シェルスクリプト(音声を使用)を作成しました。これを使用すると、デフォルトの言語を変更するためにターミナルに入力してspeak swedishor と入力するだけ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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.