Drama-3 / tests /test_reference_audio.py
zhaochenyang20's picture andito's picture
andito HF Staff
Run Drama 3 on ZeroGPU (#14)
c368729
Raw History Blame Contribute Delete
1.3 kB
"""GPU reference encoding must preserve all PCM samples and edited transcripts."""
import base64
import io
import numpy as np
import soundfile as sf
from test_gradio_ui import studio, body
import server
def test_clone_and_retake_compression_preserve_every_pcm_sample(studio):
# Include both PCM extremes, plus very quiet samples used by whispered voices.
samples = np.array([-32768, -3000, -1, 0, 1, 3000, 32767] * 500, dtype='<i2')
wav = io.BytesIO()
sf.write(wav, samples, 44100, format='WAV', subtype='PCM_16')
voice = server.Voice('test', 'Test', wav.getvalue(), 'Original words.', len(samples) / 44100)
choice = server.VoiceChoice('clone', voice=voice, transcript='Edited transcript.')
take = server.Take('take', choice, 'Earlier line.', 'Earlier line.', [], samples.tobytes(), 44100)
request = server.engine_request(choice, 'Next line.', [take], body(studio))
assert voice.wav == wav.getvalue()
assert [r['text'] for r in request['references']] == ['Edited transcript.', 'Earlier line.']
for reference in request['references']:
assert reference['media_type'] == 'audio/flac'
decoded, rate = sf.read(io.BytesIO(base64.b64decode(reference['data'])), dtype='int16')
assert rate == 44100 and np.array_equal(samples, decoded)