【Mac】テキスト読み上げ機能(スピーチ)の言語・声・スピードをショートカットで切り替えられるようにしてみた

Apple

Macの標準機能「スピーチ」は画面上のテキストを読み上げてくれるものです。

システム環境設定 > アクセシビリティ > スピーチ からONにできます。

私はインドネシア語と英語を学習しているので、それぞれの発音を確かめたりするのに使っています。

とても便利なのですが、インドネシア語のテキストを読ませるにはインドネシア語の音声、英語のテキストを読ませるには英語の音声に設定する必要があります。

また、初見の文章は遅いスピードで、慣れてきたら速いスピードで聞きたいこともあります。

これらを毎回「システム環境設定」を開いて変更するのが面倒なので、ショートカットで言語を切り替えられるようにしました。

こんな人に役立つ

  • 2つ以上の言語でテキスト読み上げ機能を使いたい
  • 男声、女声を簡単に切り替えたい
  • スピードを簡単に切り替えたい

言語の変え方

  1. スクリプトに必要な変数を調べる
  2. Automatorでショートカットを作る
  3. ショートカットを設定する

スクリプトに必要な変数を調べる

まずは システム環境設定 > アクセシビリティ > スピーチ で、自分の使いたい音声のうちの1つを「システムの声」に設定します。

続いて「ターミナル」を開きます。(DockでLaunchpadのアイコン をクリックして、検索フィールドに「ターミナル」と入力してから、「ターミナル」をクリック)

黒い画面が開くので、下のボックス内の文字列をコピー&ペーストして、エンターキーを押します。

defaults read > defaults.txt

次に標準エディタの「テキストエディット」でdefaults.txtを開きます。ファイル選択画面右上の検索窓に「defaults.txt」と入力し、「このMac」を選択するとdefaults.txtが見つかると思います。

開いたらcommand+Fで以下の文字列を検索してください。

com.apple.speech.voice.prefs

そして、その下2行目〜5行目(画像で白くなっている部分)をコピーして、どこかメモにでもペーストしておきましょう。

ここまで終わったら「システム環境設定 > アクセシビリティ > スピーチ」から、「システムの声」を別の使いたい音声に設定してください。そして、ここまでの作業を繰り返して、各音声の「SelectedVoiceCreator」「SelectedVoiceID」「SelectedVoiceName」の数値・名前をメモしましょう。

使いたい音声すべての作業が終わったら次のステップにいきます。

Automatorでショートカットを作る

AutomatorはMacにデフォルトで入っているアプリケーションです。

Automatorを開いて「クイックアクション」を選びます。

続いて「ユーティリティ」の中の「シェルスクリプトを実行」を右の空白にドラッグ&ドロップ。

上の「ワークフローが受け取る項目」は「入力なし」を選択します。

「シェルスクリプトを実行」のウインドウの中に以下の文字列を入力します。{}には先ほど調べた数値・名前をそれぞれ代入してください。

defaults write com.apple.speech.voice.prefs SelectedVoiceCreator -int {SelectedVoiceCreator}
defaults write com.apple.speech.voice.prefs SelectedVoiceID -int {SelectedVoiceID}
defaults write com.apple.speech.voice.prefs SelectedVoiceName {SelectedVoiceName}
killall com.apple.speech.speechsynthesisd
killall SpeechSynthesisServer

例えばインドネシア語のDamayantiなら以下の通りです。

defaults write com.apple.speech.voice.prefs SelectedVoiceCreator -int 1886745202
defaults write com.apple.speech.voice.prefs SelectedVoiceID -int 335593677
defaults write com.apple.speech.voice.prefs SelectedVoiceName Damayanti
killall com.apple.speech.speechsynthesisd
killall SpeechSynthesisServer

注意点として、SelectedVoiceNameが2単語以上の場合は"Catherine Siri"のようにダブルクォーテーションを付けてください。

ここまで完了したらcommand+sで保存します。名前は「Speech Indonesian」などわかりやすいものにしておくと良いと思います。

ショートカットを設定する

システム環境設定 > キーボード > ショートカット > サービス の中に自作したショートカットがあります。選択して「ショートカットを追加」を押すと入力待ち状態になるので、割り当てたいキーを押します。

ちなみに私は「command + option + 数字」を割り当てています。

ショートカットが設定できたので、動作確認をして完成です。

スピードの変え方

言語の変え方と同じように、Automatorでショートカットを作ります。

下記のコードの「180」が標準のスピードなので、ここを何パターンか書き換えて同様に保存しましょう。

plutil -convert json ~/Library/Preferences/com.apple.speech.voice.prefs.plist -o - | python -c 'import json, sys;d=json.load(sys.stdin);[x.__setitem__(-1, 180) for x in d["VoiceRateDataArray"]];json.dump(d, sys.stdout)' | plutil -convert binary1 -o ~/Library/Preferences/com.apple.speech.voice.prefs.plist -

killall com.apple.speech.speechsynthesisd
killall SpeechSynthesisServer

私は135、180、220、360で使っています。ショートカットは「command + control + 数字」を割り当てました。

参考にしたサイト

システム環境設定をターミナル(defaultsコマンド)から設定する方法(一般)
defaultsコマンドの設定値の調べ方 システム環境設定のdefaultsコマンドで設定できる値の情報元を開示してほしいというお問い合わせをいただいたため、本文中に調べ方を追記しました。(2016/7/11) 新しいMacを購入した場合、OSをクリーンインストールした場合、毎回毎回「システム環境設定」
Changing the default text-to-speech voice
Tell application "System Preferences" set "default voice" to "Agnes" end tell The result is: Can’t set "default voice" to "anna". Access not allow...
How can I restart the text to speech feature?
I use the text to speech feature a lot. Sometimes, after I put the macbook to sleep and come back to it the feature no longer works. I would have to shutdown/re...
Macの音声読み上げ機能を限界を超えて爆速にする方法(自己責任) - Qiita
2020/10/21追記 OSのアップデートでこちらの編集方法では編集できなくなったため、以下のコマンドを使用して、plistファイルを編集するのが良いです。 Mac PlistBuddyコマンドを使ってplistファイルを自由...

コメント

タイトルとURLをコピーしました