Complete removal of unused fields to simplify data structure:
1. SpeechRecognitionResult Model Simplified:
- Removed 'confidence' field (was always hardcoded to 0.8)
- Removed 'alternatives' field (was always empty array)
- Kept only 'recognizedWords' which is actually used
- Updated constructor, fromMap, toMap, toString, ==, hashCode accordingly
2. YxAsrService Updates:
- Simplified _sendResult() method signature
- Removed unused confidence and alternatives parameters
- Updated method call to only pass recognizedWords
- Cleaner method invocation: _sendResult(recognizedWords: result.text)
3. Benefits Achieved:
- 🧹 Simplified data structure - only essential fields remain
- 🚀 Reduced memory usage - no unnecessary field storage/transmission
- 💡 Cleaner API - method signatures reflect actual usage
- ⚡ Better performance - less data serialization/deserialization
- 🔍 Improved code clarity - no confusing unused parameters
4. Sherpa-ONNX Integration:
- OnlineRecognizerResult only provides: text, tokens, timestamps
- No confidence or alternatives data available from the library
- Our simplified structure now aligns with actual data source
This optimization removes all the 'fake' hardcoded values and focuses
on the actual speech recognition text result that users need.
Major SDK simplification by removing redundant final result processing:
1. YxAsrService changes:
- Remove final result retrieval in stopListening()
- Remove finalResult parameter from _sendResult()
- Simplify stop logic to only reset stream state
- Eliminate duplicate API calls that provided no additional value
2. SpeechRecognitionResult model changes:
- Remove finalResult property and related logic
- Update constructor, factory methods, toString, equals, hashCode
- Remove finalResult from toMap/fromMap serialization
- Simplify the model to focus on actual recognition data
3. Benefits:
- Cleaner, more maintainable codebase
- Reduced complexity and potential bugs
- Better performance (no redundant API calls)
- Simpler API for developers to use
- Real-time text appending works seamlessly without artificial distinctions
The analysis showed that 'final results' were identical to the last real-time result,
making the distinction unnecessary. Now all results are treated uniformly as
real-time updates, providing a smoother and more intuitive user experience.
1. Add finalResult property to SpeechRecognitionResult class
- Distinguish between real-time and final recognition results
- Update factory methods, toString, equals, and hashCode
- Update toMap and fromMap methods
2. Update YxAsrService to support finalResult flag
- Add finalResult parameter to _sendResult method
- Mark final results with finalResult: true
- Keep real-time results as finalResult: false (default)
3. Remove unused methods to clean up codebase
- Remove unused _toggleRecording method
- Remove unused _updateTextController method
- Clean up orphaned comments
These fixes resolve linter errors and ensure proper text appending functionality.