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

この記事のポイント(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月時点)。

パレイド
Macで音声を読み上げる”say”コマンドの使い方|ショートカット連携と商用利用の注意点
この記事のポイント(30秒で要点) Mac標準の音声読み上げコマンド「say」で、文章をすぐ音声化できる 動画ナレーション・通知音・時報などに幅広く…


パレイド
VSCodeでOllamaを呼び出す:拡張機能Cotinueを利用する方法
導入:ローカルAIで開発効率を高める クラウドに頼らず、手元のマシンで大規模言語モデル(LLM)を動かせる環境として注目されているのが Ollama で…
パレイド
Macでダウンロードした実行ファイルを安全に使う方法
Macでダウンロードした実行ファイルを安全に使う方法 Macでインターネットからダウンロードした実行ファイルは、macOSのセキュリティ機能によりその…
パレイド
Windowsでダウンロードした実行ファイルを安全に使う方法(Macとの違いも整理)
Windowsでダウンロードした実行ファイルを安全に使う方法 インターネットから取得した .exe / .msi / .bat / .ps1 などの実行ファイル…
[NEXT] TECH · 其の4250
Stable Audio 3 Medium を RTX 4070 + ComfyUI で動かす|380 秒生成と VRAM 崖の現在地
[NEXT] TECH · 其の4203
Anima Base v1.0 と Turbo LoRA を比べる — M5 Air で 7-8 倍、ただし同 seed でも別の画が出る