<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Docker on Harry0703</title><link>https://harry0703.com/tags/docker/</link><description>Recent content in Docker on Harry0703</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>harry0703@hotmail.com (Harry)</managingEditor><webMaster>harry0703@hotmail.com (Harry)</webMaster><copyright>&lt;a href="https://github.com/harry0703" target="_blank" rel="noopener noreferrer"&gt;github.com/harry0703&lt;/a&gt;</copyright><lastBuildDate>Sat, 03 Aug 2024 12:30:01 +0800</lastBuildDate><atom:link href="https://harry0703.com/tags/docker/index.xml" rel="self" type="application/rss+xml"/><item><title>阿里开源 CosyVoice 语音克隆 部署和使用</title><link>https://harry0703.com/post/cosyvoice/</link><pubDate>Sat, 03 Aug 2024 12:30:01 +0800</pubDate><author>harry0703@hotmail.com (Harry)</author><guid>https://harry0703.com/post/cosyvoice/</guid><description>&lt;p&gt;应该是 &lt;strong&gt;开源界 音色 最稳定&lt;/strong&gt; 的语音合成和克隆模型了，支持预训练音色合成、自然语言控制、3秒极速复刻和跨语种复刻。&lt;/p&gt;
&lt;p&gt;官方部署方式比较复杂，错误较多，我这里进行了整理和优化，&lt;strong&gt;支持GPU和CPU&lt;/strong&gt;，方便大家使用。&lt;/p&gt;
&lt;p&gt;CosyVoice 开源仓库: &lt;a href="https://github.com/FunAudioLLM/CosyVoice"&gt;CosyVoice&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="效果展示"&gt;效果展示&lt;/h2&gt;
&lt;h3 id="自然语言控制"&gt;自然语言控制&lt;/h3&gt;
&lt;img src="https://harry0703.com/post/cosyvoice/1.jpg" alt="image" class="center" width="600"&gt;&lt;h3 id="3秒极速复刻"&gt;3秒极速复刻&lt;/h3&gt;
&lt;img src="https://harry0703.com/post/cosyvoice/2.jpg" alt="image" class="center" width="600"&gt;&lt;h2 id="使用方法"&gt;使用方法&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;均支持 GPU 和 CPU&lt;/p&gt;
&lt;p&gt;第一次启动过程可能会有点长，需要从魔搭下载3个模型&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="windows-一键启动包"&gt;Windows 一键启动包&lt;/h3&gt;
&lt;p&gt;百度网盘: &lt;a href="https://pan.baidu.com/s/1UTuRKPQ9nuQk69qxQzdL4A?pwd=j2ei"&gt;https://pan.baidu.com/s/1UTuRKPQ9nuQk69qxQzdL4A?pwd=j2ei&lt;/a&gt; 提取码: j2ei&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下载后使用 7z 解压。没有 7z 的话，可以在这里下载：&lt;a href="https://7-zip.org/download.html"&gt;https://7-zip.org/download.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;双击 &lt;code&gt;双击启动.bat&lt;/code&gt; 启动服务&lt;/li&gt;
&lt;li&gt;启动后，访问 &lt;a href="http://127.0.0.1:50000/"&gt;http://127.0.0.1:50000/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：文件夹中不能有 &lt;strong&gt;中文&lt;/strong&gt;、&lt;strong&gt;特殊字符&lt;/strong&gt;和&lt;strong&gt;空格&lt;/strong&gt;，否则可能会启动失败&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="docker部署"&gt;Docker部署🐳&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;确保已经安装了Docker软件，没有的话，从官网下载安装 &lt;a href="https://www.docker.com/products/docker-desktop/"&gt;https://www.docker.com/products/docker-desktop/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;复制以下代码到终端运行即可&lt;/p&gt;
&lt;h4 id="cpu-版本"&gt;CPU 版本&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://harry0703.com/cosyvoice/docker-compose.yml -o docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker-compose up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id="gpu-版本"&gt;GPU 版本&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://harry0703.com/cosyvoice/docker-compose-gpu.yml -o docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker-compose up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;docker 启动后，访问 &lt;a href="http://127.0.0.1:50000/"&gt;http://127.0.0.1:50000/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>FunASR实时语音识别部署和使用</title><link>https://harry0703.com/post/realtime-funasr/</link><pubDate>Thu, 25 Jul 2024 20:30:01 +0800</pubDate><author>harry0703@hotmail.com (Harry)</author><guid>https://harry0703.com/post/realtime-funasr/</guid><description>&lt;p&gt;FunASR 模型的整理和集成，Docker一键启动，能够&lt;strong&gt;实时识别语音&lt;/strong&gt;输入，准确度非常高&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href="https://github.com/harry0703/AudioNotes"&gt;https://github.com/harry0703/AudioNotes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;FunASR开源仓库: &lt;a href="https://github.com/modelscope/FunASR"&gt;https://github.com/modelscope/FunASR&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="效果展示"&gt;效果展示&lt;/h2&gt;
&lt;img src="https://harry0703.com/post/realtime-funasr/1.jpg" alt="image"&gt;&lt;h2 id="使用方法"&gt;使用方法&lt;/h2&gt;
&lt;h3 id="docker部署"&gt;Docker部署🐳&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;确保已经安装了Docker软件，没有的话，从官网下载安装 &lt;a href="https://www.docker.com/products/docker-desktop/"&gt;https://www.docker.com/products/docker-desktop/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;复制以下代码到终端运行即可&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL https://harry0703.com/realtime-funasr/docker-compose.yml -o docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker-compose up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;注意：第一次启动过程可能会有点长，需要从魔搭下载4个模型&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.modelscope.cn/models/damo/speech_fsmn_vad_zh-cn-16k-common-onnx/summary"&gt;FSMN-VAD模型&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.modelscope.cn/models/damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx/summary"&gt;Paraformer-lagre实时模型&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.modelscope.cn/models/damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx/summary"&gt;CT-Transformer标点预测模型&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.modelscope.cn/models/thuduj12/fst_itn_zh/summary"&gt;基于FST的中文ITN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;docker 启动后，访问 &lt;a href="http://localhost:10096/"&gt;http://localhost:10096/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="-如果你想了解更多可以往下看"&gt;👉👉 如果你想了解更多，可以往下看&lt;/h2&gt;
&lt;h3 id="参数说明"&gt;参数说明&lt;/h3&gt;
&lt;h4 id="-模型模式"&gt;① 模型模式&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2pass&lt;/strong&gt;: （默认）实时语音识别，并且句尾采用离线模型进行纠错（&lt;strong&gt;准确度更高&lt;/strong&gt;）&lt;/li&gt;
&lt;li&gt;online: 实时语音识别&lt;/li&gt;
&lt;li&gt;offline: 一句话识别&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="-逆文本标准化itn"&gt;② 逆文本标准化（ITN）&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;是&lt;/strong&gt;: （默认） 表示进行逆文本标准化&lt;/li&gt;
&lt;li&gt;否: 表示不进行逆文本标准化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;逆文本标准化（Inverse Text Normalization, ITN）&lt;/strong&gt; 是语音识别和自然语言处理领域的一种技术，用于将自动语音识别（ASR）系统生成的文本转化为更自然和可读的格式。这是对文本标准化（Text
Normalization, TN）的逆过程。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;逆文本标准化的目的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当语音被转换为文本时，ASR 系统通常会输出一种更标准化的文本形式。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数字 &amp;ldquo;123&amp;rdquo; 可能会被识别为 &amp;ldquo;一二三&amp;rdquo; 或 &amp;ldquo;123&amp;rdquo;。&lt;/li&gt;
&lt;li&gt;日期 &amp;ldquo;2024年7月25日&amp;rdquo; 可能会被识别为 &amp;ldquo;二零二四年七月二十五日&amp;rdquo; 或 &amp;ldquo;2024年7月25日&amp;rdquo;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;这些输出虽然标准化，但不一定是人们习惯书写或阅读的格式。&lt;/strong&gt;
ITN 的作用是将这些标准化的文本转换回更自然、更符合书面习惯的形式。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;一二三&amp;rdquo; 转换为 &amp;ldquo;123&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;二零二四年七月二十五日&amp;rdquo; 转换为 &amp;ldquo;2024年7月25日&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;五千七百六十三&amp;rdquo; 转换为 &amp;ldquo;5763&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="如果你想使用api请参考以下文档"&gt;👉👉如果你想使用API，请参考以下文档&lt;/h2&gt;
&lt;h3 id="系统架构图"&gt;系统架构图&lt;/h3&gt;
&lt;img src="https://harry0703.com/post/realtime-funasr/2.jpg" alt="image"&gt;&lt;blockquote&gt;
&lt;p&gt;注意：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;10096端口为网页界面&lt;/li&gt;
&lt;li&gt;10095端口为websocket通信端口
&amp;gt; &lt;img src="https://harry0703.com/post/realtime-funasr/3.jpg" alt="image"&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h3 id="-从客户端往服务端发送数据"&gt;🅰️ 从客户端往服务端发送数据&lt;/h3&gt;
&lt;h4 id="消息格式"&gt;消息格式&lt;/h4&gt;
&lt;p&gt;配置参数用&lt;code&gt;json&lt;/code&gt;，音频数据采用&lt;code&gt;bytes&lt;/code&gt;&lt;/p&gt;
&lt;h4 id="-首次通信"&gt;① 首次通信&lt;/h4&gt;
&lt;p&gt;客户端发送配置参数&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-1"&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-2"&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-3"&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-4"&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-5"&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-6"&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-7"&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-8"&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-9"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-9"&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-10"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-10"&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-11"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-11"&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-12"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-12"&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-13"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-13"&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-14"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-14"&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;chunk_size&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;wav_name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;h5&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;is_speaking&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;wav_format&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;pcm&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;chunk_interval&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;itn&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;mode&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2pass&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;hotwords&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;{\&amp;#34;阿里巴巴\&amp;#34;:20,\&amp;#34;hello world\&amp;#34;:40}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;参数说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wav_name&lt;/code&gt;：表示需要推理音频文件名&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wav_format&lt;/code&gt;：表示音视频文件后缀名，只支持pcm音频流&lt;/li&gt;
&lt;li&gt;&lt;code&gt;is_speaking&lt;/code&gt;：表示断句尾点，例如，vad切割点，或者一条wav结束&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chunk_size&lt;/code&gt;：表示流式模型latency配置，&lt;code&gt;[5,10,5]&lt;/code&gt;，表示当前音频为600ms，并且回看300ms，又看300ms。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hotwords&lt;/code&gt;：如果使用热词，需要向服务端发送热词数据（字符串），格式为 &amp;ldquo;{&amp;ldquo;阿里巴巴&amp;rdquo;:20,&amp;ldquo;通义实验室&amp;rdquo;:30}&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;itn&lt;/code&gt;: 设置是否使用itn，默认 &lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="-发送音频数据"&gt;② 发送音频数据&lt;/h4&gt;
&lt;p&gt;直接将音频数据移除头部信息后，使用 bytes 数据发送，支持音频采样率为8000&lt;/p&gt;
&lt;h4 id="-发送结束标志"&gt;③ 发送结束标志&lt;/h4&gt;
&lt;p&gt;音频数据发送结束后，需要发送结束标志&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-3"&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;is_speaking&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="-从服务端往客户端发数据"&gt;🅱️ 从服务端往客户端发数据&lt;/h3&gt;
&lt;h4 id="发送识别结果"&gt;发送识别结果&lt;/h4&gt;
&lt;p&gt;识别中&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-3"&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-4"&gt;4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-5"&gt;5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-3-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-3-6"&gt;6&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;is_final&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;mode&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2pass-online&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;阿里&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;wav_name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;h5&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;识别结束&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-1"&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-2"&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-3"&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-4"&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-5"&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-6"&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-7"&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-8"&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-9"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-9"&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-10"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-10"&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-11"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-11"&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-12"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-12"&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-13"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-13"&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-14"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-14"&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-4-15"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-4-15"&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;is_final&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;mode&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2pass-offline&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;stamp_sents&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;end&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;4385&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;punc&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;start&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;820&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;text_seg&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;阿 里 开 源 的 语 音 识 别 真 是 太 牛 了&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;text&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;阿里开源的语音识别真是太牛了&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;[[820,1060],[1060,1319],[1319,1480],[1480,1760],[1760,2220],[2220,2420],[2420,2659],[2659,2820],[2820,3300],[3300,3480],[3480,3659],[3659,3820],[3820,4060],[4060,4385]]&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;wav_name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;h5&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;参数说明：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;mode&lt;/code&gt;：推理模式
&lt;ul&gt;
&lt;li&gt;2pass-online：表示实时识别结果&lt;/li&gt;
&lt;li&gt;2pass-offline：表示2遍修正识别结果&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;wav_name&lt;/code&gt;：需要推理音频文件名&lt;/li&gt;
&lt;li&gt;&lt;code&gt;text&lt;/code&gt;：语音识别输出文本&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="踩坑"&gt;👉👉踩坑&lt;/h2&gt;
&lt;h3 id="报错录音open失败浏览器禁止不安全页面录音"&gt;报错：录音open失败：浏览器禁止不安全页面录音&lt;/h3&gt;
&lt;p&gt;如果你是在&lt;strong&gt;其他电脑或服务器上部署的服务，而不是在本地&lt;/strong&gt;，当你打开页面后，可能会遇到这个问题。&lt;/p&gt;
&lt;p&gt;假设服务器IP是 &lt;code&gt;192.168.1.170&lt;/code&gt;，打开的页面是 http://192.168.1.170:10096/&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方法：&lt;/strong&gt;
&lt;img src="https://harry0703.com/post/realtime-funasr/4.jpg" alt="image"&gt;&lt;/p&gt;
&lt;h4 id="chrome浏览器"&gt;Chrome浏览器&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;在浏览器地址栏输入 &lt;code&gt;chrome://flags/#unsafely-treat-insecure-origin-as-secure&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;http://192.168.1.170:10096/&lt;/code&gt; 添加到输入框内&lt;/li&gt;
&lt;li&gt;将 &lt;code&gt;Insecure origins treated as secure&lt;/code&gt; 设置为 &lt;code&gt;Enabled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;重启浏览器&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="edge浏览器"&gt;Edge浏览器&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;在浏览器地址栏输入 &lt;code&gt;edge://flags/#unsafely-treat-insecure-origin-as-secure&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;http://192.168.1.170:10096/&lt;/code&gt; 添加到输入框内&lt;/li&gt;
&lt;li&gt;将 &lt;code&gt;Insecure origins treated as secure&lt;/code&gt; 设置为 &lt;code&gt;Enabled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;重启浏览器&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>手把手教你把AI大模型本地知识库问答接入个人微信，实现微信内的AI智能客服</title><link>https://harry0703.com/post/chatgpt-on-wechat/</link><pubDate>Mon, 29 Apr 2024 07:56:01 +0800</pubDate><author>harry0703@hotmail.com (Harry)</author><guid>https://harry0703.com/post/chatgpt-on-wechat/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;前提&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;先搭建好 &lt;strong&gt;本地化的企业级知识库问答系统&lt;/strong&gt;
，参考 &lt;a href="https://harry0703.com/post/enterprise-knowledge-llm-qa/"&gt;《手把手教你构建一个 本地化的，免费的，企业级的，AI大模型知识库问答系统》&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="下载docker启动文件"&gt;下载Docker启动文件&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;因为 &lt;a href="https://github.com/zhayujie/chatgpt-on-wechat"&gt;ChatGPT-On-WeChat&lt;/a&gt;
代码有 &lt;a href="https://github.com/zhayujie/chatgpt-on-wechat/issues/1880"&gt;Bug&lt;/a&gt;，作者一直未修复，因此我修改后，重新打了一个Docker镜像，避免大家踩坑。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-0-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-0-3"&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir chatgpt-on-wechat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd chatgpt-on-wechat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -O https://harry0703.com/chatgpt-on-wechat/docker-compose.yml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="修改配置文件"&gt;修改配置文件&lt;/h2&gt;
&lt;p&gt;打开 &lt;code&gt;docker-compose.yml&lt;/code&gt; 文件，修改 &lt;code&gt;OPEN_AI_API_KEY&lt;/code&gt; 和 &lt;code&gt;OPEN_AI_API_BASE&lt;/code&gt; 为你的 FastGPT 的 API Key 和 API 地址。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-1"&gt; 1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-2"&gt; 2&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-3"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-3"&gt; 3&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-4"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-4"&gt; 4&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-5"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-5"&gt; 5&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-6"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-6"&gt; 6&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-7"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-7"&gt; 7&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-8"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-8"&gt; 8&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-9"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-9"&gt; 9&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-10"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-10"&gt;10&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-11"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-11"&gt;11&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-12"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-12"&gt;12&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-13"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-13"&gt;13&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-14"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-14"&gt;14&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-15"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-15"&gt;15&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-16"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-16"&gt;16&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-17"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-17"&gt;17&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-18"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-18"&gt;18&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-19"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-19"&gt;19&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-20"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-20"&gt;20&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-21"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-21"&gt;21&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-22"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-22"&gt;22&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-23"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-23"&gt;23&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-24"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-24"&gt;24&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-25"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-25"&gt;25&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-26"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-26"&gt;26&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-27"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-27"&gt;27&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-28"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-28"&gt;28&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-29"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-29"&gt;29&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-30"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-30"&gt;30&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-1-31"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-1-31"&gt;31&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;2.0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;services&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;chatgpt-on-wechat&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;image&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;harryliu888/chatgpt-on-wechat:latest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;container_name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;chatgpt-on-wechat&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;security_opt&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;seccomp:unconfined&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;environment&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# OPEN_AI_API_KEY 在 FastGPT 的 应用发布页面生成（API访问）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;OPEN_AI_API_KEY&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;fastgpt-iAt0KIDwpZqFvxfpmWstAkars36s0ASBENYKYLGSwJcf7NuCn2NzT&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# OPEN_AI_API_BASE 填写 FastGPT 的 API 地址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 特别注意，如果 chatgpt-on-wechat 是docker部署的，因此要访问外部的 FastGPT，这里需要使用 host.docker.internal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;OPEN_AI_API_BASE&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;http://host.docker.internal:3000/api/v1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;MODEL&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;gpt-3.5-turbo&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;PROXY&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;SINGLE_CHAT_PREFIX&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;[&amp;#34;bot&amp;#34;, &amp;#34;@bot&amp;#34;]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;SINGLE_CHAT_REPLY_PREFIX&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#34;[bot] &amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;GROUP_CHAT_PREFIX&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;[&amp;#34;@bot&amp;#34;]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;GROUP_NAME_WHITE_LIST&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;[&amp;#34;ChatGPT测试群&amp;#34;, &amp;#34;ChatGPT测试群2&amp;#34;]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;IMAGE_CREATE_PREFIX&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;[&amp;#34;画&amp;#34;, &amp;#34;看&amp;#34;, &amp;#34;找&amp;#34;]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;CONVERSATION_MAX_TOKENS&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;SPEECH_RECOGNITION&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;False&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;CHARACTER_DESC&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;你是ChatGPT, 一个由OpenAI训练的大型语言模型, 你旨在回答并解决人们的任何问题，并且可以使用多种语言与人交流。&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;EXPIRES_IN_SECONDS&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;USE_GLOBAL_PLUGIN_CONFIG&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;True&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;USE_LINKAI&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;False&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;LINKAI_API_KEY&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;LINKAI_APP_CODE&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;extra_hosts&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#e6db74"&gt;&amp;#39;host.docker.internal:host-gateway&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="启动docker"&gt;启动Docker&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;
&lt;table style="border-spacing:0;padding:0;margin:0;border:0;"&gt;&lt;tr&gt;&lt;td style="vertical-align:top;padding:0;margin:0;border:0;"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-1"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-1"&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style="white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f" id="hl-2-2"&gt;&lt;a style="outline:none;text-decoration:none;color:inherit" href="#hl-2-2"&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style="vertical-align:top;padding:0;margin:0;border:0;;width:100%"&gt;
&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd chatgpt-on-wechat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker-compose up
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item></channel></rss>