Spaces:
Running
Running
add local-AI loop video (Page Assist + Ollama), no audio track
Browse files- .gitattributes +1 -0
- README.md +14 -0
- index.html +47 -0
- 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
|