API Reference
July 16, 2025 ยท View on GitHub
This section contains the detailed API documentation for the project's Python modules. Each module provides specific functionality for audio processing, machine learning, and user interaction.
Quick Start
from src.data_processing import load_audio_files_with_metadata
from src.feature_extraction import extract_basic_features
from src.model_training import train_model, prepare_data_for_training
from src.inference import run_inference
# Load and process audio data
audio_data, metadata = load_audio_files_with_metadata("data/audio_with_metadata/")
features = extract_basic_features(audio_data)
# Train a model
X, y = prepare_data_for_training(features, metadata)
model = train_model(X, y)
# Run inference
suggested_actions, suggested_cuts = run_inference("models/trained_model.pkl", audio_data)
Modules Overview
Data Processing (src.data_processing)
Functions for loading and preprocessing audio data from various formats.
Key Functions:
load_audio_files_with_metadata(directory)- Load audio files with JSON metadataload_audio_files(directory)- Load audio files without metadatasplit_tracks(audio_data, segment_length=5)- Split audio into segments
Feature Extraction (src.feature_extraction)
Methods to extract meaningful features from audio data for machine learning.
Key Functions:
extract_basic_features(audio_data)- Extract spectral and temporal featuresextract_mfcc(audio_data, n_mfcc=13)- Extract MFCC coefficientsextract_spectrogram(audio_data)- Extract mel-scale spectrograms
Model Training (src.model_training)
Scripts for building, training, and evaluating machine learning models.
Key Functions:
prepare_data_for_training(features, metadata)- Prepare data for ML trainingtrain_model(X, y)- Train ensemble model (CNN + RF + SVM)train_action_prediction_model(X, y)- Train action-specific model
Inference (src.inference)
Functions for running trained models on new audio data.
Key Functions:
load_model(model_path)- Load pre-trained modelpredict_actions(model, audio_data)- Predict actions and cutsrun_inference(model_path, audio_data)- Complete inference pipeline
Action Suggestions (src.action_suggestion)
Functions for generating and processing AI-suggested audio modifications.
Key Functions:
suggest_actions(model, features)- Generate action suggestionssuggest_cuts(model, features)- Generate creative cut suggestionsprint_suggested_actions(actions)- Display suggestions
Feedback System (src.feedback)
Functions for collecting and processing user feedback.
Key Functions:
collect_user_feedback(actions, cuts)- Collect user feedbacksave_feedback(feedback, filename)- Save feedback to fileincorporate_feedback_into_training(features, labels, feedback_file)- Retrain with feedback
Complete Usage Example
import os
from src.data_processing import load_audio_files_with_metadata
from src.feature_extraction import extract_basic_features
from src.model_training import train_model, prepare_data_for_training
from src.inference import run_inference
from src.feedback import collect_user_feedback, save_feedback
# 1. Load training data
audio_data, metadata = load_audio_files_with_metadata("data/training/")
# 2. Extract features
features = extract_basic_features(audio_data)
# 3. Prepare and train model
X, y = prepare_data_for_training(features, metadata)
model = train_model(X, y)
# 4. Save model
import joblib
joblib.dump(model, "models/my_model.pkl")
# 5. Run inference on new data
new_audio_data, _ = load_audio_files_with_metadata("data/new_tracks/")
actions, cuts = run_inference("models/my_model.pkl", new_audio_data)
# 6. Collect feedback
feedback = collect_user_feedback(actions, cuts)
save_feedback(feedback)
# 7. Display results
print("Suggested Actions:")
for filename, action_list in actions.items():
print(f" {filename}: {action_list}")
print("\nSuggested Cuts:")
for filename, cut_list in cuts.items():
print(f" {filename}: {cut_list}")
Error Handling
All functions include proper error handling:
try:
audio_data, metadata = load_audio_files_with_metadata("data/audio/")
except FileNotFoundError:
print("Audio directory not found")
except Exception as e:
print(f"Error loading audio: {e}")
try:
model = load_model("models/trained_model.pkl")
except FileNotFoundError:
print("Model file not found - please train a model first")
Performance Tips
- Batch Processing: Process multiple files together
- Caching: Cache extracted features to avoid recomputation
- Memory Management: Use generators for large datasets
- Parallel Processing: Use multiprocessing for CPU-intensive tasks
# Example of efficient batch processing
def process_batch(file_list, batch_size=32):
for i in range(0, len(file_list), batch_size):
batch = file_list[i:i+batch_size]
# Process batch
yield process_files(batch)
Configuration
Most functions accept optional parameters for customization:
# Feature extraction with custom parameters
features = extract_basic_features(audio_data)
mfcc_features = extract_mfcc(audio_data, n_mfcc=25) # More detailed features
# Model training with custom parameters
model = train_model(X, y, n_estimators=200, test_size=0.3)
For detailed function signatures and examples, see the individual module documentation in the Reference section.