投稿

11月, 2025の投稿を表示しています

NotebookLMのローカル版「Open Notebook」をLM Studioで完全オフライン構築してみた

イメージ
NotebookLMのローカル版「Open Notebook」をLM Studioで完全オフライン構築してみた! Googleの「 NotebookLM 」、便利ですよね。資料をアップロードするだけで、AIが内容を理解して回答してくれたり、ポッドキャスト風に解説してくれたりするあのツールです。 「でも、社内秘のドキュメントをGoogleにアップロードするのはちょっと…」 「インターネットに繋がっていない環境でも使いたい!」 そんなニーズに応えるべく、GitHubで公開されているOSSの「 Open Notebook 」を試してみました。今回はこれを、以前の記事でも紹介した LM Studio と組み合わせて、 「完全ローカル(インターネット不要)」な環境 で動作させることに挑戦しました。 構築にあたって少しハマりポイントがあったので、その回避方法も含めて共有します。 Open Notebookとは? Open Notebookは、Google NotebookLMのオープンソース代替を目指したプロジェクトです。PDFやWebサイトのURLをソースとして読み込ませ、その内容についてチャットを行うことができます。 公式リポジトリはこちら: https://github.com/lfnovo/open-notebook 構成:LLMは「LM Studio」を採用 Open Notebookは通常、OpenAIなどのAPIキーを設定して使いますが、今回は 完全ローカル を目指すため、バックエンドのLLMとして LM Studio を採用します。 LM Studioでサーバーを立ち上げ(ポート1234など)、Open Notebook(Dockerコンテナ)からそこに接続する構成です。 ベースとなる docker-compose.yml は以下のようになります。 ...

Metaの新型音声認識モデル「omnilingual-asr」を試してみた(1B/3B/7B比較)

Metaの新型音声認識モデル「omnilingual-asr」を試してみた(1B/3B/7B比較) 最近、Metaから新しい音声認識モデル「 omnilingual-asr 」が公開されました。 多言語に対応したモデルということで、日本語の認識精度がどれほどのものか気になったので、早速手元の環境で試してみることにしました。 モデルの詳細はGitHubリポジトリで公開されています。 https://github.com/facebookresearch/omnilingual-asr 検証の概要 今回は、公開されているモデルのうち、パラメータ数の異なる以下の3種類を比較しました。 omniASR_LLM_1B omniASR_LLM_3B omniASR_LLM_7B これらのモデルに対し、手元にあった2種類の日本語のナレーション音声ファイル( test1.mp3 , test2.mp3 )を認識させて、その結果を比較します。 40秒制限への対応(Pythonコード) 検証を始めたところ、現在の omnilingual-asr モデルは 約40秒までの音声しか一度に処理できない という制約があることがわかりました。 そこで、長い音声ファイルでも処理できるように、Python (librosa) を使って音声を事前に分割(チャンキング)するスクリプトを用意しました。 主な処理内容は以下の通りです。 音声を30秒のチャンクに分割する。 チャンク間は5秒のオーバーラップを持たせ、認識漏れを防ぐ。 VAD(無音区間検出)を使い、できるだけ「会話の途中」で途切れないよう、無音区間を優先して分割点を設定する。 ...