CogniDetect / audio_processing.py
DevelopingGod
Fix audio transcription format, add Whisper language=en, FastAPI CMD
1b2389c
Raw
History Blame Contribute Delete
2.04 kB
import whisper
import os
# --- CONFIGURATION ---
# "base" is a good balance of speed and accuracy.
# Use "tiny" for super speed, or "small" for better accuracy.
WHISPER_MODEL_SIZE = "base"
class AudioAnalyzer:
def __init__(self):
print(f"Loading Whisper AI ({WHISPER_MODEL_SIZE})...")
self.model = whisper.load_model(WHISPER_MODEL_SIZE)
print("Whisper AI loaded successfully.")
def process_audio(self, audio_path):
"""
Takes an audio file path, converts to text, and extracts basic features.
"""
if not os.path.exists(audio_path):
return {"error": "File not found"}
print(f"Transcribing {audio_path}...")
# 1. TRANSCRIBE (Speech -> Text)
result = self.model.transcribe(audio_path, language="en", fp16=False)
transcribed_text = result["text"].strip()
# 2. EXTRACT META-FEATURES (Bonus Signals)
# We can detect 'slow speech' (Psychomotor retardation) common in Depression
duration_seconds = result['segments'][-1]['end'] if result['segments'] else 0
word_count = len(transcribed_text.split())
wpm = (word_count / duration_seconds) * 60 if duration_seconds > 0 else 0
# Interpret Rate of Speech
speech_rate_label = "Normal"
if wpm < 110:
speech_rate_label = "Slow (Possible Depression Indicator)"
elif wpm > 160:
speech_rate_label = "Fast (Possible Anxiety/ADHD Indicator)"
return {
"text": transcribed_text,
"wpm": round(wpm, 1),
"rate_label": speech_rate_label
}
# --- TEST IT ---
if __name__ == "__main__":
# You need a dummy audio file to test this.
# If on Colab, upload a file named 'test_audio.mp3'
analyzer = AudioAnalyzer()
# Example usage (Uncomment if you have a file)
# output = analyzer.process_audio("test_audio.mp3")
# print(output)