Spaces:
Sleeping
Sleeping
| # Fixes Applied for Speech Recognition Issues | |
| **Date:** November 5, 2024 | |
| **Issues Fixed:** Language code errors and training data collator problems | |
| ## Problems Identified | |
| ### 1. Language Code Issue | |
| - **Error:** `Unsupported language: tw` | |
| - **Root Cause:** Whisper doesn't officially support "tw" as a language code | |
| - **Impact:** Server returning 500 errors, transcription failing | |
| ### 2. Data Collator Issue | |
| - **Error:** `'list' object has no attribute 'keys'` | |
| - **Root Cause:** Feature extractor expected dictionary format but received list | |
| - **Impact:** Training pipeline failing during data loading | |
| ## Fixes Applied | |
| ### 1. Language Code Fixes | |
| #### A. Updated Configuration (`config/config.py`) | |
| ```python | |
| # Before: | |
| "language": "tw", # Twi language code for fine-tuned model | |
| # After: | |
| "language": None, # Auto-detect language (Whisper doesn't officially support 'tw') | |
| ``` | |
| #### B. Updated Speech Recognizer (`src/speech_recognizer.py`) | |
| - Changed default language parameter from `"tw"` to `None` | |
| - Updated transcription methods to use auto-detection | |
| - Modified both custom and pre-trained model paths | |
| #### C. Updated API Server (`src/api_server.py`) | |
| - Changed default language from `"tw"` to `None` | |
| - Updated API endpoint documentation | |
| - Modified request models to use auto-detection | |
| #### D. Updated Training Script (`train_whisper_twi.py`) | |
| - Changed language configuration to use auto-detection | |
| - Ensures training doesn't fail on unsupported language codes | |
| ### 2. Data Collator Fix | |
| #### Fixed in `train_whisper_twi.py` | |
| ```python | |
| # Before (line 234): | |
| batch = self.processor.feature_extractor.pad( | |
| input_features, return_tensors="pt", padding=True | |
| ) | |
| # After: | |
| batch = self.processor.feature_extractor.pad( | |
| {"input_features": input_features}, return_tensors="pt", padding=True | |
| ) | |
| ``` | |
| **Explanation:** The feature extractor's `pad` method expects a dictionary with an "input_features" key, not a raw list of features. | |
| ## Files Modified | |
| 1. `config/config.py` - Updated language configuration | |
| 2. `src/speech_recognizer.py` - Fixed language defaults and transcription methods | |
| 3. `src/api_server.py` - Updated API endpoints and request models | |
| 4. `train_whisper_twi.py` - Fixed data collator and language configuration | |
| 5. `test_fixes.py` - Created test script to verify fixes | |
| ## Testing | |
| A comprehensive test script (`test_fixes.py`) has been created to verify: | |
| - Configuration loads correctly with new language settings | |
| - Data collator works with proper dictionary format | |
| - API server initializes without language errors | |
| - Speech recognizer handles auto-detection properly | |
| ## How Whisper Will Handle Twi | |
| Since Whisper doesn't officially support "tw" language code: | |
| 1. **Auto-Detection:** Whisper will attempt to detect the language automatically | |
| 2. **Similar Languages:** May detect as related languages (e.g., "ak" for Akan family) | |
| 3. **Fine-Tuned Model:** Once trained on Twi data, the model will better handle Twi regardless of language code | |
| 4. **Fallback:** If detection fails, Whisper defaults to English but transcription may still work | |
| ## Next Steps | |
| ### 1. Test the Fixes | |
| ```bash | |
| cd optimized_engine | |
| python test_fixes.py | |
| ``` | |
| ### 2. Run Quick Training | |
| ```bash | |
| python run_training.py --quick | |
| ``` | |
| ### 3. Start Server (if training succeeds) | |
| ```bash | |
| python main.py server | |
| ``` | |
| ### 4. Test Endpoints | |
| ```bash | |
| # Health check | |
| curl http://localhost:8000/health | |
| # Test transcription (replace with actual audio file) | |
| curl -X POST "http://localhost:8000/test-intent" \ | |
| -F "file=@path/to/audio.wav" | |
| ``` | |
| ## Expected Behavior After Fixes | |
| 1. **Server Startup:** Should start without language errors | |
| 2. **Transcription:** Will use auto-detection instead of failing on "tw" | |
| 3. **Training:** Data collator will properly format input features | |
| 4. **API Responses:** Will include detected language instead of hardcoded "tw" | |
| ## Monitoring Language Detection | |
| The system will now: | |
| - Log detected languages for monitoring | |
| - Allow manual language specification if needed | |
| - Fall back gracefully when detection is uncertain | |
| - Provide confidence scores for transcriptions | |
| ## Additional Recommendations | |
| 1. **Data Collection:** Monitor what languages Whisper detects for your Twi audio | |
| 2. **Fine-Tuning:** The custom model training will improve Twi recognition regardless of language codes | |
| 3. **Validation:** Test with various Twi dialects to ensure broad coverage | |
| 4. **Fallbacks:** Consider post-processing if Whisper's auto-detection needs correction | |
| ## Troubleshooting | |
| If issues persist: | |
| 1. **Check Logs:** Look for language-related warnings in server logs | |
| 2. **Audio Quality:** Ensure audio files are clear and properly formatted | |
| 3. **Model Loading:** Verify Whisper models download correctly | |
| 4. **Dependencies:** Ensure all packages are compatible versions | |
| The fixes address the immediate blocking issues and should allow the training pipeline and server to run successfully. | |