Windowsで Mac の”say”を再現|PowerShellで音声合成APIを使う方法

AI音声

この記事のポイント(30秒で要点)

  • MacのsayコマンドをWindowsのPowerShellで再現
  • 追加ソフトなしで音声合成(.NET Speech API)を実現可能
  • バッチ化で「say」風操作も可能。通知・自動処理に応用できる
  • eSpeak NG / Azure Speechで高音質音声にも対応

🎯 導入(背景と目的)

Macのターミナルで say "Hello" と入力すると音声が流れる。
このシンプルなコマンドを、Windowsでも使いたい――そう思ったことはありませんか?

Windowsには「say」コマンドが標準で存在しませんが、PowerShellや外部ツールを使えば同等の音声読み上げ機能を実現できます。
この記事では、3つの方法を順に紹介します。

  1. PowerShellの標準機能を使う
  2. バッチファイルでsay風コマンドを作る
  3. 外部ツールで高品質音声を利用する

FAQ(よくある質問)

Q1. 日本語音声が出ない。
設定 → 時刻と言語 → 音声認識 → 音声パック から「日本語音声」を追加してください。PowerShell側では-v指定は不要です。

Q2. 音声をファイルとして保存したい。
$synth.SetOutputToWaveFile("output.wav")を追加すると、音声をWAV形式で出力できます。

Q3. Azure Speech CLIとの違いは?
PowerShell版はローカル合成(無料・即時)。Azure版はクラウド合成で高品質ですが、APIキー登録が必要です。

Q4. バッチファイルのパス指定がうまくいかない。
バックスラッシュ\ではなくダブルクォートで囲むか、相対パスで指定します。

Q5. 商用利用は可能?
Windows標準音声は個人利用前提です。商用利用する場合は、Azure SpeechやOpenAI TTSなど別音声の使用を推奨します。

⚙️ 準備・前提

  • Windows 10 / 11
  • PowerShell 5.1以上(標準搭載)
  • .NET Framework 4.0以上
  • インターネット接続(クラウドTTSを使う場合)

Windowsには .NETSystem.Speech.Synthesis クラスが含まれており、
追加ソフトなしでテキスト読み上げが可能です。


🧩 手順・本編

① PowerShellで「say」相当を実現する

PowerShellで以下のスクリプトを作成し、speak.ps1 として保存します。

[CmdletBinding()]
param(
  [Parameter(Position = 0, Mandatory = $true)]
  [String] $text
)

Add-Type -AssemblyName System.Speech
$synth = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer
$synth.Speak($text)

次に以下を実行します。

powershell -ExecutionPolicy Bypass -File .\speak.ps1 "こんにちは、世界"

Macの say "こんにちは" とほぼ同じ感覚で動作します。


② バッチファイルで「say」風コマンドを作る

コマンドプロンプトでも使えるように、saywin.bat を作成します。

@echo off
set text=%*
powershell -Command "Add-Type -AssemblyName System.Speech; $s=New-Object System.Speech.Synthesis.SpeechSynthesizer; $s.Speak('%text%')"

保存後、以下のように入力します。

saywin こんにちは Windows

これでMacの「say」風操作が可能になります。


③ 外部ツールを使う(高品質音声)

より自然な音声を使いたい場合は、外部TTS(Text To Speech)ツールも便利です。

ツール名特徴
eSpeak NG軽量で多言語対応、オープンソース
Azure Speech CLI高品質クラウド音声(要APIキー)
winsay / pttsシンプルなWindows版sayツール(GitHub配布)

例:eSpeak NGで日本語を読む場合

espeak-ng -v ja "おはようございます"

Azure Speech CLIを使う場合:

spx synthesize --text "おはようございます" --voice ja-JP-NanamiNeural --file output.wav

🔊 結果・サンプル

方法音質日本語対応特徴
PowerShell標準音声追加ソフト不要・即実行
バッチ版標準音声Mac風操作感
eSpeak NG合成音軽量・高速
Azure Speech高品質クラウド音声・自然な発話

💡 考察・活用

通知や自動監視にも応用できます。

findstr /i "ERROR" logfile.txt > errors.txt
if exist errors.txt (
  call saywin "エラーが発生しました"
)

PythonやC#から呼び出せば、
「しゃべる自動化スクリプト」としても使えます。


🧭 まとめ・次の一歩

Windowsでも、少しのスクリプトでMacの「say」体験を再現可能です。

  • PowerShellで音声合成を実装
  • バッチでコマンド化
  • eSpeakやAzureで高音質化

まずはPowerShell版を試して、音声通知や自動処理に組み込んでみましょう。


❓ FAQ

Q:日本語音声が出ません。
A:設定 → 時刻と言語 → 音声認識 から「日本語音声パック」を追加してください。

Q:音声をファイル保存したい。
A:$synth.SetOutputToWaveFile("output.wav") を追加すると、WAV形式で出力できます。

Q:Azure Speech CLIは無料ですか?
A:月5000文字まで無料利用枠があります(2025年10月時点)。



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