投稿

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(無音区間検出)を使い、できるだけ「会話の途中」で途切れないよう、無音区間を優先して分割点を設定する。 ...

LM StudioをWeb UI化して、ローカルLLMをみんなで使おう!

イメージ
LM StudioをWeb UI化して、ローカルLLMをみんなで使おう! 【自作ツール】LM StudioをWeb UI化して、ローカルLLMをみんなで使おう! 最近、手元のPCで大規模言語モデル(LLM)を動かすのが流行っていますね。その中でも「 LM Studio 」は、直感的なUIで誰でも簡単にローカルLLM環境を構築できる、非常に便利なツールです。 しかし、この便利なLM Studioにも、ちょっとした悩みどころがあります。 LM Studioが動いているPCでしか使えない LM Studioのチャット機能は非常に優秀ですが、利用するにはアプリケーションがインストールされているPCにログインする必要があります。これでは、家族や同じネットワーク内の同僚に「ちょっとこのAI使ってみて」と気軽に共有することができません。 ファイルアップロード機能をもっと強化したい テキストや画像のアップロードはできますが、「WordやExcelファイルの中身について質問したい」と思っても、一度テキストに手動で変換する必要があり、少し手間がかかります。 そこで、これらの課題を解決するために、ブラウザさえあれば誰でもローカルLLMと対話できる「 多機能WebチャットUI 」を開発しました。 このツールを使えば、LM StudioをバックエンドのAIサーバーとして活用し、もっと便利で開かれたローカルAI環境を構築できます。 多機能WebチャットUI 「LM Studioで動いているAIを、もっと手軽に、もっと多機能に活用したい!」という思いから、単一のHTMLファイルで動作するWebアプリケーションを開発しました。 特別なサーバー設定は不要で、ブラウザでファイルを開くだ...

gpt-oss-20bの検証

gpt-oss-20bの検証 gpt-oss-20bの検証 OpenAIがローカルLLMの gpt-oss を公開しました! 今回「 gpt-oss-20b 」と「 gpt-oss-120b/b>」の2つのモデルが公開されており、 gpt-oss-20b はなんと16GBのVRAMで動作するモデルになります!! 今回はこの「 gpt-oss-20b 」の効果検証を実施したため、その際のインプットとアウトプットを紹介しようと思います。 なお、この内容はYouTubeで公開した動画内で実行したものになるので、よければ動画も参考にしてください。 https://youtu.be/UioXhzRkxdM 一般的なタスク まずは、一般的なタスクです。 ニュース記事を連携して、要約をしてもらいます。 プロンプト 次の文章を要約してください。 ###ニュース記事 マクドナルドと「ポケットモンスター」のコラボレーションとして、8月9日から『ポケモンカードゲーム』の限定カード全5種類が配布されている。 マクドナルドとメルカリは共同で転売などの対策を行うとしていたが、連休初日となる9日、マクドナルドには多くの人が殺到し、混乱が発生。 マクドナルド公式アプリには、限定カードの早期配布終了や混雑に対する謝罪文が掲載されるまでになっている。 『ポケカ』コラボ開始前に、マックとメルカリは共同で対策を実施 今回の「ポケットモンスター」とのコラボレーションは、8月8日から実施。通常期間はピカチュウをはじめとするポケモンのおもちゃがおまけとなっており、『ポケモンカードゲーム』の配布は9日(土)~11日(月)の限定の施策として行われている。 今回のおまけの需要が高いことは認識されており、マクドナルドとメルカリは共同で対策を行うと発表。 マクドナルド側は1人5つまでという購入制限を設けたほか、サイト上...

【自作ツール】プロジェクトをNotebookLMのソースに

プロジェクトをNotebookLMのソースに 【自作ツール】プロジェクトをNotebookLMのソースに 最近話題のAIノートアプリ「 NotebookLM 」は本当に便利です。ドキュメントを読み込ませるだけで、内容の要約や質疑応答ができてしまう優れものです。 これを「自作プログラムのソースコード分析にも使いたい!」と考えたことがある開発者の方も多いのではないでしょうか?しかし、ここに一つ大きな壁があります。 NotebookLMはソースコードをそのまま使えない。 NotebookLMは非常に優秀ですが、残念ながらC#やJavaなどのソースコードファイル(.csや.javaなど)を直接アップロードして分析することはできません。そのため、一度マークダウン形式に手作業でコピペする。。などの手間が発生してしまいます。これではせっかくの効率化ツールも宝の持ち腐れです。 GitHubのプライベートリポジトリは使えない 「GitHubリポジトリを連携させれば良いのでは?」と思うかもしれません。確かにその方法もありますが、連携できるのはパブリックリポジトリ(公開リポジトリ)のみです。 つまり、「まだ公開していない開発中のプロジェクト」や「ローカルのプロジェクトファイル」などは、対象外になってしまいます。 そこで、そういった課題に対応できる「 ProjectAnalyzer 」を開発しました。 もちろん、公開リポジトリであれば uithub などのオンラインツールを使うこともできますが、ローカルプロジェクトには対応できません。だからこそローカルで動作するこのツールを開発しました。 ProjectAnalyzer ProjectAnalyzer 」を開発しました。 ...

Angularのサンプルプロジェクト「家計簿アプリ (KakeiboApp)」について

Angularのサンプルプロジェクトについて Angularのサンプルプロジェクトについて この記事では、Angular CLI バージョン18.1.0で生成された「 家計簿アプリ (KakeiboApp) 」プロジェクトの内容を詳細に解説します。このアプリは、ユーザーが収入と支出を記録し、現在の残高や取引履歴を確認したり、支出の分類別グラフを表示したりできるシンプルな家計簿アプリケーションです。 プロジェクト全体はGithubにアップロードしておりますので、合わせて参考にしてください。 ・ https://github.com/flying-YT/kakeibo-app/tree/main なお、本アプリをベースに演習問題を作成してみました。Angularに興味ある方は是非試してみてください。 ・ 実践!手を動かして学ぶAngular演習問題 プロジェクト概要 本家計簿アプリは、Angularのコンポーネントとサービスを効果的に利用し、リアクティブなデータ管理にはAngularのSignal機能を採用しています。また、グラフ表示にはChart.jsとng2-chartsライブラリが活用されています。アプリケーションの全体的なスタイルは src/styles.css で定義されており、カードスタイル、タイポグラフィ、テーブル、ボタン、フォーム、ナビゲーションなどの共通スタイルが含まれています。 主要コンポーネントの紹介 Angularアプリケーションは、独立した機能を持つコンポーネントによって構成されます。本プロジェクトの主要なコンポーネントとその役割について説明します。 AppComponent: アプリケーションの骨格 AppComponentは、アプリケーション全体のレイアウトを定義するルートコンポーネントです。 目的: アプリケーションのタイトル、メインナビゲーション、そしてルーティングに基づいて各画面のコンポーネントが表示されるメイ...