87 lines
3.1 KiB
Python
87 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
测试简化版语速调整功能
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import json
|
|
|
|
# 设置路径
|
|
current_dir = os.path.dirname(os.path.abspath(__file__))
|
|
os.environ['PATH'] += os.pathsep + current_dir
|
|
sys.path.append(current_dir)
|
|
|
|
from core import _8_2_dub_chunks, _10_gen_audio
|
|
|
|
def main():
|
|
print("🔧 测试简化版语速调整功能...")
|
|
|
|
try:
|
|
# 步骤1: 生成简化的配音块
|
|
print("\n🎬 生成简化的配音块...")
|
|
_8_2_dub_chunks.gen_dub_chunks()
|
|
|
|
# 检查配音块配置
|
|
with open('output/dub_chunks.json', 'r', encoding='utf-8') as f:
|
|
chunks = json.load(f)
|
|
|
|
print(f"✅ 生成了 {len(chunks)} 个独立音频片段")
|
|
|
|
# 显示前几个片段的信息
|
|
for i, chunk in enumerate(chunks[:3]):
|
|
print(f"\n📋 片段 {chunk['task_id']}:")
|
|
print(f" 文本: {chunk['text'][:50]}...")
|
|
print(f" 原始时长: {chunk['duration']:.2f}s")
|
|
print(f" 目标时长: {chunk['target_duration']:.2f}s")
|
|
print(f" 切分标记: {chunk['cut_off']}")
|
|
|
|
# 步骤2: 测试音频生成
|
|
print(f"\n🚀 测试简化版音频生成...")
|
|
_10_gen_audio.gen_audio()
|
|
|
|
# 检查结果
|
|
with open('output/dub_chunks.json', 'r', encoding='utf-8') as f:
|
|
updated_chunks = json.load(f)
|
|
|
|
print("\n📊 结果统计:")
|
|
total = len(updated_chunks)
|
|
processed = sum(1 for chunk in updated_chunks if 'final_duration' in chunk)
|
|
perfect = sum(1 for chunk in updated_chunks if 'final_duration' in chunk and abs(chunk['final_duration'] - chunk['target_duration']) <= 0.1)
|
|
good = sum(1 for chunk in updated_chunks if 'final_duration' in chunk and 0.1 < abs(chunk['final_duration'] - chunk['target_duration']) <= 0.3)
|
|
|
|
print(f" 总片段: {total}")
|
|
print(f" 已处理: {processed}")
|
|
print(f" 完美匹配: {perfect}")
|
|
print(f" 良好匹配: {good}")
|
|
|
|
# 显示处理详情
|
|
print("\n📋 处理详情:")
|
|
for chunk in updated_chunks:
|
|
if 'final_duration' in chunk:
|
|
task_id = chunk['task_id']
|
|
target = chunk['target_duration']
|
|
final = chunk['final_duration']
|
|
speed = chunk.get('speed_factor', 1.0)
|
|
diff = final - target
|
|
|
|
status = "✅" if abs(diff) <= 0.1 else "⚡" if abs(diff) <= 0.3 else "⚠️"
|
|
print(f" {status} 片段 {task_id}: {final:.2f}s (目标: {target:.2f}s, 差异: {diff:+.2f}s, 语速: {speed:.2f}x)")
|
|
|
|
print("✅ 简化版音频生成测试完成!")
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"❌ 测试失败: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
success = main()
|
|
if success:
|
|
print("\n🎉 简化版语速调整功能测试成功!")
|
|
else:
|
|
print("\n⚠️ 测试失败,需要进一步调试。")
|