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 |