Unity プロジェクトをインポートしてはじめてみよう
Unity プロジェクトのダウンロード

https://github.com/1ft-seabass/kaishi-tseigo-sample-2025 にアクセスします。

右上の Code ボタンをクリックして Local タブをクリックします。

Download ZIP ボタンをクリックして Unity プロジェクトをダウンロードします。
ダウンロードフォルダで kaishi-tseigo-sample-2025-main.zip を探します。
デスクトップに解凍します。kaishi-tseigo-sample-2025-main があることを確認しましょう。
Unity プロジェクトの準備
Unity Hub を起動して Add ボタンをクリックし
Add project from disk をクリックします。
kaishi-tseigo-sample-2025-main フォルダを選択して Add Project ボタンをクリックします。

kaishi-tseigo-sample-2025-main プロジェクトがリストに追加されたらクリックしましょう。

待ちます。

起動しました。ただこれだと Scene が選択されていないので SampleScene を選択します。
SampleScene 起動

下部の Project タブに注目して Scene をダブルクリックします。

SampleScene があるのでダブルクリックして起動しましょう。

起動しました。
CubeEvent.cs を開く

Project から CubeEvent を探してダブルクリックします。エディタが起動し CubeEvent が編集できるようになります。
うまく表示できたら、
// OpenAIAPIKey
string OpenAIAPIKey = "OpenAIAPIKey";
こちらを授業中にシェアした OpenAI の APIKey で置き換えます。
たとえば ABCDEGHIJKLMNNABCDEGHIJKLMNN の OpenAIAPIKey であれば、
// OpenAIAPIKey
string OpenAIAPIKey = "ABCDEGHIJKLMNNABCDEGHIJKLMNN";
とダブルクォーテーション " の中を変更して、エディタで一旦保存します。

Unity に戻ります。
今回録音するマイクデバイスを狙う
// ========================================
// マイクデバイスの設定
// ========================================
// Unity を実行して Console でマイクデバイス一覧を確認し、
// 使いたいデバイスの [番号] を下記に設定してください
// ========================================
int recordingTargetMicDeviceID = 0; // デフォルトは 0(最初のデバイス)
現状だと、デフォルトで 0(最初のマイクデバイス)が設定されています。Console でマイク一覧を見ながら、今回録音するマイクデバイスの番号を確認しましょう。

動かす前に、動作ログが出る Console タブをクリックしておきます。

上部の Play ボタンをクリックします。

再生されます。

ログにマイクデバイス一覧が番号付きで表示されます。[0]、[1]、[2] のように番号が振られています。
普段 Zoom や Teams などで使っているマイクデバイスが見つかりましたか?見つかったら、そのマイクの番号([0]、[1] など)を確認します。
たとえば使いたいマイクが [2] であれば、エディタで開いてある CubeEvent.cs のこの部分を変更します。
int recordingTargetMicDeviceID = 2; // [2] のデバイスを使用
として保存します。保存を忘れないようにしましょう。
動かしてみる(ChatGPT API)

Unity に戻ります。

上部の Play ボタンをクリックします。

再生されます。

今回録音するマイクが選択できれば、「選択されたデバイス: [番号] デバイス名」と「マイク捜索成功」のログが出ます。

Cube をマウスで直接クリックしてみます。

Console には Mic Record Start が出ます。録音開始です。「テスト」とでも話してみましょう。

もう一度 Cube をクリックしてマイク録音を停止します。

このように、OpenAI の Whisper API で音声が文字起こしされて「テスト」と結果表示されます。さらにその文字列をもとに ChatGPT に質問して返答が返ってきます!
クリック動作の確認
このプロジェクトでは、Cube をクリックすると色が変わる仕組みが実装されています。

- 1回目のクリック: Cube が赤色に変わります。録音が開始されます。
- 2回目のクリック: Cube が青色に変わります。録音が停止し、Whisper API と ChatGPT API への通信が行われます。
- 3回目のクリック(または通信完了後): Cube が通常の色(白)に戻ります。
この色の変化で、現在の状態を分かりやすく確認できます。
Ollama API への切り替え

ここからは、従来の ChatGPT API の代わりに、ローカルで動作する Ollama API を使う方法を試してみましょう。
Ollama が起動しているか確認

タスクトレイに Ollama のアイコンがあることを確認します。アイコンがあれば Ollama は起動しています。
もし起動していなければ、Ollama のインストール を参考に起動してください。
CubeEvent.cs の API 設定を変更
再度 CubeEvent.cs をエディタで開きます。
いまは OpenAI を使う状態なので「OpenAI ChatGPT を使う場合」のブロックが動作していて、「Ollama を使う場合」のブロックをコメントアウトされています。
// OpenAI ChatGPT を使う場合
string chatAPIType = "OpenAI";
string chatModel = "gpt-4o-mini";
string chatAPIURL = "https://api.openai.com/v1/chat/completions";
bool useAPIKey = true;
// Ollama を使う場合(ローカル)
// string chatAPIType = "Ollama";
// string chatModel = "granite3.2:2b";
// string chatAPIURL = "http://localhost:11434/v1/chat/completions";
// bool useAPIKey = false;
この部分を探します。
Ollama を使う場合「OpenAI ChatGPT を使う場合」のブロックをコメントアウトして、「Ollama を使う場合」のブロックのコメントを外します。
// OpenAI ChatGPT を使う場合
// string chatAPIType = "OpenAI";
// string chatModel = "gpt-4o-mini";
// string chatAPIURL = "https://api.openai.com/v1/chat/completions";
// bool useAPIKey = true;
// Ollama を使う場合(ローカル)
string chatAPIType = "Ollama";
tring chatModel = "granite3.2:2b";
string chatAPIURL = "http://localhost:11434/v1/chat/completions";
bool useAPIKey = false;
このように変更して保存します。
Ollama で動かしてみる

Unity に戻ります。

上部の Play ボタンをクリックします。
Cube をクリックして録音を開始します。何か話しかけてみましょう。もう一度クリックして録音を停止します。
今度は Ollama API(ローカルで動作する AI)から返答が返ってきます!
Ollama と ChatGPT の違い
- ChatGPT API
- インターネット経由で OpenAI のサーバーと通信。高性能だがネット接続が必要
- Ollama API
- ローカルで動作。インターネット不要でプライバシーも保たれるが、モデルサイズにより性能は変わる
用途に応じて使い分けることができます!
余裕があれば

時間に余裕があれば音声生成もできる CubeEvent2.cs も試してみます。
- Cube のスクリプトの割り当てから CubeEvent.cs を削除
- Cube のスクリプト CubeEvent2.cs に割り当て
- AudioSource を Cube に加える
- CubeEvent2.cs に API キーを書き加える