{"id":1705,"date":"2026-08-14T15:43:17","date_gmt":"2026-08-14T07:43:17","guid":{"rendered":"https:\/\/www.livetops.com\/?p=1705"},"modified":"2026-08-14T15:43:19","modified_gmt":"2026-08-14T07:43:19","slug":"meetingai-local-v2-1-1%ef%bc%9a%e6%9c%ac%e5%9c%b0%e4%bc%98%e5%85%88%e7%9a%84%e5%ae%9e%e6%97%b6%e4%bc%9a%e8%ae%ae%e6%99%ba%e8%83%bd%e5%8a%a9%e6%89%8b%ef%bc%8c%e5%8a%a0%e5%85%a5-ai-response-gateway","status":"publish","type":"post","link":"https:\/\/www.livetops.com\/en\/archives\/1705","title":{"rendered":"MeetingAI Local v2.1.1: A real-time meeting assistant that prioritizes local processing, featuring the AI Response Gateway and a collapsible workspace"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>MeetingAI Local v2.1.1<\/strong> It is a \"local-first\" set of intelligent tools for real-time meetings, designed for scenarios such as real-time meeting transcription, meeting analysis, AI-powered Q&amp;A, long-form audio processing, and local knowledge management.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is not merely a \u201cvoice-to-text\u201d tool, but rather a meeting dashboard that runs in a browser: the browser handles microphone input, while the Python server handles ASR, meeting intelligence, AI scheduling, history storage, and the knowledge base. The system can be used in real time during meetings and also supports offline transcription and analysis of existing long recordings in formats such as MP3, WAV, and M4A after they are imported.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Windows Public Download:<\/p>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-2881a5b1-dd6f-432e-877d-faee3541f445\" href=\"https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/MeetingAI-Local_v2.1.1_Public.zip\">MeetingAI-Local_v2.1.1_Public<\/a><a href=\"https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/MeetingAI-Local_v2.1.1_Public.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-2881a5b1-dd6f-432e-877d-faee3541f445\">downloading<\/a><\/div>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Why We Created MeetingAI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MeetingAI is not designed merely to transcribe speech into long blocks of text, but rather to go a step further and enable participants in meetings to<strong>Key points, issues, actions, and risks naturally come to light<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Currently, MeetingAI's main workspace consists of three columns:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Left: Real-time recording;<\/li>\n\n\n\n<li>Center: Smart Conferencing;<\/li>\n\n\n\n<li>On the right: AI Assistant.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The original verbatim transcript is retained, while the AI continuously generates updates on the current topic, real-time briefings, key points, and stage summaries alongside it, and can directly answer questions about the meeting.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"596\" src=\"https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/live-meeting-workspace-1024x596.jpg\"  class=\"wp-image-1707\" srcset=\"https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/live-meeting-workspace-1024x596.jpg 1024w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/live-meeting-workspace-300x175.jpg 300w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/live-meeting-workspace-768x447.jpg 768w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/live-meeting-workspace-1536x894.jpg 1536w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/live-meeting-workspace-18x10.jpg 18w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/live-meeting-workspace.jpg 2014w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" title=\"MeetingAI Local v2.1.1\uff1a\u672c\u5730\u4f18\u5148\u7684\u5b9e\u65f6\u4f1a\u8bae\u667a\u80fd\u52a9\u624b\uff0c\u52a0\u5165 AI Response Gateway \u4e0e\u53ef\u6298\u53e0\u5de5\u4f5c\u533a\u63d2\u56fe\" alt=\"MeetingAI Local v2.1.1\uff1a\u672c\u5730\u4f18\u5148\u7684\u5b9e\u65f6\u4f1a\u8bae\u667a\u80fd\u52a9\u624b\uff0c\u52a0\u5165 AI Response Gateway \u4e0e\u53ef\u6298\u53e0\u5de5\u4f5c\u533a\u63d2\u56fe\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">v2.1.1 Key Changes: AI Response Gateway<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The focus of v2.1.1 is not on adding a new surface button, but rather on making adjustments to the AI infrastructure layer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">More and more models now support reasoning and thinking. A typical response might be:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>reasoning:\nInternal analysis process of the model\n\nfinal:\nThe answer that should actually be shown to the user<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If the system fails to distinguish between these two parts correctly, a very strange problem may occur:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Even though the model was clearly just making an internal determination that \u201cthere is no new information, so it should return an empty string,\u201d the system displayed this internal reasoning directly as a real-time alert.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Therefore, MeetingAI has added a unified layer between the AI provider and the meeting service, <strong>AI Response Gateway<\/strong>::<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AI Provider\n \u2193\nAI Response Gateway\n \u251c\u2500 Isolation of reasoning\/thinking\n \u251c\u2500 Extraction of final answer\n \u251c\u2500  tag cleanup\n \u251c\u2500 Text\/JSON output contract\n \u2514\u2500 \"final-only\" retry if necessary\n \u2193\nMeetingAI Business Layer<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This means:<strong>The model is allowed to think, but its thought process will not automatically become part of the meeting content.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In v2.1.1, this Gateway also added background observability:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Number of AI calls processed;<\/li>\n\n\n\n<li>How much reasoning has been isolated;<\/li>\n\n\n\n<li>Valid empty output;<\/li>\n\n\n\n<li>Automatic retry;<\/li>\n\n\n\n<li>Abnormal state;<\/li>\n\n\n\n<li>Recently called tasks, models, elapsed time, and the number of characters in the \"final\" and \"reasoning\" sections.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Also available <code>protect \/ observe \/ bypass<\/code> Three modes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is important to note that even if full Gateway protection is disabled and the system enters safe bypass mode, the system will not revert to the dangerous behavior of providing a \"fallback answer with an empty reasoning and 'final' status.\"<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/admin-dashboard-1024x559.jpg\"  class=\"wp-image-1708\" srcset=\"https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/admin-dashboard-1024x559.jpg 1024w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/admin-dashboard-300x164.jpg 300w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/admin-dashboard-768x419.jpg 768w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/admin-dashboard-1536x839.jpg 1536w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/admin-dashboard-18x10.jpg 18w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/admin-dashboard.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" title=\"MeetingAI Local v2.1.1\uff1a\u672c\u5730\u4f18\u5148\u7684\u5b9e\u65f6\u4f1a\u8bae\u667a\u80fd\u52a9\u624b\uff0c\u52a0\u5165 AI Response Gateway \u4e0e\u53ef\u6298\u53e0\u5de5\u4f5c\u533a\u63d2\u56fe1\" alt=\"MeetingAI Local v2.1.1\uff1a\u672c\u5730\u4f18\u5148\u7684\u5b9e\u65f6\u4f1a\u8bae\u667a\u80fd\u52a9\u624b\uff0c\u52a0\u5165 AI Response Gateway \u4e0e\u53ef\u6298\u53e0\u5de5\u4f5c\u533a\u63d2\u56fe1\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The original verbatim transcript and the AI's interpretation are separate.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MeetingAI applies a similar approach to ASR processing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Original:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transcript.jsonl<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Always preserve the original ASR\/human-verified evidence so that AI cannot secretly alter it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AI's semantic verification of recognition results is handled separately:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transcript_semantics.jsonl<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In the middle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, ASR takes <code>Ollama<\/code> If a term is identified as a homophone, the AI can suggest a correction with high confidence in the \u201cAI-Assisted\u201d view; however, higher thresholds are applied to facts such as amounts, dates, personnel, responsible parties, contract terms, and key decisions. If the AI cannot confirm a term, it is marked as \u201cPending Confirmation\u201d rather than making an unfounded assumption.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So the entire process is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Audio\n\u2192 ASR\n\u2192 Raw Transcript\n\u2192 AI Semantic Annotation Sidecar\n\u2192 Meeting Intelligence \/ AI Assistant \/ AI Notes<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">AI \u51fa\u9519\u6216 Provider \u6682\u65f6\u4e0d\u53ef\u7528\u65f6\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u56de\u9000\u539f\u59cb\u9010\u5b57\u7a3f\uff0c\u4e0d\u963b\u585e\u4f1a\u8bae\u4e3b\u6d41\u7a0b\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u652f\u6301 MP3 \u7b49\u8d85\u957f\u97f3\u9891\u5bfc\u5165<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u9664\u4e86\u5b9e\u65f6\u9ea6\u514b\u98ce\uff0cMeetingAI \u4e5f\u652f\u6301\u5bfc\u5165\u5df2\u6709\u5f55\u97f3\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u652f\u6301\u7684\u5e38\u89c1\u683c\u5f0f\u5305\u62ec\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MP3 \/ WAV \/ M4A \/ AAC \/ FLAC \/ OGG \/ OPUS \/ WEBM\nMP4 \/ MOV \/ MKV \u97f3\u8f68<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bfc\u5165\u540e\u4e0d\u4f1a\u628a\u6574\u4e2a\u51e0\u5c0f\u65f6\u97f3\u9891\u4e00\u6b21\u6027\u585e\u8fdb\u5185\u5b58\uff0c\u800c\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u539f\u6587\u4ef6\u843d\u76d8\n\u2192 FFmpeg \u89e3\u7801\n\u2192 \u56fa\u5b9a\u65f6\u957f\u5206\u6bb5\n\u2192 \u540e\u53f0 ASR\n\u2192 \u6309\u65f6\u95f4\u8f74\u5199\u56de transcript\n\u2192 AI\u8bed\u4e49\u6821\u9a8c\n\u2192 \u4f1a\u8bae\u667a\u80fd<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u76ee\u524d\u91c7\u7528\u7684\u662f<strong>\u56fa\u5b9a\u65f6\u957f\u5207\u5206<\/strong>\uff0c\u9ed8\u8ba4 60 \u79d2\uff0c\u53ef\u4ee5\u5728 10\u2013600 \u79d2\u4e4b\u95f4\u8c03\u6574\uff1b\u5355\u6b21\u5bfc\u5165\u8fd8\u53ef\u4ee5\u76f4\u63a5\u9009\u62e9 30 \/ 60 \/ 90 \/ 120 \u79d2\u6216\u81ea\u5b9a\u4e49\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u524d\u7248\u672c\u6682\u672a\u52a0\u5165\u201c\u667a\u80fd\u9759\u97f3\u8fb9\u754c\u5207\u5206\u201d\uff0c\u4f18\u5148\u91c7\u7528\u66f4\u53ef\u9884\u6d4b\u3001\u6613\u4e8e\u6062\u590d\u4e14\u9002\u5408\u8d85\u957f\u4efb\u52a1\u7684\u56fa\u5b9a\u65f6\u957f\u5207\u5206\u65b9\u6848\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u672c\u5730 AI\u3001\u77e5\u8bc6\u5e93\u548c\u56de\u7b54\u8303\u56f4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI \u52a9\u624b\u652f\u6301\u591a\u5bf9\u8bdd\uff0c\u5e76\u628a\u201c\u56de\u7b54\u6df1\u5ea6\u201d\u548c\u201c\u77e5\u8bc6\u8303\u56f4\u201d\u5206\u5f00\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56de\u7b54\u6df1\u5ea6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u5feb\u901f \/ \u6807\u51c6 \/ \u6df1\u5165<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u56de\u7b54\u8303\u56f4\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u4ec5\u4f1a\u8bae \/ AI\u77e5\u8bc6 \/ \u77e5\u8bc6\u5e93 \/ \u8054\u7f51 \/ \u5168\u5f00<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\u53ef\u6309\u9700\u8981\u9009\u62e9\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53ea\u6839\u636e\u672c\u6b21\u4f1a\u8bae\u56de\u7b54\uff1b<\/li>\n\n\n\n<li>\u4f7f\u7528 AI \u81ea\u8eab\u77e5\u8bc6\u8865\u5145\uff1b<\/li>\n\n\n\n<li>\u4f7f\u7528\u6307\u5b9a\u672c\u5730\u77e5\u8bc6\u5e93\uff1b<\/li>\n\n\n\n<li>\u8054\u7f51\u67e5\u8be2\uff1b<\/li>\n\n\n\n<li>\u6216\u5168\u90e8\u5f00\u542f\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u77e5\u8bc6\u5e93\u76ee\u524d\u652f\u6301\u672c\u5730 TXT \/ Markdown \u6587\u6863\u9012\u5f52\u626b\u63cf\u548c\u589e\u91cf\u7d22\u5f15\uff0c\u4e0d\u8981\u6c42\u989d\u5916\u90e8\u7f72\u4e00\u4e2a\u5927\u578b\u5411\u91cf\u6570\u636e\u5e93\u624d\u80fd\u5f00\u59cb\u4f7f\u7528\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u8fd0\u884c\u73af\u5883\u3001GPU \u4e0e\u56fd\u5185\u7f51\u7edc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MeetingAI \u4e0d\u8d1f\u8d23\u5b89\u88c5 Python \u672c\u4f53\uff0c\u4f46\u540e\u53f0\u53ef\u4ee5\u68c0\u6d4b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python\uff1b<\/li>\n\n\n\n<li>CPU\uff1b<\/li>\n\n\n\n<li>\u5185\u5b58\uff1b<\/li>\n\n\n\n<li>NVIDIA GPU\uff1b<\/li>\n\n\n\n<li>\u663e\u5b58\uff1b<\/li>\n\n\n\n<li>CUDA\uff1b<\/li>\n\n\n\n<li>PyTorch CUDA\uff1b<\/li>\n\n\n\n<li>FFmpeg\uff1b<\/li>\n\n\n\n<li>\u6838\u5fc3\u4f9d\u8d56\uff1b<\/li>\n\n\n\n<li>ASR \u5f15\u64ce\u548c\u6a21\u578b\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u540c\u65f6\u652f\u6301\u4e2d\u56fd\u5927\u9646\u5e38\u7528 Pip \u955c\u50cf\u3001ModelScope \/ HuggingFace \u6a21\u578b\u6765\u6e90\u4ee5\u53ca HTTP(S) \/ SOCKS5 \u4ee3\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee3\u7406\u4f5c\u7528\u57df\u662f\u5206\u5f00\u7684\uff0c\u4f8b\u5982\u53ea\u8ba9\u6a21\u578b\u4e0b\u8f7d\u8d70\u4ee3\u7406\uff0c\u800c\u4e0d\u8ba9\u672c\u5730 Ollama \u8bf7\u6c42\u7ed5\u4e00\u5708\u4ee3\u7406\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5de6\u4fa7\u680f\u73b0\u5728\u53ef\u4ee5\u6298\u53e0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">v2.1.1 \u4e5f\u505a\u4e86\u4e00\u4e2a\u6bd4\u8f83\u7b80\u5355\u4f46\u5b9e\u7528\u7684 UI \u8c03\u6574\uff1a\u684c\u9762\u7aef\u5de6\u4fa7\u5bfc\u822a\u53ef\u4ee5\u6298\u53e0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c55\u5f00\u65f6\u53ef\u4ee5\u770b\u5230\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MeetingAI\nMeeting Intelligence\n\n\u9996\u9875\n\u5386\u53f2\u4f1a\u8bae\n\u540e\u53f0\u8bbe\u7f6e<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6298\u53e0\u540e\u53ea\u4fdd\u7559\u56fe\u6807\u548c\u72b6\u6001\u706f\uff0c\u4e3a\u4e09\u680f\u4f1a\u8bae\u5de5\u4f5c\u533a\u817e\u51fa\u66f4\u591a\u6a2a\u5411\u7a7a\u95f4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a Sidebar \u72b6\u6001\u548c\u4f1a\u8bae\u5185\u90e8\u7684\u4e09\u680f\u6298\u53e0\/\u653e\u5927\u662f\u4e24\u5957\u5b8c\u5168\u72ec\u7acb\u7684\u5e03\u5c40\u903b\u8f91\uff0c\u4e0d\u4f1a\u56e0\u4e3a\u6536\u8d77\u5de6\u4fa7\u83dc\u5355\u628a\u4e09\u680f\u5de5\u4f5c\u533a\u53d8\u6210\u4e0a\u4e0b\u6392\u5217\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"587\" src=\"https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/home-dashboard-1024x587.jpg\"  class=\"wp-image-1709\" srcset=\"https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/home-dashboard-1024x587.jpg 1024w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/home-dashboard-300x172.jpg 300w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/home-dashboard-768x440.jpg 768w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/home-dashboard-1536x880.jpg 1536w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/home-dashboard-18x10.jpg 18w, https:\/\/www.livetops.com\/wp-content\/uploads\/2026\/08\/home-dashboard.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" title=\"MeetingAI Local v2.1.1\uff1a\u672c\u5730\u4f18\u5148\u7684\u5b9e\u65f6\u4f1a\u8bae\u667a\u80fd\u52a9\u624b\uff0c\u52a0\u5165 AI Response Gateway \u4e0e\u53ef\u6298\u53e0\u5de5\u4f5c\u533a\u63d2\u56fe2\" alt=\"MeetingAI Local v2.1.1\uff1a\u672c\u5730\u4f18\u5148\u7684\u5b9e\u65f6\u4f1a\u8bae\u667a\u80fd\u52a9\u624b\uff0c\u52a0\u5165 AI Response Gateway \u4e0e\u53ef\u6298\u53e0\u5de5\u4f5c\u533a\u63d2\u56fe2\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Windows \u65b0\u624b\u5b89\u88c5\u6559\u7a0b<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u6309\u201c\u7b2c\u4e00\u6b21\u63a5\u89e6 Python \u4e5f\u80fd\u7167\u7740\u505a\u201d\u7684\u65b9\u5f0f\u5199\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e00\u6b65\uff1a\u5b89\u88c5 Python<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MeetingAI \u8981\u6c42\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Python 3.10+<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Windows 64 \u4f4d\u73af\u5883\u63a8\u8350\u4f7f\u7528 Python 3.11\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5 Python \u65f6\u4e00\u5b9a\u52fe\u9009\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Add python.exe to PATH<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u7ed3\u675f\u540e\u6253\u5f00 CMD\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u770b\u5230\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Python 3.11.x<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bf4\u660e\u6b63\u5e38\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e8c\u6b65\uff1a\u4e0b\u8f7d\u5e76\u89e3\u538b MeetingAI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u628a WordPress \u4e0b\u8f7d\u5305\u89e3\u538b\u5230\u4e00\u4e2a\u7b80\u5355\u76ee\u5f55\uff0c\u4f8b\u5982\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>D:\\MeetingAI<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0d\u8981\u76f4\u63a5\u5728 ZIP \u538b\u7f29\u5305\u5185\u90e8\u53cc\u51fb\u7a0b\u5e8f\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e09\u6b65\uff1a\u5b89\u88c5\u6838\u5fc3\u4f9d\u8d56<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f4\u63a5\u53cc\u51fb\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>install_core.bat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6216\u8005\u5728 CMD \u4e2d\u6267\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/d D:\\MeetingAI\npython -m pip install -r requirements.txt<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u56db\u6b65\uff1a\u542f\u52a8<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u53cc\u51fb\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>start.bat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python meetingai.py<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u6b21\u542f\u52a8\u4f1a\u81ea\u52a8\u751f\u6210 Web UI\u3001Prompt\u3001Schema \u7b49\u8fd0\u884c\u6587\u4ef6\uff0c\u5e76\u751f\u6210\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FIRST_RUN_PASSWORD.txt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u8fd9\u4e2a\u6587\u4ef6\u91cc\u7684\u5bc6\u7801\u767b\u5f55\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9ed8\u8ba4\u672c\u673a\u5730\u5740\u901a\u5e38\u662f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:&#47;&#47;127.0.0.1:7777<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u7ec8\u4ee5\u7ec8\u7aef\u542f\u52a8\u65f6\u663e\u793a\u7684\u5730\u5740\u4e3a\u51c6\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e94\u6b65\uff1a\u5148\u8dd1\u4e00\u6b21\u81ea\u68c0<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>python meetingai.py --self-test<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u81ea\u68c0\u6b63\u5e38\uff0c\u518d\u8fdb\u5165\u540e\u53f0\u914d\u7f6e ASR \u548c AI Provider\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u516d\u6b65\uff1a\u914d\u7f6e ASR<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fdb\u5165\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u540e\u53f0\u8bbe\u7f6e \u2192 \u8fd0\u884c\u73af\u5883<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u770b\u7cfb\u7edf\u68c0\u6d4b\u7ed3\u679c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Faster-Whisper<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u76f4\u63a5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u53cc\u51fb install_asr_whisper.bat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python -m pip install -r requirements-asr-whisper.txt<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">FunASR \/ SenseVoice<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">FunASR \u7528\u6237\u5e94\u5148\u5b89\u88c5\u4e0e\u4f60\u7535\u8111 CPU\/GPU \u5339\u914d\u7684 PyTorch + torchaudio\uff0c\u7136\u540e\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u53cc\u51fb install_asr_funasr.bat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6216\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python -m pip install -U funasr modelscope<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u9a8c\u8bc1 GPU\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python -c \"import torch; print(torch.__version__, torch.cuda.is_available())\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u4e03\u6b65\uff1a\u5b89\u88c5 FFmpeg<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4f60\u8981\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u672c\u5730 ASR\uff1b<\/li>\n\n\n\n<li>\u5bfc\u5165 MP3\/M4A\/MP4\uff1b<\/li>\n\n\n\n<li>\u5904\u7406\u957f\u5f55\u97f3\uff1b<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5efa\u8bae\u5b89\u88c5 FFmpeg\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728 CMD \u4e2d\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ffmpeg -version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u80fd\u663e\u793a\u7248\u672c\u5373\u6b63\u5e38\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e5f\u53ef\u4ee5\u5728\u540e\u53f0\u586b\u5199 <code>ffmpeg.exe<\/code> \u7684\u5b8c\u6574\u8def\u5f84\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7b2c\u516b\u6b65\uff1a\u914d\u7f6e AI Provider<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fdb\u5165\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u540e\u53f0\u8bbe\u7f6e \u2192 AI \u4e0e\u8c03\u5ea6<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u8fde\u63a5\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u672c\u5730 Ollama\uff1b<\/li>\n\n\n\n<li>OpenAI-compatible Provider\uff1b<\/li>\n\n\n\n<li>\u5176\u4ed6\u517c\u5bb9\u63a5\u53e3\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u914d\u7f6e\u6210\u529f\u540e\u53ef\u4ee5\u4f7f\u7528\u4f1a\u8bae\u667a\u80fd\u3001AI \u52a9\u624b\u3001AI \u7b14\u8bb0\u3001ASR \u8bed\u4e49\u6821\u9a8c\u7b49\u80fd\u529b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>MeetingAI Local v2.1.1 \u662f\u4e00\u5957\u672c\u5730\u4f18\u5148\uff08local-first\uff09\u7684\u5b9e\u65f6\u4f1a\u8bae\u667a\u80fd\u5de5\u5177\uff0c\u9762\u5411 [&hellip;]<\/p>","protected":false},"author":1,"featured_media":1709,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"image","meta":{"footnotes":""},"categories":[422,420],"tags":[294,431],"class_list":["post-1705","post","type-post","status-publish","format-image","has-post-thumbnail","hentry","category-ai","category-python","tag-ai","tag-431","post_format-post-format-image"],"_links":{"self":[{"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/posts\/1705","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/comments?post=1705"}],"version-history":[{"count":1,"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/posts\/1705\/revisions"}],"predecessor-version":[{"id":1710,"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/posts\/1705\/revisions\/1710"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/media\/1709"}],"wp:attachment":[{"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/media?parent=1705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/categories?post=1705"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.livetops.com\/en\/wp-json\/wp\/v2\/tags?post=1705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}