|
import os |
|
import sys |
|
from app import process_audio, music_analyzer |
|
|
|
def main(): |
|
""" |
|
Example function to demonstrate the application with a sample audio file. |
|
|
|
Usage: |
|
python example.py <path_to_audio_file> |
|
""" |
|
if len(sys.argv) != 2: |
|
print("Usage: python example.py <path_to_audio_file>") |
|
return |
|
|
|
audio_file = sys.argv[1] |
|
if not os.path.exists(audio_file): |
|
print(f"Error: File {audio_file} does not exist.") |
|
return |
|
|
|
print(f"Processing audio file: {audio_file}") |
|
|
|
|
|
genre_results, lyrics, ast_results = process_audio(audio_file) |
|
|
|
|
|
if isinstance(genre_results, str) and genre_results.startswith("Error"): |
|
print(f"Error processing audio: {genre_results}") |
|
return |
|
|
|
|
|
try: |
|
emotion_results = music_analyzer.analyze_music(audio_file) |
|
|
|
|
|
print("\n" + "="*50) |
|
print("GENRE CLASSIFICATION RESULTS:") |
|
print("="*50) |
|
print(genre_results) |
|
|
|
print("\n" + "="*50) |
|
print("EMOTION ANALYSIS RESULTS:") |
|
print("="*50) |
|
print(f"Tempo: {emotion_results['summary']['tempo']:.1f} BPM") |
|
print(f"Key: {emotion_results['summary']['key']} {emotion_results['summary']['mode']}") |
|
print(f"Primary Emotion: {emotion_results['summary']['primary_emotion']}") |
|
print(f"Primary Theme: {emotion_results['summary']['primary_theme']}") |
|
except Exception as e: |
|
print(f"\nError in emotion analysis: {str(e)}") |
|
|
|
print("\n" + "="*50) |
|
print("AUDIO CLASSIFICATION RESULTS (AST):") |
|
print("="*50) |
|
if ast_results and isinstance(ast_results, list) and len(ast_results) > 0: |
|
for result in ast_results[:5]: |
|
print(f"{result['label']}: {result['score']*100:.2f}%") |
|
else: |
|
print("No audio classification results available.") |
|
|
|
print("\n" + "="*50) |
|
print("GENERATED LYRICS:") |
|
print("="*50) |
|
print(lyrics if lyrics else "No lyrics generated.") |
|
|
|
if __name__ == "__main__": |
|
main() |