レジストリ最適化後に Word の「読み上げ」で使っていた自然な音声が消え、「設定 > 時刻と言語 > 音声」に表示される音声パックが 0MB のままダウンロードできない――この現象は、音声合成(TTS)関連の機能・登録情報の欠落が主因です。ISO での上書きインストールに頼らず、PowerShell と DISM を用いてピンポイントに復旧する実践手順をまとめました。
結論と全体像:ISO なしで音声パックを復元する戦略
音声パックが「0MB」になるときは、(A)TTS AppX の登録不整合、(B)言語の「音声」機能(Windows Capability)の破損・未適用、(C)コンポーネント ストア破損、(D)キャッシュ・ランタイムの不整合、(E)更新コンポーネントのスタック詰まりが絡み合っていることが多いです。本記事の手順では以下の順序で安全に切り分け・復旧を進めます。
- 手順1:TTS コンポーネントの再登録(壊れた登録を復元)
- 手順2:言語の「音声」機能(Language.Speech)の再インストール
- 手順3:DISM/SFC によるシステム ファイル修復
- 手順4:Text‑to‑Speech ランタイム/キャッシュの再起動
- 手順5:レジストリのトークン確認(OneCore/SAPI 両系統)
- 手順6:Windows Update コンポーネントのリセット(必要時)
要点を1枚に:復旧フロー早見表
| 手順 | 内容 | 補足・ポイント |
|---|---|---|
| 1. TTS コンポーネントの再登録 | PowerShell(管理者)Get-AppxPackage -AllUsers -Name TextToSpeech | ForEach { Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" } | 音声合成 (TTS) の AppX を再登録。 環境差に強い代替: Get-AppxPackage -AllUsers *speech* | % { Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" } |
| 2. 音声パックの再インストール | 例:英語 (米国) と英語 (英国)Add-WindowsCapability -Online -Name "Language.Speech~~~en-US~0.0.1.0"Add-WindowsCapability -Online -Name "Language.Speech~~~en-GB~0.0.1.0" | ポイント ・指定は Speech.TTS.* ではなく Language.Speech~~~。・入れ直しは削除→追加: Remove-WindowsCapability -Online -Name "Language.Speech~~~en-US~0.0.1.0" → 追加。 |
| 3. システムファイル修復 | コマンド プロンプト(管理者)DISM /Online /Cleanup-Image /RestoreHealthSFC /Scannow | コンポーネント ストアや TTS 関連ファイル破損を修復。 完了後は再起動を推奨。 |
| 4. Text‑to‑Speech の再起動 | services.msc → (存在する場合) Microsoft Text to Speech を再起動 | 一部ビルドでは専用サービスが表示されないことがあります。その場合はサインアウト/再起動、または Stop-Process -Name SpeechRuntime -Force で代替。 |
| 5. レジストリ確認 | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens | トークンが欠けていれば手順1・2へ。 Word は主に OneCore のトークンを参照。 |
| 6. Windows Update リセット(必要時) | 関連サービス停止→SoftwareDistribution をリネーム→再開→wsreset | ストア/機能の取得に失敗する時に有効。プロキシや企業ネットワークでは特に効きます。 |
ヒント:「設定 > 時刻と言語 > 音声」で 0MB のままでも、作業後に PC を再起動すると容量が反映され正常化することがあります。
なぜ起きる?—「0MB」現象の正体と Word が参照する音声の仕組み
Windows 11 の読み上げ環境は大きく OneCore TTS と SAPI 5(従来) の二系統があります。Office の「読み上げ」は原則として OneCore 側の音声を優先して参照します。レジストリ デフラグなどのユーティリティによって、Speech_OneCore\Voices\Tokens 配下のトークンや AppX 登録が欠落すると、UI 上は言語自体が残っていても音声の「実体」が紐づかず、容量が 0MB のままになり選択できなくなります。
また、Windows の「自然な音声(Natural voices)」はナレーター向けに提供される別ラインのパッケージで、Word から直接使えないバージョンもあります(機能更新や Office の世代によって挙動が異なることがあります)。本記事の手順は、Word の読み上げで使う OneCore/SAPI 音声を復元することを主目的としています。
準備:作業前のチェックリスト
- 管理者権限の PowerShell/コマンド プロンプトを使えること。
- ネットワーク接続(Language.Speech のダウンロードに必要)。企業環境ではプロキシ経由の通信許可が必要です。
- 必要ならば復元ポイントや重要ファイルのバックアップを取得。
- セキュリティ製品の一時的な「自己防衛」機能がシステムファイルの修復を妨げないか確認。
手順詳細:順番どおりに実行する
手順1:TTS AppX の再登録(最も副作用が小さく即効性が高い)
まずは壊れた AppX 登録を洗い直します。PowerShell を「管理者として実行」し、次のいずれかを実行します。
# 指定名での再登録(提示のケースに合わせたコマンド)
Get-AppxPackage -AllUsers -Name TextToSpeech | ForEach-Object {
Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"
}
# 名前に依存しない安全寄りの再登録(環境差に強い)
Get-AppxPackage -AllUsers *speech* | ForEach-Object {
Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"
}
完了したらサインアウト→再サインイン。Word を開き「読み上げ」音声の一覧が復活していないか確認します。
手順2:Language.Speech を入れ直す(言語ごとの音声本体)
次に、言語ごとの音声機能(Capability)を入れ直します。まず現在の状態を確認します。
# どの音声能力が入っているか確認
Get-WindowsCapability -Online | Where-Object { $_.Name -like 'Language.Speech*' } | Select-Object Name, State
不足・壊れているものは削除→追加の順で入れ直します(例:英語(米国)、英語(英国))。
# 削除(入れ直し時のみ)
Remove-WindowsCapability -Online -Name "Language.Speech~~~en-US~0.0.1.0"
Remove-WindowsCapability -Online -Name "Language.Speech~~~en-GB~0.0.1.0"
# 追加(新規または入れ直し)
Add-WindowsCapability -Online -Name "Language.Speech~~~en-US~0.0.1.0"
Add-WindowsCapability -Online -Name "Language.Speech~~~en-GB~0.0.1.0"
代表的な言語コード一覧(コピペ用)
| 言語 | Capability 名(Language.Speech~~~) |
|---|---|
| 日本語 | Language.Speech~~~ja-JP~0.0.1.0 |
| 英語(米国) | Language.Speech~~~en-US~0.0.1.0 |
| 英語(英国) | Language.Speech~~~en-GB~0.0.1.0 |
| 中国語(簡体字) | Language.Speech~~~zh-CN~0.0.1.0 |
| 中国語(繁体字) | Language.Speech~~~zh-TW~0.0.1.0 |
| 韓国語 | Language.Speech~~~ko-KR~0.0.1.0 |
| ドイツ語 | Language.Speech~~~de-DE~0.0.1.0 |
| フランス語 | Language.Speech~~~fr-FR~0.0.1.0 |
| スペイン語(スペイン) | Language.Speech~~~es-ES~0.0.1.0 |
| スペイン語(メキシコ) | Language.Speech~~~es-MX~0.0.1.0 |
| ポルトガル語(ブラジル) | Language.Speech~~~pt-BR~0.0.1.0 |
| イタリア語 | Language.Speech~~~it-IT~0.0.1.0 |
| ロシア語 | Language.Speech~~~ru-RU~0.0.1.0 |
注意:Language.Speech はオフライン音声合成の主要コンポーネントです。似た名前の 音声認識(Speech Recognition)とは別物なので誤追加に注意してください。
手順3:DISM / SFC によるコンポーネント修復
Capability の導入がうまくいかない場合や復帰しない場合は、Windows のコンポーネント ストア自体に破損がある可能性があります。コマンド プロンプト(管理者)で次を実行し、完了後に OS を再起動します。
DISM /Online /Cleanup-Image /RestoreHealth
SFC /Scannow
手順4:Text‑to‑Speech ランタイム/キャッシュの再起動
環境によっては services.msc に Microsoft Text to Speech のサービスが表示されないことがあります。表示されない場合は、以下のいずれかで代替します。
- サインアウト→サインイン、または OS 再起動。
- PowerShell(管理者)でランタイムを再起動:
Stop-Process -Name SpeechRuntime -Force -ErrorAction SilentlyContinue Start-Sleep -Seconds 2 # Word/Edge/ナレーターの起動に応じて自動的に再生成されます
手順5:レジストリでトークンを確認(Word が読む声の在処)
Word は主に Speech_OneCore 側のトークンを参照します。PowerShell で一覧を出して存在を目視確認します。
$keys = @(
'HKLM:\SOFTWARE\Microsoft\Speech_OneCore\Voices\Tokens',
'HKLM:\SOFTWARE\Microsoft\Speech\Voices\Tokens',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Speech\Voices\Tokens'
)
foreach($k in $keys){
if(Test-Path $k){ Get-ChildItem $k | Select-Object PSChildName, PSPath }
}
何も列挙されない、または必要言語が欠けている場合は、手順1・2に戻って再登録/再インストールを行います。
手順6:Windows Update/ストア関連のリセット(必要時)
Language.Speech の取得が 0% のまま進まない、0MB 表示から変わらない場合は更新コンポーネントのスタック詰まりが原因のことがあります。以下は一般的な安全策です。
:: コマンド プロンプト(管理者)
net stop wuauserv
net stop bits
net stop cryptsvc
net stop msiserver
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
ren %systemroot%\System32\catroot2 catroot2.old
net start msiserver
net start cryptsvc
net start bits
net start wuauserv
wsreset
その後、再起動してから「音声」機能の追加を再試行します。企業ネットワークではプロキシ設定や WSUS により機能の取得が抑止されることがあるため、管理者ポリシーも確認してください。
UI での最終仕上げ:Word/Windows の設定を見直す
Windows 側の確認
- 設定 > 時刻と言語 > 音声で、対象言語の音声が「インストール済み」になっているか確認。
- 設定 > 時刻と言語 > 言語と地域 > 言語のオプションから、対象言語の「音声」が既定で利用可能になっているかを確認。
Word 側の確認
- 任意の文書を開き、校閲 > 読み上げを開始。
- 読み上げコントロールの音声セレクターに、復元した言語の音声(例:Microsoft Haruka など)が現れているか確認。
- 表示されないときは Word を再起動(必要であれば PC を再起動)。
「ナレーターの自然な音声」と Word の関係について
「アクセシビリティ > ナレーター」から追加できる自然な音声(Natural voices)は、ナレーター優先の別パッケージです。Word の「読み上げ」で選べない世代/構成もあります。Word での自然音声を重視する場合は、まず OneCore 音声の復旧を優先し、必要に応じて別の音声(地域差の少ない en-US など)を補助的に導入すると実用性が上がります。
ありがちな詰まりどころと回避策
| 症状 | 想定原因 | 対処 |
|---|---|---|
| 音声パックが 0MB のまま | AppX 未登録/Capability 破損/更新スタック詰まり | 手順1→2→6 の順で対処。再起動後に UI を再確認。 |
| 「進行状況:ダウンロード中」で止まる | ネットワーク/プロキシ/WSUS 制御 | ネットワークを変えて試す、管理ポリシー確認、手順6でリセット。 |
| Word だけ音声が選べない | OneCore トークン欠落、SAPI/OneCore の不整合 | 手順5でトークン確認、手順1・2を再実施。 |
| 音質が劣化した/速度が不自然 | 別系統の音声にフォールバック | Word の音声セレクターで目的の声を明示選択。無ければ手順2で言語追加。 |
| エラー 0x800f0954 などで機能追加に失敗 | 機能オンデマンドの取得先が WSUS 固定 | ネットワーク方針を確認。必要に応じて一時的にオフライン FOD 共有を指定(管理者向け)。 |
安全運用のヒント:レジストリ デフラグ後に壊さないために
- レジストリのクリーナー/デフラグは AppX/Capabilities の登録に影響することがあります。特に
Speech_OneCoreやAppX関連キーを誤ってクリーンアップしない設定に。 - 定期的に復元ポイントを作成。月例更新の前後、ユーティリティ実行の前にスナップショットを残します。
- Office 更新と Windows 機能更新のタイミングが重なると、音声デバイスやトークンが再評価されることがあります。復旧後 1~2 回の再起動で安定化するケースが多いです。
ケース別の具体策:状況に合わせて最短で復旧する
ケースA:日本語だけ読めれば良い
以下だけでも十分復旧します。
# 再登録(推奨・簡易)
Get-AppxPackage -AllUsers *speech* | % { Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" }
# 日本語音声の入れ直し
Remove-WindowsCapability -Online -Name "Language.Speech~~~ja-JP~0.0.1.0"
Add-WindowsCapability -Online -Name "Language.Speech~~~ja-JP~0.0.1.0"
ケースB:多言語(英語/中国語/韓国語)も必要
必要分だけ追加。インストール作業はまとめて行うと失敗しにくいです。
Add-WindowsCapability -Online -Name "Language.Speech~~~en-US~0.0.1.0"
Add-WindowsCapability -Online -Name "Language.Speech~~~zh-CN~0.0.1.0"
Add-WindowsCapability -Online -Name "Language.Speech~~~ko-KR~0.0.1.0"
ケースC:どうしても入らない(0MB のまま変化なし)
- 手順6の Windows Update/ストア リセット を実施。
- DISM/SFC を再実行→再起動。
- ネットワークを変えて再試行(テザリングなど)。
- 管理環境では WSUS/FOD の取得ポリシーを確認。
検証:復旧できたかを確かめる 5 つのポイント
- PowerShellで
Get-WindowsCapability ... State = Installedになっている。 - 設定 > 音声に対象言語が容量付きで表示され、プレビューで音声が再生できる。
- レジストリに該当言語のトークンが存在する(OneCore と SAPI の両方)。
- Word の読み上げで対象音声を選択できる。
- OS 再起動後も設定が保持されている。
FAQ:よくある質問
Q. 「SpeechRecognition」と「Language.Speech」は何が違いますか?
SpeechRecognition は音声認識(マイク入力の解析)用の機能、Language.Speech は音声合成(テキスト→音声)用の機能です。Word の読み上げに必要なのは後者です。
Q. ナレーターの「自然な音声」が Word に出てきません。
ナレーター専用ラインのため Word 側に露出しない構成があります。まずは OneCore の音声を正常化することが先決です。
Q. サービス一覧に「Microsoft Text to Speech」がありません。
ビルドによっては専用サービスが表示されません。サインアウト/再起動や SpeechRuntime の再起動で代替できます。
Q. 企業の PC で機能の追加に失敗します。
WSUS/ポリシーで機能オンデマンドの取得が抑止されている場合があります。管理者に相談し、必要に応じてオフラインの FOD 共有から導入してください。
付録:コピペで使える「一括復旧」スクリプト(管理者 PowerShell)
よく使う日本語+英語(米/英)の音声をまとめて整備するサンプルです。必要に応じて言語行を増減してください。
# ========== TTS 再登録 ==========
Write-Host "Re-registering TTS AppX..." -ForegroundColor Cyan
Get-AppxPackage -AllUsers *speech* | ForEach-Object {
Try {
Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" -ErrorAction Stop
Write-Host " Re-registered: $($_.Name)"
} Catch {
Write-Host " Skip/Failed: $($_.Name) - $($_.Exception.Message)"
}
}
# ========== 必要言語(例:ja-JP/en-US/en-GB)を入れ直し ==========
$languages = @(
"Language.Speech~~~ja-JP~0.0.1.0",
"Language.Speech~~~en-US~0.0.1.0",
"Language.Speech~~~en-GB~0.0.1.0"
)
foreach($cap in $languages){
Write-Host "`nProcessing $cap" -ForegroundColor Yellow
Try {
Remove-WindowsCapability -Online -Name $cap -ErrorAction SilentlyContinue | Out-Null
} Catch {}
Add-WindowsCapability -Online -Name $cap
}
# ========== DISM/SFC の案内 ==========
Write-Host "`nRun DISM/SFC from elevated Command Prompt if issues remain:" -ForegroundColor Green
Write-Host " DISM /Online /Cleanup-Image /RestoreHealth"
Write-Host " SFC /Scannow"
# ========== SpeechRuntime のリフレッシュ ==========
Get-Process SpeechRuntime -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue
Write-Host "SpeechRuntime refreshed. Please sign out/in or reboot if required." -ForegroundColor Green
最終手段について(読み飛ばし可)
上記の 1~6 を実施しても復旧しない場合のみ、アプリとデータを保持する インプレース修復(メディア作成ツール)を検討します。ただし「音声だけ直したい」用途にはオーバーキルなので、まずは本記事の手順での復旧を推奨します。
まとめ:原因を見極め、最小コストで「読み上げ」を取り戻す
レジストリ デフラグ等で失われた TTS は、TTS の再登録 → Language.Speech の入れ直し → DISM/SFC → ランタイム再起動 → トークン確認 → 更新コンポーネントのリセットという順番で、多くのケースが ISO なしに復旧可能です。Word の読み上げが仕事や学習のワークフローに直結している方は、上記をテンプレ化しておくと、同様のトラブルに再び遭遇しても短時間で復帰できます。
参考:最少コマンドだけで直したい人向け「3 行セット」
日本語音声だけすぐ直したい場合の最短例です(管理者 PowerShell)。
Get-AppxPackage -AllUsers *speech* | % { Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" }
Remove-WindowsCapability -Online -Name "Language.Speech~~~ja-JP~0.0.1.0"
Add-WindowsCapability -Online -Name "Language.Speech~~~ja-JP~0.0.1.0"
適用後は PC を再起動し、Word の読み上げで音声セレクターが復帰しているかを確認してください。

コメント