Coco-18 commited on
Commit
88569fc
·
verified ·
1 Parent(s): f177a42

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -27
app.py CHANGED
@@ -42,7 +42,7 @@ try:
42
  import tempfile
43
  import torchaudio
44
  import soundfile as sf
45
- from flask import Flask, request, jsonify, send_file
46
  from flask_cors import CORS
47
  from transformers import Wav2Vec2ForCTC, AutoProcessor, VitsModel, AutoTokenizer
48
  from transformers import MarianMTModel, MarianTokenizer
@@ -533,21 +533,27 @@ def evaluate_pronunciation():
533
  return jsonify({"error": "No audio file uploaded"}), 400
534
 
535
  audio_file = request.files["audio"]
536
- reference_word = request.form.get("reference_word", "").strip()
537
- language = request.form.get("language", "tagalog").lower() # Default to tagalog for ASR
538
 
539
- # Check if reference word is valid
540
- reference_patterns = [
541
- "mayap_a_abak", "mayap_a_ugtu", "mayap_a_gatpanapun",
542
- "mayap_a_bengi", "komusta_ka"
543
- ]
544
-
545
- if not reference_word or reference_word not in reference_patterns:
546
- logger.warning(f"⚠️ Invalid reference word: {reference_word}")
547
- return jsonify({"error": f"Invalid reference word. Available: {reference_patterns}"}), 400
 
 
 
 
 
 
548
 
549
  lang_code = LANGUAGE_CODES.get(language, language)
550
- logger.info(f"🔄 Evaluating pronunciation of '{reference_word}' in {language}")
551
 
552
  # Save the uploaded file temporarily
553
  with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
@@ -571,19 +577,6 @@ def evaluate_pronunciation():
571
  logger.error(f"❌ Audio processing failed: {str(e)}")
572
  return jsonify({"error": f"Audio processing failed: {str(e)}"}), 500
573
 
574
- # Find reference audio files
575
- reference_dir = os.path.join(REFERENCE_AUDIO_DIR, reference_word)
576
- if not os.path.exists(reference_dir):
577
- logger.warning(f"⚠️ Reference directory not found: {reference_dir}")
578
- return jsonify({"error": f"Reference audio for {reference_word} not found"}), 404
579
-
580
- reference_files = glob.glob(os.path.join(reference_dir, "*.wav"))
581
- if not reference_files:
582
- logger.warning(f"⚠️ No reference audio files found in {reference_dir}")
583
- return jsonify({"error": f"No reference audio found for {reference_word}"}), 404
584
-
585
- logger.info(f"📊 Found {len(reference_files)} reference files for '{reference_word}'")
586
-
587
  # Transcribe user audio
588
  try:
589
  # Process audio for ASR
@@ -663,7 +656,7 @@ def evaluate_pronunciation():
663
  "score": best_score,
664
  "feedback": feedback,
665
  "transcription": user_transcription,
666
- "reference_word": reference_word,
667
  "details": results
668
  })
669
 
 
42
  import tempfile
43
  import torchaudio
44
  import soundfile as sf
45
+ from flask import Flask, request, jsonify, send_file, g
46
  from flask_cors import CORS
47
  from transformers import Wav2Vec2ForCTC, AutoProcessor, VitsModel, AutoTokenizer
48
  from transformers import MarianMTModel, MarianTokenizer
 
533
  return jsonify({"error": "No audio file uploaded"}), 400
534
 
535
  audio_file = request.files["audio"]
536
+ reference_locator = request.form.get("reference_locator", "").strip()
537
+ language = request.form.get("language", "kapampangan").lower()
538
 
539
+ # Validate reference locator
540
+ if not reference_locator:
541
+ logger.warning("⚠️ No reference locator provided")
542
+ return jsonify({"error": "Reference locator is required"}), 400
543
+
544
+ # Construct full reference directory path
545
+ reference_dir = os.path.join(REFERENCE_AUDIO_DIR, reference_locator)
546
+ if not os.path.exists(reference_dir):
547
+ logger.warning(f"⚠️ Reference directory not found: {reference_dir}")
548
+ return jsonify({"error": f"Reference audio directory not found: {reference_locator}"}), 404
549
+
550
+ reference_files = glob.glob(os.path.join(reference_dir, "*.wav"))
551
+ if not reference_files:
552
+ logger.warning(f"⚠️ No reference audio files found in {reference_dir}")
553
+ return jsonify({"error": f"No reference audio found for {reference_locator}"}), 404
554
 
555
  lang_code = LANGUAGE_CODES.get(language, language)
556
+ logger.info(f"🔄 Evaluating pronunciation for reference: {reference_locator}")
557
 
558
  # Save the uploaded file temporarily
559
  with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as temp_audio:
 
577
  logger.error(f"❌ Audio processing failed: {str(e)}")
578
  return jsonify({"error": f"Audio processing failed: {str(e)}"}), 500
579
 
 
 
 
 
 
 
 
 
 
 
 
 
 
580
  # Transcribe user audio
581
  try:
582
  # Process audio for ASR
 
656
  "score": best_score,
657
  "feedback": feedback,
658
  "transcription": user_transcription,
659
+ "reference_locator": reference_locator,
660
  "details": results
661
  })
662