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

Unity プロジェクトのダウンロード

alt text

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

alt text

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

alt text

Download ZIP ボタンをクリックして Unity プロジェクトをダウンロードします。

ダウンロードフォルダで kaishi-tseigo-sample-2025-main.zip を探します。

デスクトップに解凍します。kaishi-tseigo-sample-2025-main があることを確認しましょう。

Unity プロジェクトの準備

image Unity Hub を起動して Add ボタンをクリックし Add project from disk をクリックします。

kaishi-tseigo-sample-2025-main フォルダを選択して Add Project ボタンをクリックします。

alt text

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

alt text

待ちます。

alt text

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

SampleScene 起動

alt text

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

alt text

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

alt text

起動しました。

CubeEvent.cs を開く

alt text

Project から CubeEvent を探してダブルクリックします。エディタが起動し CubeEvent が編集できるようになります。

うまく表示できたら、

// OpenAIAPIKey
string OpenAIAPIKey = "OpenAIAPIKey";

こちらを授業中にシェアした OpenAI の APIKey で置き換えます。

たとえば ABCDEGHIJKLMNNABCDEGHIJKLMNN の OpenAIAPIKey であれば、

// OpenAIAPIKey
string OpenAIAPIKey = "ABCDEGHIJKLMNNABCDEGHIJKLMNN";

とダブルクォーテーション " の中を変更して、エディタで一旦保存します。

alt text

Unity に戻ります。

今回録音するマイクデバイスを狙う

    // ========================================
    // マイクデバイスの設定
    // ========================================
    // Unity を実行して Console でマイクデバイス一覧を確認し、
    // 使いたいデバイスの [番号] を下記に設定してください
    // ========================================
    int recordingTargetMicDeviceID = 0;  // デフォルトは 0(最初のデバイス)

現状だと、デフォルトで 0(最初のマイクデバイス)が設定されています。Console でマイク一覧を見ながら、今回録音するマイクデバイスの番号を確認しましょう。

alt text

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

alt text

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

alt text

再生されます。

alt text

ログにマイクデバイス一覧が番号付きで表示されます。[0][1][2] のように番号が振られています。

普段 Zoom や Teams などで使っているマイクデバイスが見つかりましたか?見つかったら、そのマイクの番号([0][1] など)を確認します。

たとえば使いたいマイクが [2] であれば、エディタで開いてある CubeEvent.cs のこの部分を変更します。

    int recordingTargetMicDeviceID = 2;  // [2] のデバイスを使用

として保存します。保存を忘れないようにしましょう。

動かしてみる(ChatGPT API)

alt text

Unity に戻ります。

alt text

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

alt text

再生されます。

alt text

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

alt text

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

alt text

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

alt text

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

alt text

このように、OpenAI の Whisper API で音声が文字起こしされて「テスト」と結果表示されます。さらにその文字列をもとに ChatGPT に質問して返答が返ってきます!

クリック動作の確認

このプロジェクトでは、Cube をクリックすると色が変わる仕組みが実装されています。

alt text

  • 1回目のクリック: Cube が赤色に変わります。録音が開始されます。
  • 2回目のクリック: Cube が青色に変わります。録音が停止し、Whisper API と ChatGPT API への通信が行われます。
  • 3回目のクリック(または通信完了後): Cube が通常の色(白)に戻ります。

この色の変化で、現在の状態を分かりやすく確認できます。

Ollama API への切り替え

alt text

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

Ollama が起動しているか確認

alt text

タスクトレイに 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 で動かしてみる

alt text

Unity に戻ります。

alt text

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

Cube をクリックして録音を開始します。何か話しかけてみましょう。もう一度クリックして録音を停止します。

今度は Ollama API(ローカルで動作する AI)から返答が返ってきます!

Ollama と ChatGPT の違い

  • ChatGPT API
    • インターネット経由で OpenAI のサーバーと通信。高性能だがネット接続が必要
  • Ollama API
    • ローカルで動作。インターネット不要でプライバシーも保たれるが、モデルサイズにより性能は変わる

用途に応じて使い分けることができます!

余裕があれば

alt text

時間に余裕があれば音声生成もできる CubeEvent2.cs も試してみます。

  • Cube のスクリプトの割り当てから CubeEvent.cs を削除
  • Cube のスクリプト CubeEvent2.cs に割り当て
  • AudioSource を Cube に加える
  • CubeEvent2.cs に API キーを書き加える

results matching ""

    No results matching ""