ToothpasteLake commited on
Commit
787c151
·
verified ·
1 Parent(s): ecc5ae3

add local-AI loop video (Page Assist + Ollama), no audio track

Browse files
Files changed (4) hide show
  1. .gitattributes +1 -0
  2. README.md +14 -0
  3. index.html +47 -0
  4. use-with-browser-ai.mp4 +3 -0
.gitattributes CHANGED
@@ -47,3 +47,4 @@ static/videos/steve.mp4 filter=lfs diff=lfs merge=lfs -text
47
  static/videos/teaser.mp4 filter=lfs diff=lfs merge=lfs -text
48
  static/videos/toby.mp4 filter=lfs diff=lfs merge=lfs -text
49
  demo.mp4 filter=lfs diff=lfs merge=lfs -text
 
 
47
  static/videos/teaser.mp4 filter=lfs diff=lfs merge=lfs -text
48
  static/videos/toby.mp4 filter=lfs diff=lfs merge=lfs -text
49
  demo.mp4 filter=lfs diff=lfs merge=lfs -text
50
+ use-with-browser-ai.mp4 filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -25,6 +25,7 @@ short_description: 100% offline ASR for meetings — local, no upload
25
  | `index.html` | 实际展示的页面 |
26
  | `demo.mp4` | 42 秒演示:五段音频真跑,听完才落字;`tools/record-demo.py` 生成 |
27
  | `demo.mp4.json` | 那次录制的实测记录:每段文本、耗时、音频 sha256 |
 
28
  | `README.md` | 本文件,Space 卡片元数据 |
29
  | `app.py`、`requirements.txt` | **Gradio 版**,本地已跑通;当前 `sdk: static` 不执行它。升级 PRO 后把 frontmatter 改回 `sdk: gradio` 即可切换 |
30
 
@@ -38,6 +39,19 @@ short_description: 100% offline ASR for meetings — local, no upload
38
 
39
  因此视频里“字幕出现的时刻”就是产品里“一段话说完的时刻”,音画不会漂。
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  ## 模型与音频
42
 
43
  权重在 [ToothpasteLake/offlisten-models](https://huggingface.co/ToothpasteLake/offlisten-models),
 
25
  | `index.html` | 实际展示的页面 |
26
  | `demo.mp4` | 42 秒演示:五段音频真跑,听完才落字;`tools/record-demo.py` 生成 |
27
  | `demo.mp4.json` | 那次录制的实测记录:每段文本、耗时、音频 sha256 |
28
+ | `use-with-browser-ai.mp4` | 46 秒,无音轨:本地文本页 + Page Assist + Ollama 的闭环实录 |
29
  | `README.md` | 本文件,Space 卡片元数据 |
30
  | `app.py`、`requirements.txt` | **Gradio 版**,本地已跑通;当前 `sdk: static` 不执行它。升级 PRO 后把 frontmatter 改回 `sdk: gradio` 即可切换 |
31
 
 
39
 
40
  因此视频里“字幕出现的时刻”就是产品里“一段话说完的时刻”,音画不会漂。
41
 
42
+ ## 接本地的 AI
43
+
44
+ `use-with-browser-ai.mp4` 记录的是另一条链路,46 秒,无音轨:
45
+
46
+ 本机 SenseVoice → 127.0.0.1 上的文本页 → 浏览器扩展 Page Assist 读当前页 → Ollama 上的 qwen2.5:0.5b 作答
47
+
48
+ 三个部件都在同一台机器上,链路里没有一处需要出网。这不是外挂,是产品页里写好的出口——
49
+ 本地文本页有一行提示:「要交给 AI 处理,就复制全文,或让你浏览器里已有的 AI 插件读取本页。」
50
+
51
+ 视频去掉音轨、裁掉录屏工具条后转码:源素材 14.8 MB → 1.2 MB,1440×746。
52
+ 去掉声音是因为它要证明的是数据不出本机,不是听感。
53
+
54
+
55
  ## 模型与音频
56
 
57
  权重在 [ToothpasteLake/offlisten-models](https://huggingface.co/ToothpasteLake/offlisten-models),
index.html CHANGED
@@ -47,6 +47,11 @@
47
  text-align: center; color: var(--dim); font-size: 14px;
48
  }
49
  code { background: var(--panel); border: 1px solid var(--line); border-radius: 4px; padding: 1px 5px; font-size: 13px; }
 
 
 
 
 
50
  footer { margin-top: 56px; padding-top: 20px; border-top: 1px solid var(--line); color: var(--dim); font-size: 13px; }
51
  ul { padding-left: 20px; margin: 0 0 14px; }
52
  li { margin-bottom: 6px; }
@@ -110,6 +115,48 @@
110
  视频里出现的每个字节都只走过 <code>127.0.0.1</code>。
111
  </p>
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  <h2>它和云端转写的区别</h2>
114
  <ul>
115
  <li><b>不上传</b>:音频不出本机。没有「隐私政策」需要读,因为没有服务器收它。</li>
 
47
  text-align: center; color: var(--dim); font-size: 14px;
48
  }
49
  code { background: var(--panel); border: 1px solid var(--line); border-radius: 4px; padding: 1px 5px; font-size: 13px; }
50
+ h3 { font-size: 15px; margin: 26px 0 10px; font-weight: 600; color: var(--dim); }
51
+ blockquote {
52
+ margin: 0 0 14px; padding: 10px 14px; border-left: 2px solid var(--accent);
53
+ background: var(--panel); color: #c9d1d8; font-size: 14px; line-height: 1.7;
54
+ }
55
  footer { margin-top: 56px; padding-top: 20px; border-top: 1px solid var(--line); color: var(--dim); font-size: 13px; }
56
  ul { padding-left: 20px; margin: 0 0 14px; }
57
  li { margin-bottom: 6px; }
 
115
  视频里出现的每个字节都只走过 <code>127.0.0.1</code>。
116
  </p>
117
 
118
+ <h2>接上本地的 AI</h2>
119
+
120
+ <p>
121
+ 录匣只做一件事:把声音变成文字。总结、追问、翻译交给谁写,由你决定——只要那个「谁」也在这台机器上。
122
+ 下面这段 46 秒没有音轨,因为它要证明的是另一件事。
123
+ </p>
124
+
125
+ <video controls preload="metadata" src="./use-with-browser-ai.mp4"></video>
126
+
127
+ <p class="note" style="margin-top:12px">
128
+ 左边是录匣的本地文本页,右边是浏览器里的 Page Assist,接着一个跑在 Ollama 上的 <code>qwen2.5:0.5b</code>。
129
+ 勾选 <b>Chat with current page</b> 之后,插件读的是这个页面本身——不是云端接口,也不是把文字复制到别处再粘贴回来。
130
+ </p>
131
+
132
+ <h3>这不是外挂,是产品里写好的出口</h3>
133
+
134
+ <p>本地文本页上那行提示,就是为这件事留的:</p>
135
+
136
+ <blockquote>
137
+ 文本来自本机离线 ASR,只在 127.0.0.1 上传输。本页不调用任何模型,也不持有 apikey。
138
+ 要交给 AI 处理,就复制全文,或让你浏览器里已有的 AI 插件读取本页。
139
+ </blockquote>
140
+
141
+ <p>视频里三个部件都在同一台机器上,链路中没有一处需要出网:</p>
142
+
143
+ <div class="tablewrap">
144
+ <table>
145
+ <thead><tr><th>部件</th><th>作用</th><th>跑在哪</th></tr></thead>
146
+ <tbody>
147
+ <tr><td>SenseVoice int8</td><td>声音 → 带标点文字</td><td class="out">本机进程,229 MiB 随安装包落盘</td></tr>
148
+ <tr><td>Page Assist</td><td>把当前页内容放进提示词</td><td class="out">浏览器扩展</td></tr>
149
+ <tr><td>Ollama + qwen2.5:0.5b</td><td>读文字,给回答</td><td class="out">本机进程,监听 127.0.0.1:11434</td></tr>
150
+ </tbody>
151
+ </table>
152
+ </div>
153
+
154
+ <p class="note" style="margin-top:12px">
155
+ 两句实话:一是 <code>0.5b</code> 只有五亿参数,回答质量按小模型的标准看,别拿它和云端大模型比;
156
+ 二是视频里它用英文作答,因为页面上并排摆着中文原文和 Argos 译文,模型看到的是双语文本。
157
+ 想让回答更稳,就在插件里限定「只依据中文原文回答」。
158
+ </p>
159
+
160
  <h2>它和云端转写的区别</h2>
161
  <ul>
162
  <li><b>不上传</b>:音频不出本机。没有「隐私政策」需要读,因为没有服务器收它。</li>
use-with-browser-ai.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a4c8fadff62cddff82c9151001614910d9ce6f16ad1337d3e0b022633fb03fd2
3
+ size 1178127