Recipe_Health_Classification / test_hindi_stt.py
he99codes's picture
Deploying latest raw changes and full functionality
a3fc1ff
"""
test_hindi_stt.py — Test Hindi speech-to-text support
"""
import sys
from pathlib import Path
SCRIPT_DIR = Path(__file__).parent
sys.path.insert(0, str(SCRIPT_DIR))
from utils.logger import logger
import inspect
def test_hindi_stt_fixed():
"""Test that Hindi STT support is now fixed"""
logger.info("=" * 70)
logger.info("TESTING: Hindi Speech-to-Text Support")
logger.info("=" * 70)
# Test 1: Check transcriber1.py has Hindi support
logger.info("\n1. Checking transcriber1.py for Hindi support parameters...")
try:
from speech_module.transcriber1 import SpeechTranscriber, WhisperTranscriber
# Check SpeechTranscriber.transcribe signature
sig = inspect.signature(SpeechTranscriber.transcribe)
params = list(sig.parameters.keys())
logger.info(f" SpeechTranscriber.transcribe() parameters: {params}")
if 'language' in params and 'task' in params:
logger.info(" [PASS] FIXED: language and task parameters present")
else:
logger.error(" [FAIL] FAILED: language or task parameters missing")
return False
# Check WhisperTranscriber.transcribe signature
sig_whisper = inspect.signature(WhisperTranscriber.transcribe)
params_whisper = list(sig_whisper.parameters.keys())
logger.info(f" WhisperTranscriber.transcribe() parameters: {params_whisper}")
if 'language' in params_whisper and 'task' in params_whisper:
logger.info(" [PASS] FIXED: WhisperTranscriber has Hindi support")
else:
logger.error(" [FAIL] FAILED: WhisperTranscriber missing parameters")
return False
except Exception as e:
logger.error(f" [FAIL] FAILED: {e}")
return False
# Test 2: Check __init__.py imports from transcriber1
logger.info("\n2. Checking speech_module/__init__.py imports...")
try:
init_path = SCRIPT_DIR / "speech_module" / "__init__.py"
with open(init_path, "r") as f:
init_content = f.read()
if "transcriber1" in init_content:
logger.info(" [PASS] __init__.py imports from transcriber1.py")
else:
logger.error(" [FAIL] __init__.py does not import from transcriber1.py")
return False
except Exception as e:
logger.error(f" [FAIL] FAILED: {e}")
return False
# Test 3: Check app.py has language selection (Hindi audio tab)
logger.info("\n3. Checking app.py for Hindi language support...")
try:
app_path = SCRIPT_DIR / "app.py"
with open(app_path, "r", encoding="utf-8") as f:
app_content = f.read()
checks = {
"transcribe_audio function has language parameter": 'language: str = None' in app_content,
"analyze_hindi_audio function exists": 'def analyze_hindi_audio(audio_path):' in app_content,
"Hindi audio tab exists": 'Hindi audio' in app_content,
"task=translate for Hindi": 'task="translate"' in app_content,
"language=hi for Hindi": 'language="hi"' in app_content,
"analyze_english_audio function exists": 'def analyze_english_audio(audio_path):' in app_content,
}
all_passed = True
for check_name, result in checks.items():
status = "[PASS]" if result else "[FAIL]"
logger.info(f" {status} {check_name}")
if not result:
all_passed = False
if not all_passed:
return False
except Exception as e:
logger.error(f" [FAIL] FAILED: {e}")
return False
# Test 4: Import and verify the updated modules work
logger.info("\n4. Testing import and initialization...")
try:
from speech_module import SpeechTranscriber
logger.info(" [PASS] SpeechTranscriber imported successfully")
# Try to instantiate
transcriber = SpeechTranscriber()
logger.info(" [PASS] SpeechTranscriber instantiated successfully")
# Check method exists and has right signature
method = getattr(transcriber, 'transcribe')
sig = inspect.signature(method)
if 'language' in sig.parameters:
logger.info(" [PASS] transcribe method accepts language parameter")
else:
logger.error(" [FAIL] transcribe method missing language parameter")
return False
except Exception as e:
logger.error(f" [FAIL] FAILED: {e}")
import traceback
traceback.print_exc()
return False
# Test 5: Verify anti-hallucination parameters in transcriber1.py
logger.info("\n5. Checking anti-hallucination decode parameters...")
try:
t1_path = SCRIPT_DIR / "speech_module" / "transcriber1.py"
with open(t1_path, "r", encoding="utf-8") as f:
t1_content = f.read()
checks = {
"temperature=0.0 set": '"temperature": 0.0' in t1_content,
"condition_on_previous_text=False": '"condition_on_previous_text": False' in t1_content,
"initial_prompt set": '"initial_prompt"' in t1_content,
"without_timestamps=True": '"without_timestamps": True' in t1_content,
"suppress_tokens set": '"suppress_tokens"' in t1_content,
}
all_passed = True
for check_name, result in checks.items():
status = "[PASS]" if result else "[FAIL]"
logger.info(f" {status} {check_name}")
if not result:
all_passed = False
if not all_passed:
return False
except Exception as e:
logger.error(f" [FAIL] FAILED: {e}")
return False
return True
if __name__ == "__main__":
logger.info("\n[HINDI STT CONFIGURATION TEST]")
logger.info("This test verifies that Hindi speech-to-text support is properly configured.")
success = test_hindi_stt_fixed()
logger.info("\n" + "=" * 70)
if success:
logger.info("[PASS] ALL TESTS PASSED - Hindi STT support is now fully configured!")
logger.info("\nYou can now:")
logger.info(" 1. Upload/record Hindi audio")
logger.info(" 2. Select 'Hindi audio' tab")
logger.info(" 3. Click 'Transcribe Hindi & analyze'")
logger.info(" 4. Whisper will transcribe and translate to English automatically")
else:
logger.error("[FAIL] SOME TESTS FAILED - Please review the errors above")
sys.exit(1)
logger.info("=" * 70)