superlishunqin 28b23647e6 test-api
2025-09-15 00:34:51 +08:00

254 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.

{% extends "base.html" %}
{% block title %}CosyVoice API 测试 - 儿童语言学习系统{% endblock %}
{% block content %}
<div class="container py-4">
<!-- 页面标题 -->
<div class="row mb-4">
<div class="col-12">
<div class="d-flex align-items-center">
<a href="{{ url_for('main.dashboard') }}" class="btn btn-outline-secondary me-3">
<i class="fas fa-arrow-left me-2"></i>返回主页
</a>
<div>
<h2 class="fw-bold mb-1">
<i class="fas fa-microphone-alt text-primary me-2"></i>
CosyVoice API 测试
</h2>
<p class="text-muted mb-0">测试语音合成的各种功能</p>
</div>
</div>
</div>
</div>
<!-- 连接状态检测 -->
<div class="row mb-4">
<div class="col-12">
<div class="card border-0 shadow-sm">
<div class="card-body">
<h5 class="card-title">
<i class="fas fa-plug me-2"></i>服务连接状态
</h5>
<div class="d-flex align-items-center">
<button id="test-connection-btn" class="btn btn-primary me-3">
<i class="fas fa-wifi me-2"></i>测试连接
</button>
<div id="connection-status" class="flex-grow-1">
<span class="text-muted">点击测试连接按钮检查服务状态</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 功能测试区域 -->
<div class="row">
<!-- 预训练音色测试 -->
<div class="col-lg-6 mb-4">
<div class="card border-0 shadow-sm h-100">
<div class="card-body">
<h5 class="card-title text-primary">
<i class="fas fa-user-tie me-2"></i>预训练音色测试
</h5>
<form id="preset-voice-form">
<div class="mb-3">
<label class="form-label">要合成的文本</label>
<textarea class="form-control" id="preset-text" rows="3"
placeholder="输入要转换成语音的文字...">今天天气真不错,适合出门散步。</textarea>
</div>
<div class="mb-3">
<label class="form-label">选择音色</label>
<select class="form-select" id="preset-voice">
<option value="中文女">中文女</option>
<option value="中文男">中文男</option>
<option value="播报女">播报女</option>
<option value="新闻播报男">新闻播报男</option>
<option value="英文女">英文女</option>
<option value="英文男">英文男</option>
</select>
</div>
<div class="row mb-3">
<div class="col-6">
<label class="form-label">随机种子</label>
<div class="input-group">
<input type="number" class="form-control" id="preset-seed" value="42">
<button type="button" class="btn btn-outline-secondary" id="preset-random-seed">
<i class="fas fa-dice"></i>
</button>
</div>
</div>
<div class="col-6">
<label class="form-label">语速</label>
<input type="range" class="form-range" id="preset-speed" min="0.5" max="2" step="0.1" value="1">
<small class="text-muted">当前: <span id="preset-speed-value">1.0</span>x</small>
</div>
</div>
<button type="submit" class="btn btn-primary w-100">
<i class="fas fa-play me-2"></i>生成语音
</button>
</form>
<div id="preset-result" class="mt-3" style="display: none;">
<div class="alert alert-success">
<i class="fas fa-check-circle me-2"></i>生成成功!
<audio controls class="d-block mt-2 w-100">
<source id="preset-audio-source" type="audio/wav">
您的浏览器不支持音频播放。
</audio>
</div>
</div>
</div>
</div>
</div>
<!-- 自然语言控制测试 -->
<div class="col-lg-6 mb-4">
<div class="card border-0 shadow-sm h-100">
<div class="card-body">
<h5 class="card-title text-success">
<i class="fas fa-comments me-2"></i>自然语言控制测试
</h5>
<form id="natural-control-form">
<div class="mb-3">
<label class="form-label">要合成的文本</label>
<textarea class="form-control" id="natural-text" rows="3"
placeholder="输入要转换成语音的文字...">这是一段测试文本,用于验证自然语言控制功能。</textarea>
</div>
<div class="mb-3">
<label class="form-label">语音指令</label>
<textarea class="form-control" id="natural-instruction" rows="2"
placeholder="描述你想要的语音风格...">请用温柔甜美的女声朗读</textarea>
<div class="form-text">
示例:请用活泼开朗的语调、请用严肃正式的男声、请用轻柔的语气等
</div>
</div>
<div class="mb-3">
<label class="form-label">随机种子</label>
<div class="input-group">
<input type="number" class="form-control" id="natural-seed" value="42">
<button type="button" class="btn btn-outline-secondary" id="natural-random-seed">
<i class="fas fa-dice"></i>
</button>
</div>
</div>
<button type="submit" class="btn btn-success w-100">
<i class="fas fa-magic me-2"></i>生成语音
</button>
</form>
<div id="natural-result" class="mt-3" style="display: none;">
<div class="alert alert-success">
<i class="fas fa-check-circle me-2"></i>生成成功!
<audio controls class="d-block mt-2 w-100">
<source id="natural-audio-source" type="audio/wav">
您的浏览器不支持音频播放。
</audio>
</div>
</div>
</div>
</div>
</div>
<!-- 语音克隆测试 -->
<div class="col-12 mb-4">
<div class="card border-0 shadow-sm">
<div class="card-body">
<h5 class="card-title text-warning">
<i class="fas fa-clone me-2"></i>语音克隆测试
</h5>
<div class="row">
<div class="col-lg-6">
<h6 class="fw-bold mb-3">1. 上传参考音频</h6>
<form id="audio-upload-form" enctype="multipart/form-data">
<div class="mb-3">
<input type="file" class="form-control" id="reference-audio"
accept=".wav,.mp3,.m4a,.flac" required>
<div class="form-text">
支持格式WAV、MP3、M4A、FLAC建议3-10秒
</div>
</div>
<button type="submit" class="btn btn-outline-warning">
<i class="fas fa-upload me-2"></i>上传并识别
</button>
</form>
<div id="upload-result" class="mt-3" style="display: none;">
<div class="alert alert-info">
<h6><i class="fas fa-text-width me-2"></i>识别的文本内容:</h6>
<textarea class="form-control mt-2" id="recognized-text" rows="3"></textarea>
</div>
</div>
</div>
<div class="col-lg-6">
<h6 class="fw-bold mb-3">2. 生成克隆语音</h6>
<form id="voice-clone-form">
<div class="mb-3">
<label class="form-label">要合成的文本</label>
<textarea class="form-control" id="clone-text" rows="3"
placeholder="输入要用克隆声音说的话...">这是使用克隆声音合成的新内容。</textarea>
</div>
<div class="mb-3">
<label class="form-label">随机种子</label>
<div class="input-group">
<input type="number" class="form-control" id="clone-seed" value="42">
<button type="button" class="btn btn-outline-secondary" id="clone-random-seed">
<i class="fas fa-dice"></i>
</button>
</div>
</div>
<button type="submit" class="btn btn-warning w-100" disabled>
<i class="fas fa-clone me-2"></i>生成克隆语音
</button>
</form>
<div id="clone-result" class="mt-3" style="display: none;">
<div class="alert alert-success">
<i class="fas fa-check-circle me-2"></i>克隆成功!
<audio controls class="d-block mt-2 w-100">
<source id="clone-audio-source" type="audio/wav">
您的浏览器不支持音频播放。
</audio>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 测试记录区域 -->
<div class="row">
<div class="col-12">
<div class="card border-0 shadow-sm">
<div class="card-body">
<h5 class="card-title">
<i class="fas fa-history me-2"></i>测试记录
<button class="btn btn-outline-secondary btn-sm float-end" id="clear-log">
<i class="fas fa-trash me-1"></i>清空
</button>
</h5>
<div id="test-log" class="border rounded p-3" style="height: 300px; overflow-y: auto; background-color: #f8f9fa;">
<p class="text-muted">测试记录将显示在这里...</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Loading Modal -->
<div class="modal fade" id="loadingModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-body text-center py-4">
<div class="spinner-border text-primary mb-3" role="status"></div>
<h5 id="loading-message">正在处理中...</h5>
</div>
</div>
</div>
</div>
{% endblock %}
{% block scripts %}
<script src="{{ url_for('static', filename='js/voice_test.js') }}"></script>
{% endblock %}