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

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

この記事のポイント(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をローカル実行|Continue拡張でコード補完・チャット(config.yaml対応)こんにちは、パレイド技術部の夏目です。 クラウドの大型 LLM がコーディング支援で優位なのは、2026 年の今も変わりません。ただ「手元のマシンだけ… パレイドMacでダウンロードした実行ファイルを安全に使う方法Macでダウンロードした実行ファイルを安全に使う方法 Macでインターネットからダウンロードした実行ファイルは、macOSのセキュリティ機能によりその… パレイドWindowsでダウンロードした実行ファイルを安全に使う方法(Macとの違いも整理)Windowsでダウンロードした実行ファイルを安全に使う方法 インターネットから取得した .exe / .msi / .bat / .ps1 などの実行ファイル…
▶ 関連動画 · YOUTUBE
━━ 観るのを再開 ━━
前の記事を読む
同部門 · Macで音声を読み上げる”say”コマンドの使い方|ショートカット連携と商用利用の注意点
動画を観る
YouTube
次の記事を読む
同部門 · MacでWhisperをインストールして音声認識を試す(ローカル実行・Apple Silicon対応)
━━ 他の観測領域 ━━
TECH · 技術部
ファミリーベーシック 機械語対応(1)|なぜ機械語か
PHIL · 思想部
技術部 試験放送 総括 ── 3つの BGM 生成エンジンを実配信で比べて。速さの SA3、バランスの Turbo、音質の XL
FRONT · 辺境部
【スーパーマリオ256W】世界11を歩く — ファミコンのバグ面 11-1〜11-4