KSTECHBLOG

自分の分身AIと音声会話できるアプリ③

WindowsへLM Studioをインストールし、Gemmaのダウンロード、ローカルAPIサーバーの起動、PythonからのAPI疎通確認までを紹介します。

はじめに

前回の記事では、Whisperを実行するためのPython環境を構築し、音声ファイルを日本語のテキストへ変換できるところまで確認しました。

今回は、テキストから返答を生成するために使用するLM StudioをWindowsへ導入します。GemmaのダウンロードからローカルAPIサーバーの起動、Pythonを使ったAPIの疎通確認まで進めます。

LM Studioとは

LM Studioは、LLM(大規模言語モデル)を自分のPC上で実行できるデスクトップアプリケーションです。モデルの検索やダウンロード、チャットをGUIで操作できるほか、ローカルAPIサーバーとしてほかのプログラムから利用できます。

今回の構成では、Whisperが音声から変換したテキストをLM StudioのAPIへ送り、会話の返答を生成するために使用します。

LM Studioをインストールする

LM Studio公式サイトへアクセスし、Windows版のインストーラーをダウンロードします。

ダウンロードしたインストーラーを実行し、画面の案内に沿ってインストールします。インストールが完了したらLM Studioを起動します。

この記事で動作確認したLM Studioのバージョンは0.4.20です。バージョンによって画面の名称や配置が変わる場合があります。

Gemmaをダウンロードする

初回起動時の案内に沿って、動作確認に使用するGemmaをダウンロードします。初回画面を閉じた場合は、左側のメニューからモデル検索画面を開き、Gemmaで検索できます。

同じモデルでも、量子化方式によってファイルサイズや必要なメモリ、生成品質が異なります。LM Studioの公式ドキュメントでは、PCに十分な性能がある場合は4ビット以上のモデルが案内されています。今回は、初回起動時に表示された推奨設定のGemmaを使用しました。

モデルは数GB以上になる場合があるため、ダウンロードが完了するまで待ちます。

ローカルAPIサーバーを起動する

モデルのダウンロードが完了したら、LM Studioの左側にあるDeveloperを開き、Local Serverを選択します。

LM StudioのLocal Server画面。サーバーが起動し、Load Modelボタンが表示されている

画面上部のサーバーをONにし、Status: Runningと表示されることを確認します。今回の環境では、APIの接続先として次のURLが表示されました。

http://127.0.0.1:1234

続いて、Load Modelをクリックして、ダウンロードしたGemmaを選択します。サーバーの起動だけでは推論に使用するモデルが読み込まれていないため、Loaded ModelsにGemmaが表示されたことも確認します。

Status: Runningと読み込んだモデルの両方を確認できれば、APIへリクエストを送る準備は完了です。

PythonからAPIの疎通を確認する

LM StudioはOpenAI互換APIを提供しているため、OpenAIのPython SDKから接続できます。ここでは、前回作成したvoice-aiプロジェクトの仮想環境を使用して、モデル一覧の取得とチャットの実行を確認します。

OpenAI SDKをインストールする

PowerShellでvoice-aiプロジェクトへ移動し、仮想環境を有効化してからOpenAI SDKをインストールします。

pip install openai

モデル一覧を取得する

プロジェクトの直下にtest_lmstudio.pyを作成し、次のコードを記述します。

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:1234/v1",
    api_key="lm-studio",
)

# LM Studioに読み込まれているモデルの一覧を取得する
models = client.models.list()

print("ロードされているモデル")
for model in models.data:
    print(model.id)

LM Studioを起動し、ローカルAPIサーバーとGemmaを読み込んだ状態でスクリプトを実行します。

py test_lmstudio.py

今回の環境では、次のモデルが表示されました。

ロードされているモデル
google/gemma-4-e4b
text-embedding-nomic-embed-text-v1.5

LM Studioに読み込まれているモデルのIDが表示されれば、PythonからAPIへ接続できています。

Gemmaへメッセージを送る

続いて、プロジェクトの直下にtest_chat.pyを作成します。先ほど確認したGemmaのモデルIDをmodelへ指定し、Chat Completions APIへメッセージを送信します。

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:1234/v1",
    api_key="lm-studio",
)

response = client.chat.completions.create(
    model="google/gemma-4-e4b",
    messages=[
        {
            "role": "system",
            "content": "あなたは親切なAIアシスタントです。必ず日本語で回答してください。",
        },
        {
            "role": "user",
            "content": "こんにちは!自己紹介してください。",
        },
    ],
)

print(response.choices[0].message.content)

スクリプトを実行します。

py test_chat.py

今回の環境では、日本語で次のような返答が表示されました。

こんにちは!✨ お呼びいただきありがとうございます😊

私は、皆様のお役に立つことを使命としたAIアシスタントです。
どうぞよろしくお願いいたします!

Gemmaが生成した文章を取得できれば、APIへのリクエストと返答の受け取りまで成功です。生成される文章は実行するたびに異なる場合があります。

LM StudioのDeveloper LogsにもPOST /v1/chat/completionsのログが表示されるため、リクエストが届いているかをGUIから確認できます。

参考資料

次回予告

次回の記事では、GPT-SoVITSを使って自分の声を学習し、入力した文章を自分の声で読み上げる方法を紹介します。

「自分の分身AIと音声会話できるアプリ」全6回

  1. 開発のきっかけ・全体構成
  2. Whisperの環境構築
  3. LM Studioの導入(この記事)
  4. GPT-SoVITSで自分の声を再現
  5. Cloudflare Tunnelの設定
  6. persona.mdで性格・話し方を設定
トップページへ戻る