<!DOCTYPE html>
|
<html class="writer-html5" lang="en" >
|
<head>
|
<meta charset="utf-8" />
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="author" content="岱特智能科技(上海)有限公司" />
|
<link rel="shortcut icon" href="../../../img/favicon.ico" />
|
<title>语音合成与识别服务Docker-部署说明 - DT-HA</title>
|
<link rel="stylesheet" href="../../../css/theme.css" />
|
<link rel="stylesheet" href="../../../css/theme_extra.css" />
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" />
|
|
<script>
|
// Current page data
|
var mkdocs_page_name = "\u8bed\u97f3\u5408\u6210\u4e0e\u8bc6\u522b\u670d\u52a1Docker-\u90e8\u7f72\u8bf4\u660e";
|
var mkdocs_page_input_path = "Usages\\QA\\\u8bed\u97f3\u5408\u6210\u4e0e\u8bc6\u522b\u670d\u52a1Docker-\u90e8\u7f72\u8bf4\u660e.md";
|
var mkdocs_page_url = null;
|
</script>
|
|
<!--[if lt IE 9]>
|
<script src="../../../js/html5shiv.min.js"></script>
|
<![endif]-->
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
|
<script>hljs.highlightAll();</script>
|
</head>
|
|
<body class="wy-body-for-nav" role="document">
|
|
<div class="wy-grid-for-nav">
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
|
<div class="wy-side-scroll">
|
<div class="wy-side-nav-search">
|
<a href="../../.." class="icon icon-home"> DT-HA
|
</a><div role="search">
|
<form id ="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" title="Type search term here" />
|
</form>
|
</div>
|
</div>
|
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
<ul>
|
<li class="toctree-l1"><a class="reference internal" href="../../..">首页</a>
|
</li>
|
</ul>
|
<ul>
|
<li class="toctree-l1"><a class="reference internal" href="../../../about/">关于</a>
|
</li>
|
</ul>
|
<p class="caption"><span class="caption-text">使用教程</span></p>
|
<ul class="current">
|
<li class="toctree-l1"><a class="reference internal" href="../../../install-guide/installHa/">安装</a>
|
</li>
|
<li class="toctree-l1"><a class="reference internal" >使用</a>
|
<ul>
|
<li class="toctree-l2"><a class="reference internal" href="../../usage/">使用概述</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../../netconfig/netconfig/">配置网络</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../../initConfig/initConfig/">系统初始化配置</a>
|
</li>
|
</ul>
|
</li>
|
<li class="toctree-l1 current"><a class="reference internal current" >Q/A</a>
|
<ul class="current">
|
<li class="toctree-l2"><a class="reference internal" href="../%E9%80%8F%E6%9E%90%E4%B8%AD%E5%BF%83HA%E7%8E%AF%E5%A2%83%E6%B8%A9%E5%BA%A6%E5%8F%91%E9%80%81%E5%88%B0%E8%83%9C%E9%80%8F%E7%9A%84%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97/">透析中心HA环境温度发送到胜透的操作指南</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../errorsQA/">errorsQA</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../HA-%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%8A%B6%E6%80%81%E5%8F%8D%E8%BD%AC/">HA-如何实现状态反转</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../TS88%E9%80%8F%E6%9E%90%E6%9C%BA%E8%81%94%E6%9C%BA%E9%80%9A%E4%BF%A1-%E4%B8%AD%E6%96%87%E7%89%88/">TS88透析机联机通信-中文版</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../VMware-ESXi%E6%89%A9%E5%B1%95HomeAssistant%E7%A1%AC%E7%9B%98%E6%8C%87%E5%8D%97/">VMware-ESXi扩展HomeAssistant硬盘指南</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../%E5%A6%82%E4%BD%95%E9%9B%86%E6%88%90%E5%92%8C%E9%A3%8E%E5%A4%A9%E6%B0%94%E7%BB%84%E4%BB%B6%E5%88%B0HA/">如何集成和风天气组件到HA</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../%E5%A6%82%E5%8E%95%E9%A3%8E%E9%99%A9-%E4%BA%BA%E5%AD%98%E5%9C%A8%E4%BC%A0%E6%84%9F%E5%99%A8%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/">如厕风险-人存在传感器配置方法</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../ubunte-desktop%E6%A1%8C%E9%9D%A2%E7%B3%BB%E7%BB%9F%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%E5%BC%80%E5%90%AF%E8%BF%9C%E7%A8%8B%E5%8D%8F%E5%8A%A9/">Ubuntu-desktop桌面系统如何配置开启远程协助</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../%E5%A6%82%E4%BD%95%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85Docker%28ubunt24.04%29/">如何离线安装Docker(ubuntu24.04)</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../%E5%A6%82%E4%BD%95%E5%9C%A8%E7%BA%BFDocker%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E8%A3%85HomeAssistant/">如何在线Docker一键安装HomeAssistant</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../%E5%A6%82%E4%BD%95%E7%A6%BB%E7%BA%BFDocker%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85HomeAssistant/">如何离线Docker一键安装HomeAssistant</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../%E5%9F%BA%E4%BA%8EDocker%E7%9A%84%E6%96%B9%E5%BC%8F%E5%AE%89%E8%A3%85HomeAssistant/">基于Docker的方式安装HomeAssistant</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../%E5%A6%82%E4%BD%95%E5%BF%AB%E9%80%9F%E9%83%A8%E7%BD%B2frpc%E6%9C%8D%E5%8A%A1/">如何快速部署frpc服务</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../windows%E4%B8%8D%E8%83%BD%E8%AE%BF%E9%97%AEHA%E7%9A%84%E5%85%B1%E4%BA%AB%E9%85%8D%E7%BD%AE%E7%9B%AE%E5%BD%95%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/">windows不能访问HA的共享配置目录的解决办法</a>
|
</li>
|
<li class="toctree-l2 current"><a class="reference internal current" href="#">语音合成与识别服务Docker-部署说明</a>
|
<ul class="current">
|
<li class="toctree-l3"><a class="reference internal" href="#_1">一、简介</a>
|
</li>
|
<li class="toctree-l3"><a class="reference internal" href="#_2">二、环境准备</a>
|
</li>
|
<li class="toctree-l3"><a class="reference internal" href="#docker">三、获取Docker镜像</a>
|
</li>
|
<li class="toctree-l3"><a class="reference internal" href="#_3">四、在线部署步骤</a>
|
<ul>
|
<li class="toctree-l4"><a class="reference internal" href="#_4">执行一键安装脚本</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#_6">首次运行</a>
|
</li>
|
</ul>
|
</li>
|
<li class="toctree-l3"><a class="reference internal" href="#_8">五、离线部署步骤</a>
|
<ul>
|
<li class="toctree-l4"><a class="reference internal" href="#_9">离线部署的相关文件下载地址</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#1-docker">1. 下载Docker镜像与数据卷文件</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#2">2. 给运行脚本添加执行权限</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#3">3. 执行安装脚本</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#4">4. 查看容器运行状态</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#5">5. 实时查看容器日志</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#6">6. 管理容器</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#7">7. 调整端口</a>
|
</li>
|
</ul>
|
</li>
|
<li class="toctree-l3"><a class="reference internal" href="#_10">六、使用说明</a>
|
<ul>
|
<li class="toctree-l4"><a class="reference internal" href="#1-tts">1. 语音合成(TTS)服务</a>
|
</li>
|
<li class="toctree-l4"><a class="reference internal" href="#2-asr">2. 语音识别(ASR)服务</a>
|
</li>
|
</ul>
|
</li>
|
</ul>
|
</li>
|
</ul>
|
</li>
|
</ul>
|
<p class="caption"><span class="caption-text">其它教程</span></p>
|
<ul>
|
<li class="toctree-l1"><a class="reference internal" >Node-red相关</a>
|
<ul>
|
<li class="toctree-l2"><a class="reference internal" href="../../../node-reds/%E5%AE%89%E8%A3%85node-red%E8%AE%B0%E5%BD%95/">安装node-red记录</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../../../node-reds/%E5%A6%82%E4%BD%95%E6%8A%8Anode-red%E5%AE%89%E8%A3%85%E5%88%B0orangepiZero3/">如何把node-red安装到orangepiZero</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../../../node-reds/ModbusPoll-v7.0.0%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B/">ModbusPoll-v7.0.0使用教程</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../../../node-reds/node-red%E5%B8%B8%E7%94%A8%E7%BB%84%E4%BB%B6%E5%88%97%E8%A1%A8/">node-red常用组件列表</a>
|
</li>
|
<li class="toctree-l2"><a class="reference internal" href="../../../node-reds/node-red%E5%A6%82%E4%BD%95%E8%BF%9E%E6%8E%A5modbus%20_slave%E8%AE%BE%E5%A4%87/">node-red如何连接modbus _slave设备</a>
|
</li>
|
</ul>
|
</li>
|
</ul>
|
</div>
|
</div>
|
</nav>
|
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
<nav class="wy-nav-top" role="navigation" aria-label="Mobile navigation menu">
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
<a href="../../..">DT-HA</a>
|
|
</nav>
|
<div class="wy-nav-content">
|
<div class="rst-content"><div role="navigation" aria-label="breadcrumbs navigation">
|
<ul class="wy-breadcrumbs">
|
<li><a href="../../.." class="icon icon-home" aria-label="Docs"></a></li>
|
<li class="breadcrumb-item">使用教程</li>
|
<li class="breadcrumb-item">Q/A</li>
|
<li class="breadcrumb-item active">语音合成与识别服务Docker-部署说明</li>
|
<li class="wy-breadcrumbs-aside">
|
</li>
|
</ul>
|
<hr/>
|
</div>
|
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
<div class="section" itemprop="articleBody">
|
|
<h1 id="docker-">语音合成与识别服务Docker-部署说明<a class="headerlink" href="#docker-" title="Permanent link">¶</a></h1>
|
<style>
|
pre, code {
|
white-space: pre-wrap;
|
word-break: break-all;
|
}
|
</style>
|
|
<h2 id="_1">一、简介<a class="headerlink" href="#_1" title="Permanent link">¶</a></h2>
|
<p>语音合成与识别服务(以下简称“服务”)提供高质量的文本转语音(TTS)和语音转文本(ASR)功能。为了方便用户快速部署和使用该服务,我们提供了基于Docker的部署方案。本文档将详细介绍如何使用Docker部署该服务。
|
本文提供的语音合成与识别服务,是基于paddlespeech开发的TTS和ASR服务(纯CPU服务),用户可以通过Docker快速部署并使用该服务。</p>
|
<h2 id="_2">二、环境准备<a class="headerlink" href="#_2" title="Permanent link">¶</a></h2>
|
<p>在开始部署之前,请确保您的环境满足以下要求:
|
1. 已安装Docker和Docker Compose。
|
2. 具备一定的Linux命令行操作基础。
|
3. 确保您的服务器具备足够的计算资源(CPU、内存、GPU等)。</p>
|
<h2 id="docker">三、获取Docker镜像<a class="headerlink" href="#docker" title="Permanent link">¶</a></h2>
|
<p>我们提供了预构建的Docker镜像,地址位于七牛云,<a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/paddlespeech.tar">下载地址</a>为:</p>
|
<div class="codehilite"><pre><span></span><code>https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/paddlespeech.tar
|
</code></pre></div>
|
|
<h2 id="_3">四、在线部署步骤<a class="headerlink" href="#_3" title="Permanent link">¶</a></h2>
|
<h3 id="_4">执行一键安装脚本<a class="headerlink" href="#_4" title="Permanent link">¶</a></h3>
|
<div class="codehilite"><pre><span></span><code>curl -fsSL https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/install-paddlespeech.sh | sudo bash
|
</code></pre></div>
|
|
<h4 id="_5">如下图所示:<a class="headerlink" href="#_5" title="Permanent link">¶</a></h4>
|
<p><img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921094451.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921095852.png" /></p>
|
<h3 id="_6">首次运行<a class="headerlink" href="#_6" title="Permanent link">¶</a></h3>
|
<p>使用TTS或asr服务,首次运行会自动下载模型文件,模型文件较大,<strong><em>下载过程约需10分钟</em></strong>,请耐心等待。</p>
|
<h4 id="_7">如下所示<a class="headerlink" href="#_7" title="Permanent link">¶</a></h4>
|
<p>我们可以如用下命令实时查看运行日志:</p>
|
<div class="codehilite"><pre><span></span><code>docker logs -f paddlespeech
|
</code></pre></div>
|
|
<p>TTS模型首次使用时侍自动从网络下载约2G的模型文件,下载完成后会自动启动服务。后续再次使用时,不会重复下载模型文件。
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921093139.png" />
|
Asr模型首次使用时侍自动从网络下载约1G的模型文件,下载完成后会自动启动服务。后续再次使用时,不会重复下载模型文件。
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921093510.png" /></p>
|
<h2 id="_8">五、离线部署步骤<a class="headerlink" href="#_8" title="Permanent link">¶</a></h2>
|
<h3 id="_9">离线部署的相关文件下载地址<a class="headerlink" href="#_9" title="Permanent link">¶</a></h3>
|
<ol>
|
<li>Docker镜像文件: <a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/paddlespeech.tar">下载地址</a></li>
|
<li>数据卷文件: 以下文件要下载并复制到目标机器临时认置的目录,与install-paddlespeech-localh.sh所在目录同级的子目录data目录下<ul>
|
<li><a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/data/home_dtuser_opt_paddlespeech_data_logs.tar.gz">home_dtuser_opt_paddlespeech_data_logs.tar.gz</a></li>
|
<li><a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/data/home_dtuser_opt_paddlespeech_data_nltk_data.tar.gz">home_dtuser_opt_paddlespeech_data_nltk_data.tar.gz</a></li>
|
<li><a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/data/home_dtuser_opt_paddlespeech_data_output.tar.gz">home_dtuser_opt_paddlespeech_data_output.tar.gz</a></li>
|
<li><a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/data/home_dtuser_opt_paddlespeech_data_paddlenlp_models.tar.gz">home_dtuser_opt_paddlespeech_data_paddlenlp_models.tar.gz</a></li>
|
<li><a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/data/home_dtuser_opt_paddlespeech_data_paddlespeech_models.tar.gz">home_dtuser_opt_paddlespeech_data_paddlespeech_models.tar.gz</a></li>
|
</ul>
|
</li>
|
<li>离线安装脚本: <a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/install-paddlespeech-localh.sh">下载地址</a></li>
|
<li>测试演示使用网页: <a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/tts_demo.zip">下载地址</a></li>
|
</ol>
|
<p><strong><em>离线安装包分两部份,一部份是容器镜像,一部份是数据卷文件,安装启动容器前先替换对据卷绑定的目录,这样容器启动后无须下载模型,可以在无互联网的情况下直接使用</em></strong></p>
|
<h3 id="1-docker">1. 下载Docker镜像与数据卷文件<a class="headerlink" href="#1-docker" title="Permanent link">¶</a></h3>
|
<p>如下示例,我们将文件放到用户目录的down下,请保持相应的目录结构,如下所示:</p>
|
<div class="codehilite"><pre><span></span><code>tst@tst-VMware-Virtual-Platform:~/down$<span class="w"> </span><span class="nb">pwd</span>
|
/home/tst/down
|
tst@tst-VMware-Virtual-Platform:~/down$<span class="w"> </span>ls
|
data<span class="w"> </span>install-paddlespeech-localh.sh
|
tst@tst-VMware-Virtual-Platform:~/down$<span class="w"> </span>tree
|
.
|
├──<span class="w"> </span>data
|
│<span class="w"> </span>├──<span class="w"> </span>home_dtuser_opt_paddlespeech_data_logs.tar.gz
|
│<span class="w"> </span>├──<span class="w"> </span>home_dtuser_opt_paddlespeech_data_nltk_data.tar.gz
|
│<span class="w"> </span>├──<span class="w"> </span>home_dtuser_opt_paddlespeech_data_output.tar.gz
|
│<span class="w"> </span>├──<span class="w"> </span>home_dtuser_opt_paddlespeech_data_paddlenlp_models.tar.gz
|
│<span class="w"> </span>└──<span class="w"> </span>home_dtuser_opt_paddlespeech_data_paddlespeech_models.tar.gz
|
├──<span class="w"> </span>home_dtuser_opt_paddlespeech_data_paddlespeech_models.tar.gz
|
└──<span class="w"> </span>install-paddlespeech-localh.sh
|
|
<span class="m">2</span><span class="w"> </span>directories,<span class="w"> </span><span class="m">7</span><span class="w"> </span>files
|
</code></pre></div>
|
|
<p><img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921180213.png" /> </p>
|
<h3 id="2">2. 给运行脚本添加执行权限<a class="headerlink" href="#2" title="Permanent link">¶</a></h3>
|
<div class="codehilite"><pre><span></span><code>chmod<span class="w"> </span>+x<span class="w"> </span>install-paddlespeech-localh.sh
|
</code></pre></div>
|
|
<h3 id="3">3. 执行安装脚本<a class="headerlink" href="#3" title="Permanent link">¶</a></h3>
|
<div class="codehilite"><pre><span></span><code>sudo<span class="w"> </span>./install-paddlespeech-localh.sh
|
</code></pre></div>
|
|
<p>按装脚本将会先解压文件,并加载docker镜像,然后启动容器,启动完成后,可以使用docker ps命令查看运行状态,如下所示:</p>
|
<div class="codehilite"><pre><span></span><code>tst@tst-VMware-Virtual-Platform:~/down$<span class="w"> </span>sudo<span class="w"> </span>./install-paddlespeech-localh.sh
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>开始<span class="w"> </span>PaddleSpeech<span class="w"> </span>离线安装...
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>磁盘空间检查通过(55GB)
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>检测网络连接...
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>网络连接正常
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>创建目录结构...
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>目录结构创建完成
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>解压数据卷...
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>正在解压:<span class="w"> </span>/home/tst/down/data/home_dtuser_opt_paddlespeech_data_logs.tar.gz<span class="w"> </span>到<span class="w"> </span>/dt_opt/paddlespeech/data/logs
|
./
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>正在解压:<span class="w"> </span>/home/tst/down/data/home_dtuser_opt_paddlespeech_data_nltk_data.tar.gz<span class="w"> </span>到<span class="w"> </span>/dt_opt/paddlespeech/data/nltk_data
|
./
|
./taggers/
|
./taggers/averaged_perceptron_tagger/
|
./taggers/averaged_perceptron_tagger/averaged_perceptron_tagger.pickle
|
./taggers/averaged_perceptron_tagger.zip
|
./corpora/
|
./corpora/cmudict/
|
./corpora/cmudict/cmudict
|
./corpora/cmudict/README
|
./corpora/cmudict.zip
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>正在解压:<span class="w"> </span>/home/tst/down/data/home_dtuser_opt_paddlespeech_data_output.tar.gz<span class="w"> </span>到<span class="w"> </span>/dt_opt/paddlespeech/data/output
|
./
|
./2753d658-b228-4ae6-94fc-3404a41f4526.wav
|
./9f24d71e-9f29-4d60-aa13-677fd19bba46.wav
|
./38ea94c6-e19b-4e41-8cca-454d8e374a15.wav
|
./d44aa891-c36b-473f-aef3-44484f0cd74b.wav
|
./c5ef53d3-502b-4f81-9fdd-583836ba7096.wav
|
./3931cd47-e022-4385-b588-4a61e64e5eed.wav
|
./1d213380-eee6-43ba-88db-99ba9b5609df.wav
|
./c85f65de-a4c1-43aa-a251-52ce4e9df271.wav
|
./7cd5fc65-665b-444c-9c9f-41f1ce8036f8.wav
|
./f74dbda7-1cf8-4056-bd30-523b74af8b0e.wav
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>正在解压:<span class="w"> </span>/home/tst/down/data/home_dtuser_opt_paddlespeech_data_paddlenlp_models.tar.gz<span class="w"> </span>到<span class="w"> </span>/dt_opt/paddlespeech/data/paddlenlp_models
|
./
|
./packages/
|
./models/
|
./models/bert-base-chinese/
|
./models/bert-base-chinese/bert-base-chinese-vocab.txt
|
./models/bert-base-chinese/tokenizer_config.json
|
./models/bert-base-chinese/vocab.txt
|
./models/bert-base-chinese/special_tokens_map.json
|
./models/embeddings/
|
./models/.locks/
|
./models/.locks/bert-base-chinese/
|
./datasets/
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>正在解压:<span class="w"> </span>/home/tst/down/data/home_dtuser_opt_paddlespeech_data_paddlespeech_models.tar.gz<span class="w"> </span>到<span class="w"> </span>/dt_opt/paddlespeech/data/paddlespeech_models
|
./
|
./conf/
|
./conf/cache.yaml
|
./models/
|
./models/G2PWModel_1.1/
|
./models/G2PWModel_1.1/config.py
|
./models/G2PWModel_1.1/MONOPHONIC_CHARS.txt
|
./models/G2PWModel_1.1/__pycache__/
|
./models/G2PWModel_1.1/__pycache__/config.cpython-39.pyc
|
./models/G2PWModel_1.1/__pycache__/config.cpython-310.pyc
|
./models/G2PWModel_1.1/record.log
|
./models/G2PWModel_1.1/bopomofo_to_pinyin_wo_tune_dict.json
|
./models/G2PWModel_1.1/POLYPHONIC_CHARS.txt
|
./models/G2PWModel_1.1/char_bopomofo_dict.json
|
./models/G2PWModel_1.1/g2pW.onnx
|
./models/G2PWModel_1.1/version
|
./models/G2PWModel_1.1.zip
|
./models/conformer_wenetspeech-zh-16k/
|
./models/conformer_wenetspeech-zh-16k/1.0/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/conf/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/conf/preprocess.yaml
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/conf/tuning/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/conf/tuning/decode.yaml
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/conf/conformer.yaml
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/conf/conformer_infer.yaml
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/data/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/data/lang_char/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/data/lang_char/vocab.txt
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/data/mean_std.json
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/model.yaml
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/exp/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/exp/conformer/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/exp/conformer/checkpoints/
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar/exp/conformer/checkpoints/wenetspeech.pdparams
|
./models/conformer_wenetspeech-zh-16k/1.0/asr1_conformer_wenetspeech_ckpt_0.1.1.model.tar.gz
|
./models/fastspeech2_csmsc-zh/
|
./models/fastspeech2_csmsc-zh/1.0/
|
./models/fastspeech2_csmsc-zh/1.0/fastspeech2_nosil_baker_ckpt_0.4.zip
|
./models/fastspeech2_csmsc-zh/1.0/fastspeech2_nosil_baker_ckpt_0.4/
|
./models/fastspeech2_csmsc-zh/1.0/fastspeech2_nosil_baker_ckpt_0.4/snapshot_iter_76000.pdz
|
./models/fastspeech2_csmsc-zh/1.0/fastspeech2_nosil_baker_ckpt_0.4/phone_id_map.txt
|
./models/fastspeech2_csmsc-zh/1.0/fastspeech2_nosil_baker_ckpt_0.4/default.yaml
|
./models/fastspeech2_csmsc-zh/1.0/fastspeech2_nosil_baker_ckpt_0.4/speech_stats.npy
|
./models/fastspeech2_csmsc-zh/1.0/fastspeech2_nosil_baker_ckpt_0.4/pitch_stats.npy
|
./models/fastspeech2_csmsc-zh/1.0/fastspeech2_nosil_baker_ckpt_0.4/energy_stats.npy
|
./models/hifigan_csmsc-zh/
|
./models/hifigan_csmsc-zh/1.0/
|
./models/hifigan_csmsc-zh/1.0/hifigan_csmsc_ckpt_0.1.1.zip
|
./models/hifigan_csmsc-zh/1.0/hifigan_csmsc_ckpt_0.1.1/
|
./models/hifigan_csmsc-zh/1.0/hifigan_csmsc_ckpt_0.1.1/default.yaml
|
./models/hifigan_csmsc-zh/1.0/hifigan_csmsc_ckpt_0.1.1/snapshot_iter_2500000.pdz
|
./models/hifigan_csmsc-zh/1.0/hifigan_csmsc_ckpt_0.1.1/feats_stats.npy
|
./datasets/
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>数据卷解压完成
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>解压镜像包...
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>镜像包已移动到<span class="w"> </span>/dt_opt/paddlespeech/images
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>加载Docker镜像...
|
daf557c4f08e:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">81</span>.04MB/81.04MB
|
d593918d433d:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">4</span>.123MB/4.123MB
|
7c4cff21e743:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">41</span>.36MB/41.36MB
|
25f6bb353e99:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">5</span>.12kB/5.12kB
|
bc3a46414f17:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">1</span>.536kB/1.536kB
|
8fc7185920f1:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">3</span>.584kB/3.584kB
|
bac2a7f893df:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span>847MB/847MB
|
092bab498a3d:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">13</span>.31MB/13.31MB
|
19db93cce63e:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">2</span>.56kB/2.56kB
|
2fc7499dded4:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">3</span>.042GB/3.042GB
|
7da6b60d7eb7:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">2</span>.53MB/2.53MB
|
<span class="m">057242764992</span>:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">8</span>.704kB/8.704kB
|
9a996f3d539d:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">3</span>.072kB/3.072kB
|
4cdf0570391d:<span class="w"> </span>Loading<span class="w"> </span>layer<span class="w"> </span><span class="o">[==================================================</span>><span class="o">]</span><span class="w"> </span><span class="m">104</span>.2MB/104.2MB
|
Loaded<span class="w"> </span>image:<span class="w"> </span>dt_iot/paddlespeech:latest
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>镜像加载成功
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>生成docker-compose.yaml...
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>docker-compose.yaml创建完成
|
<span class="o">[</span>INFO<span class="o">]</span><span class="w"> </span>启动容器...
|
<span class="o">[</span>+<span class="o">]</span><span class="w"> </span>Running<span class="w"> </span><span class="m">2</span>/2
|
<span class="w"> </span>✔<span class="w"> </span>Network<span class="w"> </span>dtnet<span class="w"> </span>Created<span class="w"> </span><span class="m">0</span>.5s<span class="w"> </span>
|
<span class="w"> </span>✔<span class="w"> </span>Container<span class="w"> </span>paddlespeech<span class="w"> </span>Started<span class="w"> </span><span class="m">4</span>.6s<span class="w"> </span>
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>容器启动成功
|
<span class="o">[</span>SUCCESS<span class="o">]</span><span class="w"> </span>PaddleSpeech<span class="w"> </span>离线安装完成!
|
</code></pre></div>
|
|
<h3 id="4">4. 查看容器运行状态<a class="headerlink" href="#4" title="Permanent link">¶</a></h3>
|
<div class="codehilite"><pre><span></span><code>docker<span class="w"> </span>ps
|
</code></pre></div>
|
|
<h3 id="5">5. 实时查看容器日志<a class="headerlink" href="#5" title="Permanent link">¶</a></h3>
|
<div class="codehilite"><pre><span></span><code>docker<span class="w"> </span>logs<span class="w"> </span>-f<span class="w"> </span>paddlespeech
|
</code></pre></div>
|
|
<p><img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921171624.png" /></p>
|
<h3 id="6">6. 管理容器<a class="headerlink" href="#6" title="Permanent link">¶</a></h3>
|
<p>进入容器器的部署目录:
|
/dt_opt/paddlespeech</p>
|
<div class="codehilite"><pre><span></span><code>docker<span class="w"> </span>ps<span class="w"> </span>up<span class="w"> </span>-d<span class="w"> </span><span class="c1"># 启动容器</span>
|
docker<span class="w"> </span>ps<span class="w"> </span>down<span class="w"> </span><span class="c1"># 停止容器</span>
|
docker<span class="w"> </span>ps<span class="w"> </span>restart<span class="w"> </span><span class="c1"># 重启容器</span>
|
docker<span class="w"> </span>ps<span class="w"> </span>logs<span class="w"> </span>-f<span class="w"> </span>paddlespeech<span class="w"> </span><span class="c1"># 实时查看日志</span>
|
docker<span class="w"> </span>ps<span class="w"> </span><span class="nb">exec</span><span class="w"> </span>-it<span class="w"> </span>paddlespeech<span class="w"> </span>/bin/bash<span class="w"> </span><span class="c1"># 进入容器</span>
|
docker<span class="w"> </span>ps<span class="w"> </span>rm<span class="w"> </span>-f<span class="w"> </span>paddlespeech<span class="w"> </span><span class="c1"># 删除容器</span>
|
docker<span class="w"> </span>rmi<span class="w"> </span>dt_iot/paddlespeech:latest<span class="w"> </span><span class="c1"># 删除镜像</span>
|
docker<span class="w"> </span>volume<span class="w"> </span>rm<span class="w"> </span>paddlespeech_data<span class="w"> </span><span class="c1"># 删除数据卷</span>
|
docker<span class="w"> </span>network<span class="w"> </span>rm<span class="w"> </span>dtnet<span class="w"> </span><span class="c1"># 删除网络</span>
|
docker<span class="w"> </span>system<span class="w"> </span>prune<span class="w"> </span>-a<span class="w"> </span><span class="c1"># 清理无用的镜像、容器、数据卷、网络等</span>
|
</code></pre></div>
|
|
<p>以上是常用命令,使用时根据需要灵活使用。</p>
|
<h3 id="7">7. 调整端口<a class="headerlink" href="#7" title="Permanent link">¶</a></h3>
|
<p>找到文件</p>
|
<div class="codehilite"><pre><span></span><code>/dt_opt/paddlespeech/docker-compose.yaml
|
</code></pre></div>
|
|
<p>修改对应的端口号,如下所示:
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921172307.png" />
|
更改第一个端口为需要的端口号即可,如下所示:</p>
|
<div class="codehilite"><pre><span></span><code>docker-compse<span class="w"> </span>down
|
sudo<span class="w"> </span>nano<span class="w"> </span>./docker-compose.yaml
|
<span class="c1"># 修改对应的端口号,第6行</span>
|
<span class="w"> </span><span class="c1"># - "8001:8001"</span>
|
<span class="c1"># 保存退出,重启容器即可生效</span>
|
docker-compose<span class="w"> </span>up<span class="w"> </span>-d
|
</code></pre></div>
|
|
<h2 id="_10">六、使用说明<a class="headerlink" href="#_10" title="Permanent link">¶</a></h2>
|
<p>为了方便的演示如何调用这个api,我们提供了一个测试网页,<a href="https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/tts_demo.zip">下载地址</a>为:</p>
|
<div class="codehilite"><pre><span></span><code>https://datacdn.data-it.tech/HomeAssistant/dokerimages/paddlespeech1.1/tts_demo.zip
|
</code></pre></div>
|
|
<p><img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921170242.png" /></p>
|
<h3 id="1-tts">1. 语音合成(TTS)服务<a class="headerlink" href="#1-tts" title="Permanent link">¶</a></h3>
|
<h5 id="curl">curl示例<a class="headerlink" href="#curl" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code>curl --request POST \
|
--url http://ikuai.m-iot.tech:58150/tts \
|
--header 'content-type: application/x-www-form-urlencoded' \
|
--data 'text=请张三到一室做检查' \
|
--data lang=zh \
|
--data spk_id=0
|
</code></pre></div>
|
|
<h4 id="htttp-api">HTTTP API说明<a class="headerlink" href="#htttp-api" title="Permanent link">¶</a></h4>
|
<div class="codehilite"><pre><span></span><code><span class="nf">POST</span> <span class="nn">/tts</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/x-www-form-urlencoded</span>
|
<span class="na">Host</span><span class="o">:</span> <span class="l">ikuai.m-iot.tech:58150</span>
|
<span class="na">Content-Length</span><span class="o">:</span> <span class="l">103</span>
|
|
<span class="nt">text</span><span class="o">=</span><span class="s">%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5</span><span class="p">&</span><span class="nt">lang</span><span class="o">=</span><span class="s">zh</span><span class="p">&</span><span class="nt">spk_id</span><span class="o">=</span><span class="s">0</span>
|
</code></pre></div>
|
|
<h5 id="java">Java 示例<a class="headerlink" href="#java" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="c1">//asynchttp</span>
|
<span class="n">AsyncHttpClient</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">DefaultAsyncHttpClient</span><span class="p">();</span>
|
<span class="n">client</span><span class="p">.</span><span class="na">prepare</span><span class="p">(</span><span class="s">"POST"</span><span class="p">,</span><span class="w"> </span><span class="s">"http://ikuai.m-iot.tech:58150/tts"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">setHeader</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"application/x-www-form-urlencoded"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">setBody</span><span class="p">(</span><span class="s">"text=%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5&lang=zh&spk_id=0"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">execute</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">toCompletableFuture</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">thenAccept</span><span class="p">(</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">::</span><span class="n">println</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">join</span><span class="p">();</span>
|
|
<span class="n">client</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
|
<span class="c1">//nethttp</span>
|
<span class="n">HttpRequest</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HttpRequest</span><span class="p">.</span><span class="na">newBuilder</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">uri</span><span class="p">(</span><span class="n">URI</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/tts"</span><span class="p">))</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">header</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"application/x-www-form-urlencoded"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">method</span><span class="p">(</span><span class="s">"POST"</span><span class="p">,</span><span class="w"> </span><span class="n">HttpRequest</span><span class="p">.</span><span class="na">BodyPublishers</span><span class="p">.</span><span class="na">ofString</span><span class="p">(</span><span class="s">"text=%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5&lang=zh&spk_id=0"</span><span class="p">))</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
|
<span class="n">HttpResponse</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HttpClient</span><span class="p">.</span><span class="na">newHttpClient</span><span class="p">().</span><span class="na">send</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">HttpResponse</span><span class="p">.</span><span class="na">BodyHandlers</span><span class="p">.</span><span class="na">ofString</span><span class="p">());</span>
|
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="na">body</span><span class="p">());</span>
|
<span class="c1">//okhttp</span>
|
<span class="n">OkHttpClient</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">OkHttpClient</span><span class="p">();</span>
|
|
<span class="n">MediaType</span><span class="w"> </span><span class="n">mediaType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MediaType</span><span class="p">.</span><span class="na">parse</span><span class="p">(</span><span class="s">"application/x-www-form-urlencoded"</span><span class="p">);</span>
|
<span class="n">RequestBody</span><span class="w"> </span><span class="n">body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">RequestBody</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">mediaType</span><span class="p">,</span><span class="w"> </span><span class="s">"text=%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5&lang=zh&spk_id=0"</span><span class="p">);</span>
|
<span class="n">Request</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Request</span><span class="p">.</span><span class="na">Builder</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">url</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/tts"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">post</span><span class="p">(</span><span class="n">body</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">addHeader</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"application/x-www-form-urlencoded"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
|
|
<span class="n">Response</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="na">newCall</span><span class="p">(</span><span class="n">request</span><span class="p">).</span><span class="na">execute</span><span class="p">();</span>
|
<span class="c1">//unirest</span>
|
<span class="n">HttpResponse</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Unirest</span><span class="p">.</span><span class="na">post</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/tts"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">header</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"application/x-www-form-urlencoded"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">body</span><span class="p">(</span><span class="s">"text=%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5&lang=zh&spk_id=0"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">asString</span><span class="p">();</span>
|
</code></pre></div>
|
|
<h4 id="javascript">javaScript 示例<a class="headerlink" href="#javascript" title="Permanent link">¶</a></h4>
|
<div class="codehilite"><pre><span></span><code><span class="c1">//Xhr</span>
|
<span class="kd">const</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'text=%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5&lang=zh&spk_id=0'</span><span class="p">;</span>
|
|
<span class="kd">const</span><span class="w"> </span><span class="nx">xhr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">XMLHttpRequest</span><span class="p">();</span>
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">withCredentials</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
|
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">'readystatechange'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">DONE</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">responseText</span><span class="p">);</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="p">});</span>
|
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">open</span><span class="p">(</span><span class="s1">'POST'</span><span class="p">,</span><span class="w"> </span><span class="s1">'http://ikuai.m-iot.tech:58150/tts'</span><span class="p">);</span>
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">setRequestHeader</span><span class="p">(</span><span class="s1">'content-type'</span><span class="p">,</span><span class="w"> </span><span class="s1">'application/x-www-form-urlencoded'</span><span class="p">);</span>
|
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
|
|
<span class="c1">//Axios</span>
|
<span class="k">import</span><span class="w"> </span><span class="nx">axios</span><span class="w"> </span><span class="kr">from</span><span class="w"> </span><span class="s1">'axios'</span><span class="p">;</span>
|
|
<span class="kd">const</span><span class="w"> </span><span class="nx">encodedParams</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">URLSearchParams</span><span class="p">();</span>
|
<span class="nx">encodedParams</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'text'</span><span class="p">,</span><span class="w"> </span><span class="s1">'请张三到一室做检查'</span><span class="p">);</span>
|
<span class="nx">encodedParams</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'lang'</span><span class="p">,</span><span class="w"> </span><span class="s1">'zh'</span><span class="p">);</span>
|
<span class="nx">encodedParams</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">'spk_id'</span><span class="p">,</span><span class="w"> </span><span class="s1">'0'</span><span class="p">);</span>
|
|
<span class="kd">const</span><span class="w"> </span><span class="nx">options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">method</span><span class="o">:</span><span class="w"> </span><span class="s1">'POST'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">url</span><span class="o">:</span><span class="w"> </span><span class="s1">'http://ikuai.m-iot.tech:58150/tts'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">headers</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="s1">'content-type'</span><span class="o">:</span><span class="w"> </span><span class="s1">'application/x-www-form-urlencoded'</span><span class="p">},</span>
|
<span class="w"> </span><span class="nx">data</span><span class="o">:</span><span class="w"> </span><span class="nx">encodedParams</span><span class="p">,</span>
|
<span class="p">};</span>
|
|
<span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">axios</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
|
<span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span>
|
<span class="p">}</span>
|
<span class="c1">//Fetch</span>
|
<span class="kd">const</span><span class="w"> </span><span class="nx">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'http://ikuai.m-iot.tech:58150/tts'</span><span class="p">;</span>
|
<span class="kd">const</span><span class="w"> </span><span class="nx">options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">method</span><span class="o">:</span><span class="w"> </span><span class="s1">'POST'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">headers</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="s1">'content-type'</span><span class="o">:</span><span class="w"> </span><span class="s1">'application/x-www-form-urlencoded'</span><span class="p">},</span>
|
<span class="w"> </span><span class="nx">body</span><span class="o">:</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">URLSearchParams</span><span class="p">({</span><span class="nx">text</span><span class="o">:</span><span class="w"> </span><span class="s1">'请张三到一室做检查'</span><span class="p">,</span><span class="w"> </span><span class="nx">lang</span><span class="o">:</span><span class="w"> </span><span class="s1">'zh'</span><span class="p">,</span><span class="w"> </span><span class="nx">spk_id</span><span class="o">:</span><span class="w"> </span><span class="s1">'0'</span><span class="p">})</span>
|
<span class="p">};</span>
|
|
<span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">fetch</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span><span class="w"> </span><span class="nx">options</span><span class="p">);</span>
|
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">();</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
|
<span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span>
|
<span class="p">}</span>
|
<span class="c1">//JQuery</span>
|
<span class="kd">const</span><span class="w"> </span><span class="nx">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="k">async</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">crossDomain</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">url</span><span class="o">:</span><span class="w"> </span><span class="s1">'http://ikuai.m-iot.tech:58150/tts'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">method</span><span class="o">:</span><span class="w"> </span><span class="s1">'POST'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">headers</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="s1">'content-type'</span><span class="o">:</span><span class="w"> </span><span class="s1">'application/x-www-form-urlencoded'</span>
|
<span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="nx">data</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">text</span><span class="o">:</span><span class="w"> </span><span class="s1">'请张三到一室做检查'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">lang</span><span class="o">:</span><span class="w"> </span><span class="s1">'zh'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">spk_id</span><span class="o">:</span><span class="w"> </span><span class="s1">'0'</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="p">};</span>
|
|
<span class="nx">$</span><span class="p">.</span><span class="nx">ajax</span><span class="p">(</span><span class="nx">settings</span><span class="p">).</span><span class="nx">done</span><span class="p">(</span><span class="kd">function</span><span class="w"> </span><span class="p">(</span><span class="nx">response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">response</span><span class="p">);</span>
|
<span class="p">});</span>
|
</code></pre></div>
|
|
<h5 id="c">C# 示例<a class="headerlink" href="#c" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="c1">//httpclient</span>
|
<span class="k">using</span><span class="w"> </span><span class="nn">System.Net.Http.Headers</span><span class="p">;</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HttpClient</span><span class="p">();</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HttpRequestMessage</span>
|
<span class="p">{</span>
|
<span class="w"> </span><span class="n">Method</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Post</span><span class="p">,</span>
|
<span class="w"> </span><span class="n">RequestUri</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Uri</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/tts"</span><span class="p">),</span>
|
<span class="w"> </span><span class="n">Content</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FormUrlEncodedContent</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Dictionary</span><span class="o"><</span><span class="kt">string</span><span class="p">,</span><span class="w"> </span><span class="kt">string</span><span class="o">></span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s">"text"</span><span class="p">,</span><span class="w"> </span><span class="s">"请张三到一室做检查"</span><span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s">"lang"</span><span class="p">,</span><span class="w"> </span><span class="s">"zh"</span><span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="s">"spk_id"</span><span class="p">,</span><span class="w"> </span><span class="s">"0"</span><span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="p">}),</span>
|
<span class="p">};</span>
|
<span class="k">using</span><span class="w"> </span><span class="p">(</span><span class="kt">var</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">))</span>
|
<span class="p">{</span>
|
<span class="w"> </span><span class="n">response</span><span class="p">.</span><span class="n">EnsureSuccessStatusCode</span><span class="p">();</span>
|
<span class="w"> </span><span class="kt">var</span><span class="w"> </span><span class="n">body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">();</span>
|
<span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">body</span><span class="p">);</span>
|
<span class="p">}</span>
|
<span class="c1">//restsharp</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RestClient</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/tts"</span><span class="p">);</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RestRequest</span><span class="p">(</span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="n">Method</span><span class="p">.</span><span class="n">Post</span><span class="p">);</span>
|
<span class="n">request</span><span class="p">.</span><span class="n">AddHeader</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"application/x-www-form-urlencoded"</span><span class="p">);</span>
|
<span class="n">request</span><span class="p">.</span><span class="n">AddParameter</span><span class="p">(</span><span class="s">"application/x-www-form-urlencoded"</span><span class="p">,</span><span class="w"> </span><span class="s">"text=%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5&lang=zh&spk_id=0"</span><span class="p">,</span><span class="w"> </span><span class="n">ParameterType</span><span class="p">.</span><span class="n">RequestBody</span><span class="p">);</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">Execute</span><span class="p">(</span><span class="n">request</span><span class="p">);</span>
|
</code></pre></div>
|
|
<h4 id="go">go 示例<a class="headerlink" href="#go" title="Permanent link">¶</a></h4>
|
<div class="codehilite"><pre><span></span><code><span class="kn">package</span><span class="w"> </span><span class="nx">main</span>
|
|
<span class="kn">import</span><span class="w"> </span><span class="p">(</span>
|
<span class="w"> </span><span class="s">"fmt"</span>
|
<span class="w"> </span><span class="s">"strings"</span>
|
<span class="w"> </span><span class="s">"net/http"</span>
|
<span class="w"> </span><span class="s">"io"</span>
|
<span class="p">)</span>
|
|
<span class="kd">func</span><span class="w"> </span><span class="nx">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
|
<span class="w"> </span><span class="nx">url</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="s">"http://ikuai.m-iot.tech:58150/tts"</span>
|
|
<span class="w"> </span><span class="nx">payload</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">strings</span><span class="p">.</span><span class="nx">NewReader</span><span class="p">(</span><span class="s">"text=%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5&lang=zh&spk_id=0"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="nx">req</span><span class="p">,</span><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">NewRequest</span><span class="p">(</span><span class="s">"POST"</span><span class="p">,</span><span class="w"> </span><span class="nx">url</span><span class="p">,</span><span class="w"> </span><span class="nx">payload</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="nx">req</span><span class="p">.</span><span class="nx">Header</span><span class="p">.</span><span class="nx">Add</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"application/x-www-form-urlencoded"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="nx">res</span><span class="p">,</span><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">DefaultClient</span><span class="p">.</span><span class="nx">Do</span><span class="p">(</span><span class="nx">req</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">defer</span><span class="w"> </span><span class="nx">res</span><span class="p">.</span><span class="nx">Body</span><span class="p">.</span><span class="nx">Close</span><span class="p">()</span>
|
<span class="w"> </span><span class="nx">body</span><span class="p">,</span><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">io</span><span class="p">.</span><span class="nx">ReadAll</span><span class="p">(</span><span class="nx">res</span><span class="p">.</span><span class="nx">Body</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">)</span>
|
<span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">body</span><span class="p">))</span>
|
|
<span class="p">}</span>
|
</code></pre></div>
|
|
<h5 id="_11">返回结果<a class="headerlink" href="#_11" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code>Preparing request to http://ikuai.m-iot.tech:58150/tts
|
Current time is 2025-09-21T07:49:17.236Z
|
POST http://ikuai.m-iot.tech:58150/tts
|
Accept: application/json, text/plain, */*
|
Content-Type: application/x-www-form-urlencoded
|
User-Agent: bruno-runtime/2.3.0
|
text=%E8%AF%B7%E5%BC%A0%E4%B8%89%E5%88%B0%E4%B8%80%E5%AE%A4%E5%81%9A%E6%A3%80%E6%9F%A5&lang=zh&spk_id=0
|
SSL validation: enabled
|
HTTP/1.1 200 OK
|
date: Sun, 21 Sep 2025 07:49:18 GMT
|
server: uvicorn
|
content-type: audio/wav
|
content-disposition: attachment; filename="7b41c15b-e0a4-4ba5-aeb1-ceff058c90e6.wav"
|
content-length: 89444
|
last-modified: Sun, 21 Sep 2025 07:49:20 GMT
|
etag: d85eaa2cadf7182ac9b54763e6a97e2c
|
request-duration: 2224
|
Request completed in 2224 ms
|
</code></pre></div>
|
|
<p><img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921160616.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921160647.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921160716.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921160755.png" /></p>
|
<h3 id="2-asr">2. 语音识别(ASR)服务<a class="headerlink" href="#2-asr" title="Permanent link">¶</a></h3>
|
<h4 id="_12">上传文件调用示例<a class="headerlink" href="#_12" title="Permanent link">¶</a></h4>
|
<h5 id="curl_1">curl示例<a class="headerlink" href="#curl_1" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code>curl --request POST \
|
--url http://ikuai.m-iot.tech:58150/asr \
|
--header 'content-type: multipart/form-data' \
|
--form 'file=@C:\Users\trphoenix\Documents\录音\录音 (6).m4a' \
|
--form lang=zh \
|
--form format=wav \
|
--form sample_rate=16000
|
</code></pre></div>
|
|
<p>直接上传文件,文件格式支持wav、m4a、mp3等常见音频格式,服务端会自动转换为wav格式进行识别。</p>
|
<div class="codehilite"><pre><span></span><code>curl --request POST \
|
--url http://ikuai.m-iot.tech:58150/asr \
|
--header 'content-type: multipart/form-data' \
|
--form 'file=@C:\Users\trphoenix\Documents\录音\录音 (6).m4a' \
|
--form lang=zh
|
</code></pre></div>
|
|
<p>传入参数可以只有file与lang这两个参数,其它参数,可以忽略,如下图所示
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921162309.png" /></p>
|
<h5 id="http">HTTP 示例说明<a class="headerlink" href="#http" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="nf">POST</span> <span class="nn">/asr</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
|
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">multipart/form-data; boundary=---011000010111000001101001</span>
|
<span class="na">Host</span><span class="o">:</span> <span class="l">ikuai.m-iot.tech:58150</span>
|
<span class="na">Content-Length</span><span class="o">:</span> <span class="l">239</span>
|
|
-----011000010111000001101001
|
Content-Disposition: form-data; name="file"
|
|
C:\Users\trphoenix\Documents\录音\录音 (6).m4a
|
-----011000010111000001101001
|
Content-Disposition: form-data; name="lang"
|
|
zh
|
-----011000010111000001101001--
|
</code></pre></div>
|
|
<h5 id="java_1">java 示例<a class="headerlink" href="#java_1" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="c1">// asynchttp</span>
|
<span class="n">AsyncHttpClient</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">DefaultAsyncHttpClient</span><span class="p">();</span>
|
<span class="n">client</span><span class="p">.</span><span class="na">prepare</span><span class="p">(</span><span class="s">"POST"</span><span class="p">,</span><span class="w"> </span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">setHeader</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">setBody</span><span class="p">(</span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">execute</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">toCompletableFuture</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">thenAccept</span><span class="p">(</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">::</span><span class="n">println</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">join</span><span class="p">();</span>
|
|
<span class="n">client</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
|
<span class="c1">// nethttp</span>
|
|
<span class="n">HttpRequest</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HttpRequest</span><span class="p">.</span><span class="na">newBuilder</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">uri</span><span class="p">(</span><span class="n">URI</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">))</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">header</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">method</span><span class="p">(</span><span class="s">"POST"</span><span class="p">,</span><span class="w"> </span><span class="n">HttpRequest</span><span class="p">.</span><span class="na">BodyPublishers</span><span class="p">.</span><span class="na">ofString</span><span class="p">(</span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">))</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
|
<span class="n">HttpResponse</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HttpClient</span><span class="p">.</span><span class="na">newHttpClient</span><span class="p">().</span><span class="na">send</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">HttpResponse</span><span class="p">.</span><span class="na">BodyHandlers</span><span class="p">.</span><span class="na">ofString</span><span class="p">());</span>
|
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="na">body</span><span class="p">());</span>
|
<span class="c1">// okhttp</span>
|
<span class="n">OkHttpClient</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">OkHttpClient</span><span class="p">();</span>
|
|
<span class="n">MediaType</span><span class="w"> </span><span class="n">mediaType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MediaType</span><span class="p">.</span><span class="na">parse</span><span class="p">(</span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">);</span>
|
<span class="n">RequestBody</span><span class="w"> </span><span class="n">body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">RequestBody</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">mediaType</span><span class="p">,</span><span class="w"> </span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">);</span>
|
<span class="n">Request</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Request</span><span class="p">.</span><span class="na">Builder</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">url</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">post</span><span class="p">(</span><span class="n">body</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">addHeader</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
|
|
<span class="n">Response</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="na">newCall</span><span class="p">(</span><span class="n">request</span><span class="p">).</span><span class="na">execute</span><span class="p">();</span>
|
<span class="c1">// unirest</span>
|
<span class="n">HttpResponse</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Unirest</span><span class="p">.</span><span class="na">post</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">header</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">body</span><span class="p">(</span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">asString</span><span class="p">();</span>
|
</code></pre></div>
|
|
<h5 id="javascript_1">javascript 示例<a class="headerlink" href="#javascript_1" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="c1">//xhr</span>
|
<span class="kd">const</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">FormData</span><span class="p">();</span>
|
<span class="nx">data</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'file'</span><span class="p">,</span><span class="w"> </span><span class="s1">'C:\Users\trphoenix\Documents\录音\录音 (6).m4a'</span><span class="p">);</span>
|
<span class="nx">data</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'lang'</span><span class="p">,</span><span class="w"> </span><span class="s1">'zh'</span><span class="p">);</span>
|
|
<span class="kd">const</span><span class="w"> </span><span class="nx">xhr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">XMLHttpRequest</span><span class="p">();</span>
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">withCredentials</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
|
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">'readystatechange'</span><span class="p">,</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">readyState</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">DONE</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">responseText</span><span class="p">);</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="p">});</span>
|
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">open</span><span class="p">(</span><span class="s1">'POST'</span><span class="p">,</span><span class="w"> </span><span class="s1">'http://ikuai.m-iot.tech:58150/asr'</span><span class="p">);</span>
|
|
<span class="nx">xhr</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
|
<span class="c1">// Axios</span>
|
<span class="k">import</span><span class="w"> </span><span class="nx">axios</span><span class="w"> </span><span class="kr">from</span><span class="w"> </span><span class="s1">'axios'</span><span class="p">;</span>
|
|
<span class="kd">const</span><span class="w"> </span><span class="nx">form</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">FormData</span><span class="p">();</span>
|
<span class="nx">form</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'file'</span><span class="p">,</span><span class="w"> </span><span class="s1">'C:\Users\trphoenix\Documents\录音\录音 (6).m4a'</span><span class="p">);</span>
|
<span class="nx">form</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'lang'</span><span class="p">,</span><span class="w"> </span><span class="s1">'zh'</span><span class="p">);</span>
|
|
<span class="kd">const</span><span class="w"> </span><span class="nx">options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">method</span><span class="o">:</span><span class="w"> </span><span class="s1">'POST'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">url</span><span class="o">:</span><span class="w"> </span><span class="s1">'http://ikuai.m-iot.tech:58150/asr'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">headers</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="s1">'content-type'</span><span class="o">:</span><span class="w"> </span><span class="s1">'multipart/form-data; boundary=---011000010111000001101001'</span><span class="p">},</span>
|
<span class="w"> </span><span class="nx">data</span><span class="o">:</span><span class="w"> </span><span class="s1">'[form]'</span>
|
<span class="p">};</span>
|
|
<span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">axios</span><span class="p">.</span><span class="nx">request</span><span class="p">(</span><span class="nx">options</span><span class="p">);</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
|
<span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span>
|
<span class="p">}</span>
|
<span class="c1">// fetch</span>
|
<span class="kd">const</span><span class="w"> </span><span class="nx">url</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'http://ikuai.m-iot.tech:58150/asr'</span><span class="p">;</span>
|
<span class="kd">const</span><span class="w"> </span><span class="nx">form</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">FormData</span><span class="p">();</span>
|
<span class="nx">form</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'file'</span><span class="p">,</span><span class="w"> </span><span class="s1">'C:\Users\trphoenix\Documents\录音\录音 (6).m4a'</span><span class="p">);</span>
|
<span class="nx">form</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'lang'</span><span class="p">,</span><span class="w"> </span><span class="s1">'zh'</span><span class="p">);</span>
|
|
<span class="kd">const</span><span class="w"> </span><span class="nx">options</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="nx">method</span><span class="o">:</span><span class="w"> </span><span class="s1">'POST'</span><span class="p">};</span>
|
|
<span class="nx">options</span><span class="p">.</span><span class="nx">body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">form</span><span class="p">;</span>
|
|
<span class="k">try</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">fetch</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span><span class="w"> </span><span class="nx">options</span><span class="p">);</span>
|
<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">response</span><span class="p">.</span><span class="nx">json</span><span class="p">();</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
|
<span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span>
|
<span class="p">}</span>
|
<span class="c1">//jquery</span>
|
<span class="kd">const</span><span class="w"> </span><span class="nx">form</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">FormData</span><span class="p">();</span>
|
<span class="nx">form</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'file'</span><span class="p">,</span><span class="w"> </span><span class="s1">'C:\Users\trphoenix\Documents\录音\录音 (6).m4a'</span><span class="p">);</span>
|
<span class="nx">form</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="s1">'lang'</span><span class="p">,</span><span class="w"> </span><span class="s1">'zh'</span><span class="p">);</span>
|
|
<span class="kd">const</span><span class="w"> </span><span class="nx">settings</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="k">async</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">crossDomain</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">url</span><span class="o">:</span><span class="w"> </span><span class="s1">'http://ikuai.m-iot.tech:58150/asr'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">method</span><span class="o">:</span><span class="w"> </span><span class="s1">'POST'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">headers</span><span class="o">:</span><span class="w"> </span><span class="p">{},</span>
|
<span class="w"> </span><span class="nx">processData</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">contentType</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">mimeType</span><span class="o">:</span><span class="w"> </span><span class="s1">'multipart/form-data'</span><span class="p">,</span>
|
<span class="w"> </span><span class="nx">data</span><span class="o">:</span><span class="w"> </span><span class="nx">form</span>
|
<span class="p">};</span>
|
|
<span class="nx">$</span><span class="p">.</span><span class="nx">ajax</span><span class="p">(</span><span class="nx">settings</span><span class="p">).</span><span class="nx">done</span><span class="p">(</span><span class="kd">function</span><span class="w"> </span><span class="p">(</span><span class="nx">response</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">response</span><span class="p">);</span>
|
<span class="p">});</span>
|
</code></pre></div>
|
|
<h5 id="c_1">C# 示例<a class="headerlink" href="#c_1" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="c1">//httpclient</span>
|
<span class="k">using</span><span class="w"> </span><span class="nn">System.Net.Http.Headers</span><span class="p">;</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HttpClient</span><span class="p">();</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">HttpRequestMessage</span>
|
<span class="p">{</span>
|
<span class="w"> </span><span class="n">Method</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Post</span><span class="p">,</span>
|
<span class="w"> </span><span class="n">RequestUri</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Uri</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">),</span>
|
<span class="w"> </span><span class="n">Content</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">MultipartFormDataContent</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="nf">StringContent</span><span class="p">([</span><span class="s">"C:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a"</span><span class="p">])</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="n">Headers</span><span class="w"> </span><span class="o">=</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="n">ContentDisposition</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ContentDispositionHeaderValue</span><span class="p">(</span><span class="s">"form-data"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="n">Name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"file"</span><span class="p">,</span>
|
<span class="w"> </span><span class="n">FileName</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"C:\Users\trphoenix\Documents\录音\录音 (6).m4a"</span><span class="p">,</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="nf">StringContent</span><span class="p">(</span><span class="s">"zh"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="n">Headers</span><span class="w"> </span><span class="o">=</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="n">ContentDisposition</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ContentDispositionHeaderValue</span><span class="p">(</span><span class="s">"form-data"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="n">Name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"lang"</span><span class="p">,</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="p">},</span>
|
<span class="p">};</span>
|
<span class="k">using</span><span class="w"> </span><span class="p">(</span><span class="kt">var</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">SendAsync</span><span class="p">(</span><span class="n">request</span><span class="p">))</span>
|
<span class="p">{</span>
|
<span class="w"> </span><span class="n">response</span><span class="p">.</span><span class="n">EnsureSuccessStatusCode</span><span class="p">();</span>
|
<span class="w"> </span><span class="kt">var</span><span class="w"> </span><span class="n">body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="n">response</span><span class="p">.</span><span class="n">Content</span><span class="p">.</span><span class="n">ReadAsStringAsync</span><span class="p">();</span>
|
<span class="w"> </span><span class="n">Console</span><span class="p">.</span><span class="n">WriteLine</span><span class="p">(</span><span class="n">body</span><span class="p">);</span>
|
<span class="p">}</span>
|
<span class="c1">//Restsharp </span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RestClient</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">);</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RestRequest</span><span class="p">(</span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="n">Method</span><span class="p">.</span><span class="n">Post</span><span class="p">);</span>
|
<span class="n">request</span><span class="p">.</span><span class="n">AddHeader</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">);</span>
|
<span class="n">request</span><span class="p">.</span><span class="n">AddParameter</span><span class="p">(</span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">,</span><span class="w"> </span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">,</span><span class="w"> </span><span class="n">ParameterType</span><span class="p">.</span><span class="n">RequestBody</span><span class="p">);</span>
|
<span class="kt">var</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="n">Execute</span><span class="p">(</span><span class="n">request</span><span class="p">);</span><span class="w"> </span>
|
</code></pre></div>
|
|
<h5 id="go_1">go 示例<a class="headerlink" href="#go_1" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="kn">package</span><span class="w"> </span><span class="nx">main</span>
|
|
<span class="kn">import</span><span class="w"> </span><span class="p">(</span>
|
<span class="w"> </span><span class="s">"fmt"</span>
|
<span class="w"> </span><span class="s">"strings"</span>
|
<span class="w"> </span><span class="s">"net/http"</span>
|
<span class="w"> </span><span class="s">"io"</span>
|
<span class="p">)</span>
|
|
<span class="kd">func</span><span class="w"> </span><span class="nx">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
|
|
<span class="w"> </span><span class="nx">url</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span>
|
|
<span class="w"> </span><span class="nx">payload</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">strings</span><span class="p">.</span><span class="nx">NewReader</span><span class="p">(</span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="nx">req</span><span class="p">,</span><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">NewRequest</span><span class="p">(</span><span class="s">"POST"</span><span class="p">,</span><span class="w"> </span><span class="nx">url</span><span class="p">,</span><span class="w"> </span><span class="nx">payload</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="nx">req</span><span class="p">.</span><span class="nx">Header</span><span class="p">.</span><span class="nx">Add</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="nx">res</span><span class="p">,</span><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">DefaultClient</span><span class="p">.</span><span class="nx">Do</span><span class="p">(</span><span class="nx">req</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="k">defer</span><span class="w"> </span><span class="nx">res</span><span class="p">.</span><span class="nx">Body</span><span class="p">.</span><span class="nx">Close</span><span class="p">()</span>
|
<span class="w"> </span><span class="nx">body</span><span class="p">,</span><span class="w"> </span><span class="nx">_</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">io</span><span class="p">.</span><span class="nx">ReadAll</span><span class="p">(</span><span class="nx">res</span><span class="p">.</span><span class="nx">Body</span><span class="p">)</span>
|
|
<span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="nx">res</span><span class="p">)</span>
|
<span class="w"> </span><span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="nb">string</span><span class="p">(</span><span class="nx">body</span><span class="p">))</span>
|
|
<span class="p">}</span>
|
</code></pre></div>
|
|
<h5 id="java_2">java 示例<a class="headerlink" href="#java_2" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="c1">// asynchttp</span>
|
<span class="n">AsyncHttpClient</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">DefaultAsyncHttpClient</span><span class="p">();</span>
|
<span class="n">client</span><span class="p">.</span><span class="na">prepare</span><span class="p">(</span><span class="s">"POST"</span><span class="p">,</span><span class="w"> </span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">setHeader</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">setBody</span><span class="p">(</span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">execute</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">toCompletableFuture</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">thenAccept</span><span class="p">(</span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">::</span><span class="n">println</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">join</span><span class="p">();</span>
|
|
<span class="n">client</span><span class="p">.</span><span class="na">close</span><span class="p">();</span>
|
|
<span class="c1">// nethttp</span>
|
<span class="n">HttpRequest</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HttpRequest</span><span class="p">.</span><span class="na">newBuilder</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">uri</span><span class="p">(</span><span class="n">URI</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">))</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">header</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">method</span><span class="p">(</span><span class="s">"POST"</span><span class="p">,</span><span class="w"> </span><span class="n">HttpRequest</span><span class="p">.</span><span class="na">BodyPublishers</span><span class="p">.</span><span class="na">ofString</span><span class="p">(</span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">))</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
|
<span class="n">HttpResponse</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HttpClient</span><span class="p">.</span><span class="na">newHttpClient</span><span class="p">().</span><span class="na">send</span><span class="p">(</span><span class="n">request</span><span class="p">,</span><span class="w"> </span><span class="n">HttpResponse</span><span class="p">.</span><span class="na">BodyHandlers</span><span class="p">.</span><span class="na">ofString</span><span class="p">());</span>
|
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">response</span><span class="p">.</span><span class="na">body</span><span class="p">());</span>
|
<span class="c1">// okhttp</span>
|
<span class="n">OkHttpClient</span><span class="w"> </span><span class="n">client</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">OkHttpClient</span><span class="p">();</span>
|
|
<span class="n">MediaType</span><span class="w"> </span><span class="n">mediaType</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MediaType</span><span class="p">.</span><span class="na">parse</span><span class="p">(</span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">);</span>
|
<span class="n">RequestBody</span><span class="w"> </span><span class="n">body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">RequestBody</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">mediaType</span><span class="p">,</span><span class="w"> </span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">);</span>
|
<span class="n">Request</span><span class="w"> </span><span class="n">request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Request</span><span class="p">.</span><span class="na">Builder</span><span class="p">()</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">url</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">post</span><span class="p">(</span><span class="n">body</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">addHeader</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">build</span><span class="p">();</span>
|
|
<span class="n">Response</span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">client</span><span class="p">.</span><span class="na">newCall</span><span class="p">(</span><span class="n">request</span><span class="p">).</span><span class="na">execute</span><span class="p">();</span>
|
|
<span class="c1">// unirest</span>
|
<span class="n">HttpResponse</span><span class="o"><</span><span class="n">String</span><span class="o">></span><span class="w"> </span><span class="n">response</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Unirest</span><span class="p">.</span><span class="na">post</span><span class="p">(</span><span class="s">"http://ikuai.m-iot.tech:58150/asr"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">header</span><span class="p">(</span><span class="s">"content-type"</span><span class="p">,</span><span class="w"> </span><span class="s">"multipart/form-data; boundary=---011000010111000001101001"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">body</span><span class="p">(</span><span class="s">"-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\nC:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\nzh\r\n-----011000010111000001101001--\r\n\r\n"</span><span class="p">)</span>
|
<span class="w"> </span><span class="p">.</span><span class="na">asString</span><span class="p">();</span>
|
</code></pre></div>
|
|
<h5 id="_13">返回结果<a class="headerlink" href="#_13" title="Permanent link">¶</a></h5>
|
<div class="codehilite"><pre><span></span><code><span class="p">{</span>
|
<span class="w"> </span><span class="nt">"result"</span><span class="p">:</span><span class="w"> </span><span class="s2">"喂语音测试语音测试录音测试录音测试"</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"file_size"</span><span class="p">:</span><span class="w"> </span><span class="mi">185334</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"wav_info"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nt">"n_channels"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"sample_width"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"framerate"</span><span class="p">:</span><span class="w"> </span><span class="mi">16000</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"n_frames"</span><span class="p">:</span><span class="w"> </span><span class="mi">115029</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"duration"</span><span class="p">:</span><span class="w"> </span><span class="mf">7.1893125</span>
|
<span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="nt">"ffmpeg_log"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span>
|
<span class="p">}</span>
|
</code></pre></div>
|
|
<p><img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921164758.png" /></p>
|
<p><strong><em>body</em></strong> </p>
|
<div class="codehilite"><pre><span></span><code><span class="p">{</span>
|
<span class="w"> </span><span class="nt">"_overheadLength"</span><span class="p">:</span><span class="w"> </span><span class="mi">252</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_valueLength"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_valuesToMeasure"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nt">"fd"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"path"</span><span class="p">:</span><span class="w"> </span><span class="s2">"C:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a"</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"flags"</span><span class="p">:</span><span class="w"> </span><span class="s2">"r"</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"mode"</span><span class="p">:</span><span class="w"> </span><span class="mi">438</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"end"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"bytesRead"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_events"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
<span class="w"> </span><span class="nt">"_readableState"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nt">"highWaterMark"</span><span class="p">:</span><span class="w"> </span><span class="mi">65536</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"buffer"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
<span class="w"> </span><span class="nt">"bufferIndex"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"length"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"pipes"</span><span class="p">:</span><span class="w"> </span><span class="p">[],</span>
|
<span class="w"> </span><span class="nt">"awaitDrainWriters"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span>
|
<span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="nt">"_eventsCount"</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="w"> </span><span class="p">],</span>
|
<span class="w"> </span><span class="nt">"writable"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"readable"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"dataSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"maxDataSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">2097152</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"pauseStreams"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_released"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_streams"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
<span class="w"> </span><span class="s2">"----------------------------147555471668548578107544\r\nContent-Disposition: form-data; name=\"file\"; filename=\"录音 (6).m4a\"\r\nContent-Type: wav\r\n\r\n"</span><span class="p">,</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nt">"source"</span><span class="p">:</span><span class="w"> </span><span class="s2">"[Circular]"</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"dataSize"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"maxDataSize"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"pauseStream"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_maxDataSizeExceeded"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_released"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_bufferedEvents"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
|
<span class="w"> </span><span class="p">{</span>
|
<span class="w"> </span><span class="nt">"0"</span><span class="p">:</span><span class="w"> </span><span class="s2">"pause"</span>
|
<span class="w"> </span><span class="p">}</span>
|
<span class="w"> </span><span class="p">],</span>
|
<span class="w"> </span><span class="nt">"_events"</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
<span class="w"> </span><span class="nt">"_eventsCount"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span>
|
<span class="w"> </span><span class="p">},</span>
|
<span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="s2">"----------------------------147555471668548578107544\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\n"</span><span class="p">,</span>
|
<span class="w"> </span><span class="s2">"zh"</span><span class="p">,</span>
|
<span class="w"> </span><span class="kc">null</span>
|
<span class="w"> </span><span class="p">],</span>
|
<span class="w"> </span><span class="nt">"_currentStream"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_insideLoop"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_pendingNext"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
|
<span class="w"> </span><span class="nt">"_boundary"</span><span class="p">:</span><span class="w"> </span><span class="s2">"--------------------------147555471668548578107544"</span>
|
<span class="p">}</span>
|
</code></pre></div>
|
|
<p><img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921164909.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921164934.png" /></p>
|
<p>***Network Logs ***</p>
|
<div class="codehilite"><pre><span></span><code>Preparing request to http://ikuai.m-iot.tech:58150/asr
|
Current time is 2025-09-21T08:22:20.590Z
|
POST http://ikuai.m-iot.tech:58150/asr
|
Accept: application/json, text/plain, */*
|
Content-Type: multipart/form-data; boundary=--------------------------147555471668548578107544
|
User-Agent: bruno-runtime/2.3.0
|
{
|
"_overheadLength": 252,
|
"_valueLength": 2,
|
"_valuesToMeasure": [
|
{
|
"fd": null,
|
"path": "C:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a",
|
"flags": "r",
|
"mode": 438,
|
"end": null,
|
"bytesRead": 0,
|
"_events": {},
|
"_readableState": {
|
"highWaterMark": 65536,
|
"buffer": [],
|
"bufferIndex": 0,
|
"length": 0,
|
"pipes": [],
|
"awaitDrainWriters": null
|
},
|
"_eventsCount": 3
|
}
|
],
|
"writable": false,
|
"readable": true,
|
"dataSize": 0,
|
"maxDataSize": 2097152,
|
"pauseStreams": true,
|
"_released": false,
|
"_streams": [
|
"----------------------------147555471668548578107544\r\nContent-Disposition: form-data; name=\"file\"; filename=\"录音 (6).m4a\"\r\nContent-Type: wav\r\n\r\n",
|
{
|
"source": {
|
"fd": null,
|
"path": "C:\\Users\\trphoenix\\Documents\\录音\\录音 (6).m4a",
|
"flags": "r",
|
"mode": 438,
|
"end": null,
|
"bytesRead": 0,
|
"_events": {},
|
"_readableState": {
|
"highWaterMark": 65536,
|
"buffer": [],
|
"bufferIndex": 0,
|
"length": 0,
|
"pipes": [],
|
"awaitDrainWriters": null
|
},
|
"_eventsCount": 3
|
},
|
"dataSize": 0,
|
"maxDataSize": null,
|
"pauseStream": true,
|
"_maxDataSizeExceeded": false,
|
"_released": false,
|
"_bufferedEvents": [
|
{
|
"0": "pause"
|
}
|
],
|
"_events": {},
|
"_eventsCount": 1
|
},
|
null,
|
"----------------------------147555471668548578107544\r\nContent-Disposition: form-data; name=\"lang\"\r\n\r\n",
|
"zh",
|
null
|
],
|
"_currentStream": null,
|
"_insideLoop": false,
|
"_pendingNext": false,
|
"_boundary": "--------------------------147555471668548578107544"
|
}
|
SSL validation: enabled
|
HTTP/1.1 200 OK
|
date: Sun, 21 Sep 2025 08:22:21 GMT
|
server: uvicorn
|
content-length: 201
|
content-type: application/json
|
request-duration: 6989
|
Request completed in 6989 ms
|
</code></pre></div>
|
|
<h4 id="_14">浏览器录音识别示例<a class="headerlink" href="#_14" title="Permanent link">¶</a></h4>
|
<p><img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921165339.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921165403.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921165449.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921165607.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921165632.png" />
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921165652.png" /></p>
|
<p><strong><em>说明</em></strong></p>
|
<p>paddlespeech中用的一个库有可能是单线程的,所以在高并发场景下,可能会出现响应变慢的情况,这个时候,可以考虑增加实例来解决这个问题。
|
实际使用时,如果想提高并发能力,可以尝试更改环境变量中的PYTHONUNBUFFFERED=4,或更高一个适合的数字,来提高并发能力。
|
<img alt="" src="https://qncdn.tairongkj.com/docs/images/20250921172804.png" /></p>
|
<p><strong><em>《完》</em></strong></p>
|
|
</div>
|
</div><footer>
|
<div class="rst-footer-buttons" role="navigation" aria-label="Footer Navigation">
|
<a href="../windows%E4%B8%8D%E8%83%BD%E8%AE%BF%E9%97%AEHA%E7%9A%84%E5%85%B1%E4%BA%AB%E9%85%8D%E7%BD%AE%E7%9B%AE%E5%BD%95%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/" class="btn btn-neutral float-left" title="windows不能访问HA的共享配置目录的解决办法"><span class="icon icon-circle-arrow-left"></span> Previous</a>
|
<a href="../../../node-reds/%E5%AE%89%E8%A3%85node-red%E8%AE%B0%E5%BD%95/" class="btn btn-neutral float-right" title="安装node-red记录">Next <span class="icon icon-circle-arrow-right"></span></a>
|
</div>
|
|
<hr/>
|
|
<div role="contentinfo">
|
<!-- Copyright etc -->
|
</div>
|
|
Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
</footer>
|
|
</div>
|
</div>
|
|
</section>
|
|
</div>
|
|
<div class="rst-versions" role="note" aria-label="Versions">
|
<span class="rst-current-version" data-toggle="rst-current-version">
|
|
<span>
|
<a href="http://dh.leon056.com:7499/r/Embedded/HomeAssistantPtoject.git" class="fa fa-code-fork" style="color: #fcfcfc"> Dh</a>
|
</span>
|
|
|
<span><a href="../windows%E4%B8%8D%E8%83%BD%E8%AE%BF%E9%97%AEHA%E7%9A%84%E5%85%B1%E4%BA%AB%E9%85%8D%E7%BD%AE%E7%9B%AE%E5%BD%95%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/" style="color: #fcfcfc">« Previous</a></span>
|
|
|
<span><a href="../../../node-reds/%E5%AE%89%E8%A3%85node-red%E8%AE%B0%E5%BD%95/" style="color: #fcfcfc">Next »</a></span>
|
|
</span>
|
</div>
|
<script src="../../../js/jquery-3.6.0.min.js"></script>
|
<script>var base_url = "../../..";</script>
|
<script src="../../../js/theme_extra.js"></script>
|
<script src="../../../js/theme.js"></script>
|
<script src="../../../search/main.js"></script>
|
<script>
|
jQuery(function () {
|
SphinxRtdTheme.Navigation.enable(true);
|
});
|
</script>
|
|
</body>
|
</html>
|