ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Windows】BitLockerが発動した場合の対処方法

 DELLのノートPCのWindowsUpdateとBIOSアップデートを走らせたところ、最近ちょっと話題になったBitLockerが発動してしまいました。ちなみにInspiron 5515のWindows10という環境でした。

 今までBitLockerというものを意識したことがなかったので、BitLocker回復キーの取得方法や最終的にわからなかった場合の対処法をメモしておこうと思った次第です。


 では、始めます。


1:BitLockerとは
 BitLockerについて簡単に説明すると、ドライブ(内蔵SSDなど)を紛失した際にデータ漏洩を防ぐためのものらしいです。

 メーカー製のPCを購入した際に「デバイスの暗号化」によってドライブ(内蔵SSDなど)が自動的に暗号化されてることが多く、WindowsUpdateやBIOSのアップデートで意図せず設定が変更されてしまった際にBitLockerが発動してしまうことがあるようです。発動の具体的な条件はよくわかりませんでした。
 一度発動するとドライブがロック状態になるため、BitLocker回復キーを入力しないとWindows自体が立ち上がらずにセーフモードでの起動などもできなくなります。

 なので結論としてはWindowsのPCを購入した直後にBitLocker回復キーをメモしておく」ことが一番の対応策となります。

 BitLocker回復キーを確認する方法はいくつかあるので、説明していきます。


2:マイクロソフトアカウントからBitLocker回復キーを確認する
 調べて一番出てくるのがこのマイクロソフトアカウントから確認する方法だと思います。

 PC端末にログインしているマイクロソフトアカウントにサインインし、上メニューの「デバイス」画面から該当の端末の「詳細を見る」をクリックします。

 端末の詳細画面になるので左下にある「回復キーの管理」をクリックします。

 本人確認の表示が出るので、登録しているメールまたはSMSを選択して次のページで入力し、コードを受け取り認証します。

 認証できた場合は、表示されたページにBitLocker回復キーが表示されます。

 ちなみにPC端末にログインしているのとは違うアカウントの場合は以下のように表示されます。

 

3:コマンドプロンプトからBitLocker回復キーを確認する
 コマンドプロンプトからもBitLocker回復キーを確認できます。

 コマンドプロンプトを管理者権限で開きます。

 管理者権限でコマンドプロンプトを開いたら以下のコマンドを実行します。

$ manage-bde.exe -protectors -get c:

 このコマンドを実行すると、以下のように表示されます。「パスワード」と書かれている部分がBitLockerの回復キーになっているのでそれをメモしておきます。

BitLocker ドライブ暗号化: 構成ツール Version 10.0.22000
Copyright (C) 2013 Microsoft Corporation. All rights reserved.

ボリューム C: [Windows-SSD]
すべてのキーの保護機能

    数字パスワード:
      ID: {xxxxxx-xx-xx-xx-xxxx}
      パスワード:
        xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx-xxxxxx

    TPM:
      ID: {xxxx-xxxx-xxxx-xxxx-xxxxxxxxxx}
      PCR 検証プロファイル:
        7, 11
        (整合性の検証のためにセキュア ブートを使用)


4:コントロールパネルのデバイスの暗号化から確認または保存する
 他にもコントロールパネルの項目からBitLockerの回復キーの確認と保存ができます。

 コントロールパネルを開いて「システムとセキュリティ」をクリックします。

 BitLockerが有効になっている場合は出てきた中にデバイスの暗号化という項目があるので、そこの「回復キーのバックアップ」をクリックします。

「回復キーのバックアップ」をクリックします。

 すると以下のような画面になるので、ファイルで保存するか印刷するかを選択します。印刷でもPDFに出力すればファイルで保存するのと同じなので今回は「回復キーを印刷する」を選んでPDFとして保存してみました。

 作成したPDFファイルを開くと、以下のようにIDと回復キーを確認できます。


5:どうしてもBitLockerの回復キーがわからない場合はクリーンインストールを行う
 普段意識していないことが多いのでBitLockerの回復キーがどうしてもわからないこともあるかと思いますが、残念ながらWindowsクリーンインストールをするしかないのでその方法を書いていきます。

 リカバリ用のUSBメモリなどを予め作成していた場合はそのUSBメモリを使ってください。それもない場合は、他のWindowsのPCを使って過去の自分の記事にあるようにUSBメモリにインストールメディアを作成します。

 インストールメディアのUSBをBitLockerでロックされているPCに差し込んだ状態で起動させます。これで基本的にはWindowsのインストール画面が表示されるはずですが、表示されない場合は一度BIOSに入ってそこから再起動させてください。

 Windowsのインストール画面を進めていくと「Windowsのインストール場所を選んでください」という画面で各ドライブのパーティションを選択する必要があります。

 ここでは一番サイズが大きいパーティションを選択して「削除」ボタンをクリックします(参考ページ様より画像を引用して加工)。

 あとは削除した該当のパーティションを選択してそこにWindowsをインストールしていくだけです。

 これでBitLockerでロックされていたパーティションの部分が削除され、Windowsが新しくインストールされます。

 ちなみにこの時リカバリUSBを使っていなかった場合は、メーカー製の諸々のアプリも消えてしまうために指紋認証などの機能が使えなくなります。


 以上がBitLockerが発動した場合の対処方法になります。

 事前にBitLockerの回復キーを保存しておくというのが唯一の対処法になりますが、普通は意図していないのでWindowsを再インストールすることになるかと思います。
 なので大事なデータはクラウドなどにバックアップを常にしておくことやリカバリ用のUSBメモリを作っておくことなど、万が一の時を考えて色々と対策をしておくしかなさそうです…。

 その前にWindowsUpdateやメーカーのBIOSアップデートなどでこのようなことが起きないようにしてほしいというのが一番ですが…。


・参考資料

【Arduino】Seeed Studio XIAO ESP32C3の環境構築

 マイコン関係の商品を眺めていたところ、つい先日に「Seeed Studio XIAO ESP32C3」というマイコンボードが発売されていることを知りました。

 値段が1000円以下と安くてボード自体も小さいですが「ESP32-C3」というESP32系のチップを搭載しており、WiFiBluetoothも使えるという代物で面白そうだったので購入してみました。
 今回はこのSeeed Studio XIAO ESP32C3の環境構築をしてサンプルスケッチを動かすまでの備忘録になります。

 基本的には参考資料にある公式のGetting Startedのページに沿った内容になっているので、詳しくはそちらを参照してください。


 では、始めます。


1:Arduino IDEでボードを使えるようにする
 ESP32系のチップを使用しているので、基本的にはESP32の開発ボードを使えるようにする方法と同じです。

 Arduino IDEを起動させて「ファイル」→「環境設定」を選択します。

 環境設定画面が表示されるので「追加のボードマネージャのURL」の右側にあるアイコンをクリックします。

 以下のURLをコピペして貼り付け、「OK」をクリックします。

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json

 URLが追加されていることを確認して「OK」をクリックします。

 URLの追加ができたら「ツール」→「ボード」→「ボードマネージャ」をクリックします。

 検索欄に「esp32」と入力して出てきたボードの「インストール」ボタンをクリックしてインストールします。

 ダウンロードするファイルサイズが大きいので、完了まで時間がかかる場合があります。

 インストールが完了すると以下のように「INSTALLED」の文字になるので「閉じる」ボタンをクリックして閉じます。

 これでArduino IDEで開発ができるようになりました。


2:サンプルを書き込んで動作確認をする
 実際にサンプルスケッチを書き込んで動くかを確認します。

 公式のGetting StartedのページはLチカをやっていますが、はんだ付けが必要になってくるので今回はシリアル送信の簡単なスケッチを試してみました。

・XIAO_ESP32C3_test.ino

/** 
 *  XIAO ESP32C3のSerialテスト
 */
void setup() {
  Serial.begin(115200);
  Serial.println("--- setup end ---");
}

int count = 1;

void loop() {
  Serial.println(count);
  count++;

  if (count > 20) {
    count = 1;
  }

  delay(1000);
}

 上記スケッチを作成できたら「ツール」→「ボード」→「ESP32 Arduino」→「XIAO ESP32C3」を選択します。かなりスクロールしないとXIAO ESP32C3が出てこないので頑張ってスクロールしてください。

 USBケーブルでPCとSeeed Studio XIAO ESP32C3繋ぎます。PCに認識されるとWindowsの場合は自動的にドライバがインストールされます。

 ボードで「XIAO ESP32C3」が選択されていることを確認し「シリアルポート」から書き込むポートを選択します。他にも色々設定できますが、デフォルトのままでも書き込めるのでそのままでOKです。

 あとは書き込みボタンをクリックしてコンパイルの実行と書き込みを行います。

 書き込みがエラーなく終了した後、Aruduino IDEの右上にある「シリアルプロッタ」をクリックして開きます。

 赤枠部分でプルダウンからボーレートを「115200 bps」にすると、1からカウントアップして20を超えるとまた1に戻ってカウントアップする形で表示されます。


おまけ:リセットボタンとブートボタン
 Seeed Studio XIAO ESP32C3にはリセットボタンとブートボタンの2つのボタンが存在しています。

 公式ページより引用した以下の画像のように左側がブートボタン、右側がリセットボタンとなっています。

 リセットボタンを押下した時の動作としては、一度PCとの接続が途切れて再度接続し直しています。詳しく調べてないので不確定ですが、おそらくソフト的なリセットではなくハード的なリセットをしているような気がしてます。

 ブートボタンについては、ブートボタンを押した状態でPCと接続するとブートローダーモードに入るようです。

 スケッチが書き込めなくなった時はリセットボタンを一度押してから書き込んでみるか、それでもダメならブートローダーモードで接続してから書き込むという方法をすれば良さそうです(未検証)。


 以上がArduino IDEでのSeeed Studio XIAO ESP32C3の環境構築の方法になります。
 値段が安くて小さい上に無線も使えるのでIoT用のマイコンとしては色々使い道がありそうです。

 ただこの記事を書いている時に通販の在庫を確認したらなくなっていたので、ラズパイなどと同じようにこのボードも在庫が少なくなっているようで残念ですね…。


・参考資料

【GitHub】GitHub Pagesを使ってリポジトリを静的ページとして公開する

 以前にBitbucketにおいて静的ページを公開する記事を書きました。

 今回は同じような機能であるGitHub Pagesを使ってリポジトリを静的ページとして公開する方法の備忘録になります。

 GitHubアカウントを作成している前提で進めるので、この記事の内容を行う場合は先にGitHubアカウントを作成しておいてください。


 では、始めます。


1:リポジトリの作成
 GitHubにサインインし、右上にある自身のアイコンをクリックし、出てきた中の「Your repositories」をクリックします。

 リポジトリ一覧が表示されるので、右側にある「New」をクリックします。

 リポジトリ作成の画面になるので「Repository Name」を入力します。PublicとPrivateはどちらでも良いですが、ある程度作ってから公開することが多いと思うので一旦Privateに設定しています。他はデフォルトのままです。設定が終わったら「Create Repository」ボタンをクリックします。

 するとリポジトリが作成されて以下のような画面になります。今回だと何もない空のリポジトリを作ったので、cloneしてファイルを追加してpushしてね、みたいな内容が書かれています。

 ひとまずこれで公開用のリポジトリができました。


2:Webページとして公開するファイルを作成してpushする
 リポジトリを作成したので、クローンして公開用のページファイルを作成していきます。

 作成したリポジトリのページにあるURLをコピーします。

 PowerShellコマンドプロンプトを開いてクローンしたい階層まで移動して以下のコマンドを実行します。空のリポジトリなので「warning: You appear to have cloned an empty repository.」というメッセージが出る場合があります。

$ git clone [コピーしたURL]

 クローンしたリポジトリ内にページとして表示するファイルを作成します。今回は以下のように作成しました。

web-test
│   index.html
│
└───sub
    │   sub.md
    │
    └───img
            test.png

 markdownファイルもいい感じにページにしてくれるので、サブページとしてsub.mdを作成しています。


・index.html

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>web-test</title>
</head>
<body>
<h1>Web-test</h1>
<a href="./sub/sub">サブページリンク</a>
</body>
</html>

・sub.md

# サブページです
markdownファイルを作成してもいい感じにページにしてくれます。
- - -

- 画像

![](./img/test.png)

- 表

|項目1|項目2|
|---|---|
|内容1|内容2|

- ソースコード

~~~python
import sys
from time import sleep

def count_up(num, count):
    print("--- start ----")

    for i in range(0, count):
        print(num + i)
        sleep(0.5)

    print("--- end ----")

if __name__ == '__main__':
    count_up(1, 10)
~~~~

・test.png


 これらのファイルができたらリモートリポジトリにpushします。

 これでGitHub Pagesで表示させるページの準備ができました。


3:GitHub Pagesとして公開する
 リポジトリの準備ができたのでGitHub Pagesで公開できる設定にしていきます。

 まずはリポジトリをPrivateからPublicにします。やり方は以下の記事にまとめています。

 リポジトリをPublicにできたら、リポジトリの「Settings」を開いて左側にある「Pages」をクリックしてGitHub Pagesの設定画面を開きます。

 今回はmasterブランチ直下にトップページであるindex.htmlを作成してpushしているので、赤枠部分のようにプルダウンを設定して「Save」ボタンをクリックします。

 設定を保存した後、「Code」を開くとコミットメッセージ部分に黄色いマークがついています。

 この黄色いマークはGitHub Pages用のビルドが走っている状態なので少し待ちます。待った後にページを更新すると以下のように緑のチェックマークが出ていればビルドが終了しています。

 再び「Settings」の「Pages」を開くとサイトを表示させるURLが表示されているので、そのURLを開くとWebページとして表示されます。

 実際に表示させてみたものが以下になります。

 htmlでもmarkdownでもちゃんと表示されていることがわかると思います。

 ちなみにサブページの先頭のところに表示されている青文字をクリックすると、トップの「index.html」のページに戻ります。デフォルトの設定だとこのトップページへのリンクが勝手に追加されるようです。


 以上がGitHub Pagesを使ってリポジトリを静的ページとして公開する方法になります。

 サーバにアクセスする処理がないWebページの場合などには、コード管理とWebページの公開が一度にできるので便利かと思います。

 参考として今回自分が作ったGitHubページのURLを以下に載せておきます。


・参考資料

【GitHub】リポジトリのPrivate(非公開)をPublic(公開)にする

 GitHubは割と使っていましたが、privateとpublicを切り替えたことがなかったので今回はその備忘録になります。

 基本的には参考資料に挙げたページ様の内容と同じなので詳細はそちらを参照してください。


 では、始めます。


GitHubリポジトリののPrivateをPublicにする方法
 まずは変更したいGitHubリポジトリのページを開いて「Settings」の項目を開きます。

 スクロールしていくと最後の方にDanger Zoneという項目があるので、その中の「Change repository visibility」の横の「Change visibility」ボタンをクリックします。

 すると以下のような表示になります。今回はpublicにしたいので「Make public」にチェックをし、入力欄にリポジトリ名を入力して最後に「I understand, change repository visibility.」のボタンをクリックします。

 実行する前の最後の手順として、GitHubアカウントのパスワードを尋ねられるので入力して「Confirm」ボタンをクリックします。

 実行後、GitHubリポジトリを見に行くと「Public」になっています。


 以上がGitHubリポジトリをPrivateからPublicにする方法になります。

 Change visibilityボタンをクリックした後の表示で「Make private」の方を選択するとPrivateなリポジトリに変更することもできます。

 実際にやってみればそんなに難しいことはないですが、メモとして記事にした次第です。


・参考資料

【Arduino】Seeed Studio XIAO nRF52840のボード上のLEDについて

 以前の記事でとりあえず環境構築をしてサンプルのLチカまでをやってみましたが、Getting Startedのページをよく読むとボード上のLEDは多色LEDになっておりRGBで制御できると書いてありました。

 なので今回はSeeed Studio XIAO nRF52840ボード上のLEDの制御についての記事になります。


 では、始めます。


1:ボード上のLEDの制御方法
 ボード上のピン定義としては以下の3種類があります。

LED色 ピン定義
LED_BUILTIN または LEDR
LEDG
LEDB

 つまり赤色にしたい場合は「LED_BUILTIN」または「LEDR」のピン、緑色にしたい場合は「LEDG」のピン、青色にしたい場合は「LEDB」のピンを使うということになります。
 点灯する場合は該当ピンを「LOW」に、消灯する場合は「HIGH」にします。また同時に複数の色を点灯させて合わせた色として光らせることもできます。

 まとめると以下のような記述になります。

// ピンの出力設定
pinMode(LEDR, OUTPUT); // 赤色(LED_BUILTINでもOK)
pinMode(LEDG, OUTPUT); // 緑色
pinMode(LEDB, OUTPUT); // 青色

// 出力方法
digitalWrite(LEDR, LOW);  // 点灯
digitalWrite(LEDR, HIGH); // 消灯


2:LEDサンプル
 LEDの制御方法がわかったので実際に光らせるサンプルを実行させてみます。

・SeeedStudioXiaoBLE_LEDTest.ino

/**
 * SeeedStudioXiaoBLE_LEDTest
 */
void setup() {
  pinMode(LEDR, OUTPUT);
  pinMode(LEDG, OUTPUT);
  pinMode(LEDB, OUTPUT);

  // 初期化として全部消灯
  digitalWrite(LEDR, HIGH);
  digitalWrite(LEDG, HIGH);
  digitalWrite(LEDB, HIGH);
}


void loop() {
  digitalWrite(LEDR, LOW);  // 赤
  delay(1000);
  digitalWrite(LEDR, HIGH); // 消灯
  delay(1000);
  digitalWrite(LEDG, LOW);  // 緑
  delay(1000);
  digitalWrite(LEDG, HIGH); // 消灯
  delay(1000);
  digitalWrite(LEDB, LOW);  // 青
  delay(1000);
  digitalWrite(LEDB, HIGH); // 消灯
  delay(1000);

  // 黄色
  digitalWrite(LEDR, LOW);
  digitalWrite(LEDG, LOW);
  delay(1000);
  digitalWrite(LEDR, HIGH); // 消灯
  digitalWrite(LEDG, HIGH); // 消灯
  delay(1000);

  // 紫色
  digitalWrite(LEDR, LOW);
  digitalWrite(LEDB, LOW);
  delay(1000);
  digitalWrite(LEDR, HIGH); // 消灯
  digitalWrite(LEDB, HIGH); // 消灯
  delay(1000);

  // 水色
  digitalWrite(LEDG, LOW);
  digitalWrite(LEDB, LOW);
  delay(1000);
  digitalWrite(LEDG, HIGH); // 消灯
  digitalWrite(LEDB, HIGH);
  delay(1000);

  // 白色
  digitalWrite(LEDR, LOW);
  digitalWrite(LEDG, LOW);
  digitalWrite(LEDB, LOW);
  delay(1000);
  digitalWrite(LEDR, HIGH); // 消灯
  digitalWrite(LEDG, HIGH); // 消灯
  digitalWrite(LEDB, HIGH); // 消灯
  delay(1000);
}

 上記のスケッチを書き込むとそれぞれの色が1秒毎に点灯/消灯で切り替わります。白色などはあまり白くは見えませんが、光の三原色を混ぜると白なので一応白ということにしています。


 以上がSeeed Studio XIAO nRF52840のボード上のLED制御についてです。

 一つのLEDで多色を表現できるので、ステータスなどを確認したりするのに使ったりすると良さそうです。


・参考資料

【Arduino】Seeed Studio XIAO nRF52840の環境構築

 最近はミニ四駆ラジコンなどでM5Stack(ESP32)系のマイコンばかり使っていましたが、他のボードを見ていたところまた安価で色々と機能がついていそうなマイコンボードを見つけました。

 2000円程度ですが、nRF52840というチップを使っており、BLEやNFCが使えてリポバッテリーなどの充電制御回路もついているようです。Arduino IDEでの開発もできます。

 今回はこのSeeed Studio XIAO nRF52840を購入してみたので、その環境構築の方法になります。
 基本的には参考資料に挙げている公式Wikiのページ通りに進めていく形になるので、詳しくはそちらを参照してください。
 またWindowsでの環境構築になるので他のOSだと違う場合があるので注意してください。


 では、始めます。


1:Arduino IDEのインストール
 まずはArduino IDEをインストールします。

 自分の場合はすでにインストールしてありましたが、まだの場合は以下の公式ページからインストーラをダウンロードし、インストールしてください。


2:ボードのインストール
 Arduino IDEのインストールが終わったらArduino IDEで使えるようにボードに関するライブラリなどのインストールを行います。

 Arduino IDEを起動させて「ファイル」→「環境設定」を選択します。

 環境設定の画面が表示されるので「追加のボードマネージャのURL」の右側にあるアイコンをクリックします。

 テキストボックスが表示されるので以下のURLをコピペして記入し「OK」ボタンをクリックします。

https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json

 URLが追加されていることを確認して「OK」をクリックして環境設定画面を閉じます。

 次に「ツール」→「ボード」→「ボードマネージャ」を選択します。

 検索欄に「seeed nrf52」と入力して出てきた一番上のものを選択し「インストール」ボタンをクリックしてインストールします。

 ダウンロードサイズが大きいのでインストールには時間がかかる場合があるので、気長に待ちます。

 インストール後「INSTALLED」の文字が表示されていることを確認し「閉じる」ボタンでボードマネージャ画面を閉じます。

 これでボードのインストールは完了です。


3:サンプルスケッチを書き込む
 ボードの準備ができたので、次はLチカのサンプルを書き込んでみます。

「ツール」→「ボード」→「Seeed nRF Boards」→「Seeed XIAO BLE - nRF52840」を選択します。

「ファイル」→「スケッチ例」→「01.Basics」→「Blink」をクリックしてスケッチサンプルを開きます。

 Seeed Studio XIAO nRF52840とPCをUSBケーブルで繋ぎ、「ツール」→「シリアルポート」から対象のポートを選択します。

 あとは矢印ボタンをクリックすればスケッチの書き込みが開始されます。

 書き込みが終了すると、USB-C端子の横にあるLEDが点滅するようになります。


 以上がSeeed Studio XIAO nRF52840の環境構築方法になります。

 ESP32-DevKitなどよりかなり小さいので、小型の何かを開発するときにはマイコンボードとして使う選択肢の一つになるかと思います。


・参考資料

【Windows】WindowsでOpen JTalkを使ってみる

 調べものをしていたら合成音声の音声ファイルを作れるOpenJTalkというものを見つけました。
 Windowsの場合はビルドする必要があったりとちょっと面倒ですが、導入して少し使ってみたので今回はその備忘録になります。


 では、始めます。


1:Visual StudioC++コンパイラのインストール
 Windowsの場合はOpenJTalkをビルドする必要があり、それにはVisual StudioC++コンパイラを使うので導入します。

 以下のVisual Studio Communityのダウンロードページを開きます。

 Visual Studio Communityの「無償ダウンロード」ボタンをクリックすると、ページが遷移して自動的にインストーラのダウンロードが始まります。

 ダウンロードしたインストーラを起動させます。

 インストーラを起動すると以下のような画面になるので「続行」をクリックします。

 クリックするとインストーラの準備が始まるのでしばらく待ちます。

 インストールの準備が終わるとどれをインストールするかの画面になるので、少しスクロールした中にある「C++によるデスクトップ開発」にチェックを入れて「インストール」ボタンをクリックします。

 インストールが始まるのでしばらく待ちます。

 インストールが終わると再起動を促されるので「OK」をクリックして再起動させます。

 再起動後、コマンドプロンプトPowerShellでは動かないので注意)を起動させて以下のコマンドを実行します(2022の部分はバージョンによって違う場合があるので適宜書き換えてください)。

$ cd C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build
$ vcvarsall.bat x64

 以下のような結果が表示されていればOKです。

**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.2.6
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

 次にビルドに必要なnmakeのパスを環境変数に追加します。

 検索欄に「システムの詳細」と入力して出てきた「システムの詳細設定の表示」をクリックします。

 システムのプロパティが表示されるので「環境変数」をクリックします。

 システム環境変数の「Path」を選択した状態で「編集」をクリックします。

 環境変数の設定画面になるので「新規」ボタンをクリックして以下のパスを追加します(2022、14.32.31326の部分はバージョンによって違う場合があるので適宜書き換えてください)。

C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\Hostx64\x64

 追加されていることを確認して「OK」をクリックして閉じます。

 新たにコマンドプロンプトを立ち上げ、コマンドを実行して以下のように表示されればコンパイラのインストールは完了です。

$ nmake

Microsoft(R) Program Maintenance Utility Version 14.32.31332.0
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1064: MAKEFILE が見つかりません、またターゲットが指定されていません。
Stop.


2:OpenJTalkに必要なファイルのダウンロード
 コンパイラの準備ができたので必要なものをダウンロードしていきます。

 OpenJTalkではHTS Engineを使っているのでまずはそれをダウンロードします。

 以下のページを開きます。

 ページ下にある「hts_engine_API-1.10.tar.gz」のリンクをクリックしてダウンロードします。

 次にOpenJTalkとその他必要なファイルをダウンロードします。

 Open JTalkのダウンロードページを開きます。

 赤枠部分の「open_jtalk-1.11.tar.gz」、「open_jtalk_dic_shift_jis-1.11.tar.gz」をそれぞれクリックしてダウンロードします。open_jtalk-1.11.tar.gzはOpenJTalk本体、open_jtalk_dic_shift_jis-1.11.tar.gzは日本語の辞書データです。

 最後に合成音声の元となるボイスファイルをダウンロードします。

 OpenJTalkのダウンロードページにある「Files」タブをクリックして表示された中にある「HTS voice」をクリックします。

「hts_voice_nitech_jp_atr503_m001-1.05」をクリックします。

「hts_voice_nitech_jp_atr503_m001-1.05.tar.gz」をクリックしてダウンロードします。

 これで必要なファイルのダウンロードは終わりです。

 以下の合計4つのファイルがダウンロードされていればOKです。

hts_engine_API-1.10.tar.gz
open_jtalk-1.11.tar.gz
open_jtalk_dic_shift_jis-1.11.tar.gz
hts_voice_nitech_jp_atr503_m001-1.05.tar.gz


3:OpenJTalkのビルド
 まずは2でダウンロードしたファイルを解凍します。

 コマンドプロンプトPowerShellでは動かないので注意)を起動し、ファイルのあるカレントディレクトリに「cd」コマンドで移動して以下のコマンドを実行して解凍します。

$ tar -xzf hts_engine_API-1.10.tar.gz
$ tar -xzf open_jtalk-1.11.tar.gz
$ tar -xzf open_jtalk_dic_shift_jis-1.11.tar.gz
$ tar -xzf hts_voice_nitech_jp_atr503_m001-1.05.tar.gz

 全てのファイルの解凍が終わった後、open_jtalk-1.11フォルダ内に解凍したhts_engine_API-1.10フォルダを移動させます。

 フォルダの移動後、新しくコマンドプロンプトPowerShellでは動かないので注意)を開いて以下のコマンドを改めて実行します(2022の部分はバージョンによって違う場合があるので適宜書き換えてください)。

$ cd C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build
$ vcvarsall.bat x64

 上記コマンドを実行したコマンドプロンプトを開いたまま、open_jtalk-1.11/hts_engine_API-1.10フォルダに「cd」コマンドで移動します。

 移動後、以下のコマンドを実行して「HTS Engine」をビルドします。PCの性能によってはかなり時間がかかる場合があります。

$ nmake /f Makefile.mak
$ nmake /f Makefile.mak install

 ビルド終了後、以下のコマンドを実行して「open_jtalk-1.11」フォルダに移動します。

$ cd ..

 移動後、以下のコマンドを実行してOpenJTalkをビルドします。PCの性能によってはかなり時間がかかる場合があります。

$ nmake /f Makefile.mak
$ nmake /f Makefile.mak install

 ビルドの途中で何かしらエラーや警告文が出る場合がありますが、ビルド終了後に「open_jtalk/bin」フォルダ内に「open_jtalk.exe」が作成されていればビルド完了です(※20220922追記:ビルド後、「open_jtalk.exe」が見つからない時はCドライブ直下に「open_jtalk」フォルダが作成されている場合もあるのでそちらも確認してください)。


4:辞書とボイスファイルの配置
 4のビルドが終わった後、3で解凍した「open_jtalk_dic_shift_jis-1.11」フォルダを「dic」に名前変更します。
 名称変更した「dic」フォルダを「open_jtalk/bin」フォルダ内に丸ごと移動させます。

 次に解凍した「hts_voice_nitech_jp_atr503_m001-1.05」フォルダ内にある「nitech_jp_atr503_m001.htsvoice」ファイルを「open_jtalk/bin」フォルダ内に移動させます。

 これでOpenJTalkで合成音声を作成する準備ができました。


5:OpenJTalkでの合成音声ファイルの作成
 ようやく準備ができたので、実際に合成音声ファイルを作成してみます。

「open_jtalk/bin」フォルダ内に「input.txt」ファイルをShift JISで作成します。内容は改行なしで日本語で入力します。長文だとおかしくなる場合があるので短めの文章にしてみてください。

 Shift JISでの「input.txt」ファイルが作成できたら、コマンドプロンプトを起動させて「cd」コマンドで「open_jtalk/bin」フォルダに移動します。

「open_jtalk/bin」フォルダで以下のコマンドを実行することでoutput.wavという合成音声ファイル作成することができます。

$ open_jtalk.exe -m nitech_jp_atr503_m001.htsvoice -x dic -ow output.wav input.txt


 以上がWindowsでOpen JTalkを使ってみた備忘録になります。

 環境構築のほとんどは参考資料に挙げたページ様の通りですが、Visual Studioを入れないといけなかったりビルドしないといけなかったりで割と大変でした。

 今回は「nitech_jp_atr503_m001.htsvoice」という音声を使いましたが、他にも色々と音声ファイルが公開されているのでそれを使えば別の声で音声ファイルを作成することもできます。

 各種ライセンス回りは調べてないのでわかりませんが、無料で合成音声を作って遊べることがわかったので色々と楽しめそうです。


・参考資料