Spaces:
Runtime error
Runtime error
from pydub import AudioSegment | |
from tqdm import tqdm | |
import os | |
from mappings import mappings, replacements | |
def bpm_to_ms(bpm): | |
return 60000 / 2 / bpm | |
def text_to_audio(text, bpm): | |
buffer_length = bpm_to_ms(bpm) | |
audio = AudioSegment.silent(duration=0) | |
for key, value in replacements.items(): | |
text = text.replace(key, value) | |
for note in text.split(" "): | |
if note in mappings: | |
to_add = AudioSegment.from_wav(mappings[note]) | |
# slice to be of consistent length or add more silence | |
if len(to_add) < buffer_length: | |
to_add = to_add + AudioSegment.silent(duration=buffer_length - len(to_add)) | |
elif len(to_add) > buffer_length: | |
to_add = to_add[:buffer_length] | |
audio = audio + to_add | |
elif note == "n": | |
audio = audio + AudioSegment.silent(duration=buffer_length) | |
else: # everything else is a clap | |
to_add = AudioSegment.from_wav(mappings["l"]) | |
# slice to be of consistent length or add more silence | |
if len(to_add) < buffer_length: | |
to_add = to_add + AudioSegment.silent(duration=buffer_length - len(to_add)) | |
elif len(to_add) > buffer_length: | |
to_add = to_add[:buffer_length] | |
audio = audio + to_add | |
return audio |