Files
Microsoft-tts/web/templates/api-doc.html

312 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>API文档 - TTS服务</title>
<link rel="stylesheet" href="{{.BasePath}}/static/css/style.css">
<link rel="icon" type="image/svg+xml" href="{{.BasePath}}/static/icons/favicon.svg">
<meta name="description" content="TTS服务API文档">
</head>
<body>
<div class="container">
<header>
<h1>TTS服务 API文档</h1>
<p>快速、高质量的文本转语音API服务</p>
<nav>
<a href="{{.BasePath}}/">主页</a>
<a href="{{.BasePath}}/api-doc" class="active">API文档</a>
</nav>
</header>
<main>
<section class="card">
<h2>API概述</h2>
<p>TTS服务API提供了简单而强大的方式将文本转换为自然语音。我们支持多种语言和声音并允许您调节语速、语调以适应不同场景需求。</p>
<p>基础URL: <code>{{.BasePath}}</code></p>
<p>所有API请求均使用HTTP协议返回标准HTTP状态码表示请求结果。</p>
</section>
<section class="card">
<h2>文本转语音 API</h2>
<h3>端点</h3>
<code>GET {{.BasePath}}/tts</code>
<h3>参数</h3>
<table>
<thead>
<tr>
<th>参数</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>t</code></td>
<td>string</td>
<td></td>
<td>要转换的文本需要进行URL编码</td>
</tr>
<tr>
<td><code>v</code></td>
<td>string</td>
<td></td>
<td>语音名称使用short_name格式默认: {{.DefaultVoice}}。可通过/voices接口获取所有可用语音</td>
</tr>
<tr>
<td><code>r</code></td>
<td>string</td>
<td></td>
<td>语速调整,范围: -100%到100%,默认: {{.DefaultRate}}。正值加快语速,负值减慢语速</td>
</tr>
<tr>
<td><code>p</code></td>
<td>string</td>
<td></td>
<td>语调调整,范围: -100%到100%,默认: {{.DefaultPitch}}。正值提高语调,负值降低语调</td>
</tr>
<tr>
<td><code>o</code></td>
<td>string</td>
<td></td>
<td>输出音频格式,默认: {{.DefaultFormat}}。详见下方支持的格式列表</td>
</tr>
<tr>
<td><code>s</code></td>
<td>string</td>
<td></td>
<td>情感风格可用值取决于所选语音的style_list属性。例如"cheerful"、"sad"等</td>
</tr>
</tbody>
</table>
<h3>示例请求</h3>
<pre><code>curl "{{.BasePath}}/tts?t=%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C&v=zh-CN-XiaoxiaoNeural&r=0%25&p=0%25"</code></pre>
<h3>另一个示例(带情感风格)</h3>
<pre><code>curl "{{.BasePath}}/tts?t=%E4%BB%8A%E5%A4%A9%E5%A4%A9%E6%B0%94%E7%9C%9F%E5%A5%BD&v=zh-CN-XiaoxiaoNeural&s=cheerful"</code></pre>
<h3>响应</h3>
<p>返回音频文件内容类型取决于请求的输出格式。正常响应状态码为200。</p>
<h3>错误响应</h3>
<p>如果请求参数有误或服务出现问题将返回对应的HTTP错误码和错误消息。</p>
<table>
<thead>
<tr>
<th>状态码</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>400</td>
<td>参数错误或缺失必要参数</td>
</tr>
<tr>
<td>404</td>
<td>请求的资源不存在</td>
</tr>
<tr>
<td>500</td>
<td>服务器内部错误</td>
</tr>
</tbody>
</table>
</section>
<section class="card">
<h2>获取可用语音 API</h2>
<h3>端点</h3>
<code>GET {{.BasePath}}/voices</code>
<h3>参数</h3>
<table>
<thead>
<tr>
<th>参数</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>locale</code></td>
<td>string</td>
<td></td>
<td>筛选特定语言的语音例如zh-CN中文、en-US英文</td>
</tr>
<tr>
<td><code>gender</code></td>
<td>string</td>
<td></td>
<td>筛选特定性别的语音可选值Male男性、Female女性</td>
</tr>
</tbody>
</table>
<h3>示例请求</h3>
<pre><code>curl "{{.BasePath}}/voices?locale=zh-CN&gender=Female"</code></pre>
<h3>响应</h3>
<p>返回JSON格式的可用语音列表</p>
<pre><code>[
{
"name": "Microsoft Server Speech Text to Speech Voice (zh-CN, XiaoxiaoNeural)",
"display_name": "Xiaoxiao",
"local_name": "晓晓",
"short_name": "zh-CN-XiaoxiaoNeural",
"gender": "Female",
"locale": "zh-CN",
"locale_name": "中文(中国)",
"style_list": ["cheerful", "sad", "angry", "fearful", "disgruntled"]
},
...
]</code></pre>
<p>响应字段说明:</p>
<ul>
<li><strong>name</strong>:语音的完整名称</li>
<li><strong>display_name</strong>:显示用名称(拉丁字符)</li>
<li><strong>local_name</strong>:本地化名称</li>
<li><strong>short_name</strong>简短名称用于API调用的v参数</li>
<li><strong>gender</strong>性别Male或Female</li>
<li><strong>locale</strong>:语言代码</li>
<li><strong>locale_name</strong>:语言本地化名称</li>
<li><strong>style_list</strong>:支持的情感风格列表(如有)</li>
</ul>
</section>
<section class="card">
<h2>兼容OpenAI接口 API</h2>
<h3>语音合成</h3>
<code>POST {{.BasePath}}/v1/audio/speech</code>
<h3>请求体 (JSON)</h3>
<table>
<thead>
<tr>
<th>参数</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>model</code></td>
<td>string</td>
<td></td>
<td>当前仅支持值: "tts-1"</td>
</tr>
<tr>
<td><code>input</code></td>
<td>string</td>
<td></td>
<td>要转换的文本内容</td>
</tr>
<tr>
<td><code>voice</code></td>
<td>string</td>
<td></td>
<td>声音名称使用Microsoft语音格式例如ja-JP-KeitaNeural、zh-CN-XiaoxiaoNeural</td>
</tr>
<tr>
<td><code>speed</code></td>
<td>number</td>
<td></td>
<td>语速调整,范围: 0.5到2.0,默认: 1.0</td>
</tr>
</tbody>
</table>
<h3>示例请求</h3>
<pre><code>curl -X POST "{{.BasePath}}/v1/audio/speech" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "你好,世界!",
"voice": "zh-CN-XiaoxiaoNeural"
}'</code></pre>
<h3>另一个示例(带速度调整)</h3>
<pre><code>curl -X POST "{{.BasePath}}/v1/audio/speech" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "こんにちは、世界!",
"voice": "ja-JP-NanamiNeural",
"speed": 1.2
}'</code></pre>
<h3>响应</h3>
<p>返回音频文件内容类型取决于请求的输出格式。正常响应状态码为200。</p>
<h3>错误响应</h3>
<p>如果请求有误将返回JSON格式的错误信息</p>
<pre><code>{
"error": {
"message": "错误信息描述",
"type": "错误类型",
"code": "错误代码"
}
}</code></pre>
</section>
<section class="card">
<h2>支持的输出格式</h2>
<table>
<thead>
<tr>
<th>格式名称</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>audio-16khz-32kbitrate-mono-mp3</code></td>
<td>MP3格式16kHz, 32kbps</td>
</tr>
<tr>
<td><code>audio-16khz-64kbitrate-mono-mp3</code></td>
<td>MP3格式16kHz, 64kbps</td>
</tr>
<tr>
<td><code>audio-16khz-128kbitrate-mono-mp3</code></td>
<td>MP3格式16kHz, 128kbps</td>
</tr>
<tr>
<td><code>audio-24khz-48kbitrate-mono-mp3</code></td>
<td>MP3格式24kHz, 48kbps</td>
</tr>
<tr>
<td><code>audio-24khz-96kbitrate-mono-mp3</code></td>
<td>MP3格式24kHz, 96kbps</td>
</tr>
<tr>
<td><code>audio-24khz-160kbitrate-mono-mp3</code></td>
<td>MP3格式24kHz, 160kbps</td>
</tr>
<tr>
<td><code>riff-16khz-16bit-mono-pcm</code></td>
<td>WAV格式16kHz</td>
</tr>
<tr>
<td><code>riff-24khz-16bit-mono-pcm</code></td>
<td>WAV格式24kHz</td>
</tr>
</tbody>
</table>
</section>
</main>
<footer>
<p>© 2025 TTS服务 | <a href="{{.BasePath}}/">返回主页</a></p>
</footer>
</div>
</body>
</html>