音声入力についてはまだキーボード入力?macOS Sonomaで強化された「音声入力」を活用しよう!が詳しい。
音声読み上げについては、普通にGUIでできるほか、コマンド派には say
コマンドが便利である。say "Hello world"
などとすれば読み上げてくれる。say -v '?'
で声の一覧が出るので say -v Alex "Hello world"
のように指定できる。GUIではシステム設定→アクセシビリティ→読み上げコンテンツと連動している。システムの声→声を管理…で追加できる。
音声ファイルはGUIのほか afplay
コマンドでも再生できる。
Macのシステム音を別のアプリに入力したり録音したりするには、入力・出力の両方に指定できるオーディオループバックデバイス(仮想デバイス)が便利である。私はBlackHoleを使っている。brew install blackhole-2ch
で入る。Soundflowerも人気らしい(Apple Silicon未対応?)。
BlackHole 2chをインストールすると、システム設定→サウンドにBlackHole 2ch(仮想)が入力・出力の両方に現れるので、両方でこれを選択すると、システム音がアプリの入力になる。例えばYouTubeを再生して、QuickTime Playerでファイル→新規オーディオ収録すると、録音できる。
出力を仮想デバイスにすると、音が聞こえない。これでは不便なので、Finder→アプリケーション→ユーティリティ→Audio MIDI設定を立ち上げ、左下の「+」をクリックし、「複数出力装置を作成」を選ぶ。作成できたら、右ペインで、通常の出力装置(例えば「外部ヘッドフォン」)とBlackHole 2chの両方の「使用」にチェックを付ける。こうすることによって、出力が二つに分岐される(いわゆるtee)。システム設定→サウンド→出力にも「複数出力装置」が現れるので、これを選んでおけば、聞きながら録音したりできる。
録音するためのアプリは、QuickTime Playerでもいいが、Audacityという昔からあるツールをインストールしておけば、システム設定をいじらなくてもBlackHoleを入力に設定でき、保存形式も選べる。
音声をテキストに文字起こしするには、私はwhisper.cppを使っている。上記のようにして保存した音声ファイルをWAV形式(16000Hz 1ch)にして入力すればテキスト化できる。変換にはFFmpegが便利である。
ffmpeg -i in.webm -ar 16000 -ac 1 -c:a pcm_s16le out.wav
のような感じでできる。AudacityならGUIで保存形式を選べる。
whisper.cppはソースコードでもらってきて(git clone https://github.com/ggerganov/whisper.cpp.git
)コンパイル(make
)し、モデル(ggml-large.bin
とか)を別途ダウンロードしておく必要がある。起動例:
./main --language en --model models/ggml-large.bin --file in.wav --output-txt --output-vtt
リアルタイム文字起こしするには、brew install sdl2
しておいて、make stream
する。起動例:
./stream --language ja --model models/ggml-large.bin --capture 3
これで標準出力にリアルタイム文字起こしできる。最後の番号は無指定で起動したときに例えば
init: - Capture device #3: 'BlackHole 2ch'
のように表示されるのでその番号を指定する。