cosyvoice / test_audio_timed.py
Marcos Remar
Add test scripts for CosyVoice 1.0 (300M model)
b65e164
#\!/usr/bin/env python3
import os
import sys
import time
import torch
import torchaudio
import numpy as np
print("=== Teste de Áudio com Medição de Tempo ===")
print()
# Criar um áudio sintético simples para testar
print("Gerando áudio de teste...")
start_time = time.time()
# Parâmetros do áudio
sample_rate = 22050
duration = 5 # segundos
frequency = 440 # Hz (nota Lá)
# Gerar onda senoidal com envelope
t = np.linspace(0, duration, int(sample_rate * duration))
# Adicionar envelope para suavizar início e fim
envelope = np.ones_like(t)
fade_samples = int(0.1 * sample_rate) # 100ms de fade
envelope[:fade_samples] = np.linspace(0, 1, fade_samples)
envelope[-fade_samples:] = np.linspace(1, 0, fade_samples)
# Gerar áudio com múltiplas frequências (acorde)
audio = np.zeros_like(t)
frequencies = [440, 554, 659] # Lá maior
for freq in frequencies:
audio += 0.2 * np.sin(2 * np.pi * freq * t) * envelope
# Adicionar um pouco de vibrato
vibrato = 0.02 * np.sin(2 * np.pi * 5 * t) # 5Hz vibrato
audio = audio * (1 + vibrato)
# Converter para tensor
audio_tensor = torch.FloatTensor(audio).unsqueeze(0)
# Salvar arquivo
output_file = "test_audio_timing.wav"
torchaudio.save(output_file, audio_tensor, sample_rate)
generation_time = time.time() - start_time
# Estatísticas
file_size = os.path.getsize(output_file) / 1024 # KB
print(f"✅ Áudio gerado com sucesso\!")
print()
print("📊 Estatísticas:")
print(f" - Arquivo: {output_file}")
print(f" - Duração: {duration} segundos")
print(f" - Taxa de amostragem: {sample_rate} Hz")
print(f" - Tamanho: {file_size:.1f} KB")
print(f" - Tempo de geração: {generation_time:.3f} segundos")
print(f" - Velocidade: {duration/generation_time:.1f}x tempo real")
print()
print("🎵 Áudio contém um acorde de Lá maior com vibrato")