254 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
{% 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 %}
 |