Add WAV file support with MP3 conversion and reuse

- Add support for WAV files with automatic conversion to MP3
- Save converted MP3 files in the same directory as WAV files
- Reuse existing MP3 files if already converted
- Update documentation and requirements
This commit is contained in:
2025-05-22 20:53:39 +02:00
parent b6e6e80cfb
commit c47089aa0d
6 changed files with 71 additions and 11 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ def parse_args():
"--input-dir",
type=str,
required=True,
help="Directory containing audio files (.mp3, .m4a)"
help="Directory containing audio files (.mp3, .m4a, .wav)"
)
parser.add_argument(
"--output-dir",
+33 -1
View File
@@ -1,8 +1,10 @@
# Helper functions for mknotes
import os
import tempfile
from pydub import AudioSegment
def find_audio_files(directory, extensions=(".mp3", ".m4a")):
def find_audio_files(directory, extensions=(".mp3", ".m4a", ".wav")):
"""
Recursively find all audio files in the given directory with the specified extensions.
Returns a list of file paths.
@@ -19,3 +21,33 @@ def ensure_directory_exists(directory):
Create the directory if it does not exist.
"""
os.makedirs(directory, exist_ok=True)
def convert_wav_to_mp3(wav_path):
"""
Convert a WAV file to MP3 format using pydub if an MP3 version doesn't already exist.
Saves the MP3 file in the same directory as the WAV file.
Args:
wav_path: Path to the WAV file
Returns:
Path to the MP3 file
"""
# Determine the output MP3 path (same directory, same name, different extension)
base_name = os.path.splitext(wav_path)[0]
mp3_path = base_name + ".mp3"
# Check if MP3 version already exists
if os.path.exists(mp3_path):
print(f"Using existing MP3 file: {mp3_path}")
return mp3_path
# Convert WAV to MP3
try:
audio = AudioSegment.from_wav(wav_path)
audio.export(mp3_path, format="mp3")
print(f"Converted {wav_path} to MP3 format at {mp3_path}")
return mp3_path
except Exception as e:
print(f"Error converting {wav_path} to MP3: {e}")
return None