32
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellで「Windowsの声」をしゃべらせる ~ログ完了を音声で知らせる実用スクリプト~

32
Last updated at Posted at 2025-10-28

はじめに

image.png

Windowsには標準で「音声読み上げエンジン(Speech API)」が搭載されています。実はこれ、PowerShellだけで簡単に呼び出すことができます。

使い道の例

  • ログ処理やバックアップ完了を音声で通知
  • 英語・日本語の自動切り替え
  • 簡易読み上げリーダーの作成

たった数行で「しゃべるWindows」を作れるので、今回はその基本と応用を紹介します。

基本:Windowsにしゃべらせるコード

Add-Type -AssemblyName System.Speech
$voice = New-Object System.Speech.Synthesis.SpeechSynthesizer
$voice.Speak("カレー大好き、今日もカレー食べるためお仕事頑張りましょう。")

これだけで、Windowsの標準音声がしゃべります。.Speak()にテキストを渡すだけで音声合成してくれます。便利です。

応用①:ログ完了を音声で通知

たとえば長時間の処理が終わったときに「終わりました」としゃべらせることで、ほかの作業をしていても音で完了を確認できます。

# 長い処理(例)
Start-Sleep -Seconds 10

# 処理完了を音声通知
$voice.Speak("ログ処理が完了しました。")

Tip: タスクスケジューラと組み合わせれば「毎朝の自動通知」や「深夜バッチ完了報告」なども音声で行えます。

応用②:音声を英語と日本語で切り替える

SelectVoiceByHints()を使えば、音声の性別や言語を切り替え可能です。OSにインストールされている音声エンジンに応じて、英語・日本語などを選択できます。

# 英語音声に切り替え
$voice.SelectVoiceByHints(
    [System.Speech.Synthesis.VoiceGender]::Male,
    [System.Speech.Synthesis.VoiceAge]::Adult,
    0,
    [System.Globalization.CultureInfo]::GetCultureInfo("en-US")
)
$voice.Speak("I really love 9-ball. I wish there were more 9-ball disciplines in world tournaments.")

英文よくなかった・・、9-ballの試合がもっと増えてほしいといいたかった。

応用例

  • 日本語ログ → 日本語で通知
  • 英語ログ → 英語で通知
  • グローバルチーム用スクリプトに最適

英語学習のディクテーションでもつかえるかも・・・

応用③:テキストファイルを読み上げる

ファイルの内容をそのまま音声で再生することもできます。

$text = Get-Content "C:\logs\report.txt" -Raw
$voice.Speak($text)
  • 週次レポートや実行ログを「耳で確認」できる
  • 長文でもながら作業でチェック可能

オプション設定(スピード・音量)

音量や話す速度を調整できます。

$voice.Rate = -2   # 話す速度 (-10 ~ 10)
$voice.Volume = 80 # 音量 (0~100)

ゆっくり話すナレーション風や、早口の通知風など、好みで調整可能です。

音声をファイルに保存する(WAV出力)

しゃべるだけでなく、音声をファイルとして残すこともできます。

$voice.SetOutputToWaveFile("C:\temp\notice.wav")
$voice.Speak("音声ファイルを作成しました。")
$voice.SetOutputToDefaultAudioDevice()

作成したWAVファイルをTeamsやSlackの通知音に使うのも面白いです。

まとめ

PowerShellだけでWindowsの音声合成機能を手軽に利用できます。
.Speak() メソッドで即座に音声化でき、.SelectVoiceByHints() を使えば多言語にも対応可能です。
ログ完了の読み上げやタスク連携など、実用面でも活用の幅が広いのが特徴です。

発展アイデア

  • 音声通知つきGUIツールを作る(WPF+PowerShell)
  • システム監視で異常時に「警告」をしゃべらせる
  • ChatGPT API連携で"しゃべるAI端末"にする

参考

32
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?