make amplify-voice-tracks.py compatible with glob

This commit is contained in:
2024-06-04 14:33:09 -06:00
parent e0c49517ae
commit 4ac91266ab
2 changed files with 43 additions and 31 deletions

View File

@@ -1,3 +1,5 @@
import glob
#! /usr/bin/env python
# pip install -r requirements.txt
usage = 'python amplify-voice-tracks.py <cut json> <?wav filename>'
@@ -11,38 +13,44 @@ from os import system
system('color')
json_filename = util.arg(1, usage)
default_wav_name = json_filename.replace('.json', '.wav')
wav_filename = util.arg(2, usage, default_wav_name)
cutter = util.AudioCutter(wav_filename, json_filename)
filenames=list(glob.glob(json_filename)) if '*' in json_filename else [json_filename]
new_wav = wav_filename.replace(".wav", f"-amplified.wav")
for json_filename in filenames:
print(json_filename)
def save():
cutter.save_and_quit(new_wav)
default_wav_name = json_filename.replace('.json', '.wav')
wav_filename = util.arg(2, usage, default_wav_name)
def process_chunk(audio_guess, timestamp):
audio, length = cutter.audio_and_length(timestamp['start'], timestamp['end'])
audio_left = [channels[0] for channels in audio]
audio_right = [channels[1] for channels in audio]
cutter = util.AudioCutter(wav_filename, json_filename)
def max(l):
m = 0
m_abs = 0
for v in l:
if abs(v) > m_abs:
m = v
m_abs = abs(v)
return m
ml = max(audio_left)
mr = max(audio_right)
new_wav = wav_filename.replace(".wav", f"-amplified.wav")
MAX = 32767
def save():
cutter.save(new_wav)
can_multiply = abs(min(MAX/ml, MAX/mr))
print(can_multiply)
cutter.take_audio(audio_guess, {'start': cutter.current_sec, 'end': cutter.current_sec + length}, timestamp['start'], timestamp['end'], can_multiply)
def process_chunk(audio_guess, timestamp):
audio, length = cutter.audio_and_length(timestamp['start'], timestamp['end'])
audio_left = [channels[0] for channels in audio]
audio_right = [channels[1] for channels in audio]
cutter.process_audio(process_chunk, new_wav)
save()
def max(l):
m = 0
m_abs = 0
for v in l:
if abs(v) > m_abs:
m = v
m_abs = abs(v)
return m
ml = max(audio_left)
mr = max(audio_right)
MAX = 32767
can_multiply = abs(min(MAX/ml, MAX/mr))
print(can_multiply)
cutter.take_audio(audio_guess, {'start': cutter.current_sec, 'end': cutter.current_sec + length}, timestamp['start'], timestamp['end'], can_multiply)
cutter.process_audio(process_chunk, new_wav, False)
save()

View File

@@ -49,14 +49,18 @@ class AudioCutter:
self.searching_for = None
self.last_search = None
def save_and_quit(self, new_wav_file):
def save_and_quit(self, new_wav_file, quit=True):
if len(self.new_json_info) == 0:
print('not saving -- no audio added.')
else:
wavfile.write(new_wav_file, self.framerate, self.new_data)
with open(new_wav_file.replace(".wav", ".json"), 'w') as f:
json.dump(self.new_json_info, f)
sys.exit(0)
if quit:
sys.exit(0)
def save(self, new_wav_file):
self.save_and_quit(new_wav_file, False)
def audio_and_length(self, start, end):
start_frame = int(start * self.framerate)
@@ -106,7 +110,7 @@ class AudioCutter:
if chunk_processor is not None:
chunk_processor(new_audio_tag, info)
def process_audio(self, chunk_processor, new_wav_file):
def process_audio(self, chunk_processor, new_wav_file, quit=True):
for (audio_tag, chunk_info) in self.json_info.items():
# When the AudioCutter is searching for a phrase, skip all audio tags that don't match
if self.searching_for != None:
@@ -120,7 +124,7 @@ class AudioCutter:
if self.searching_for != None:
print(f"{self.searching_for} not found")
self.save_and_quit(new_wav_file)
self.save_and_quit(new_wav_file, quit)
# chunk_processor_v2(audio_tag, chunk_info, signal_back)
def process_audio_v2(self, chunk_processor, new_wav_file):