Повторяемые слова/фразы при вводе речевого текста (мобильный браузер, Flutter Web OK)-Функция dedupe, не работающая в Flutter
Я строю форму личной информации в Flutter с речевым текстом (используя речевую_to_text и пакет текста в речь. Ввод микрофона перед заполнением полей.
Он отлично работает на Flutter Web , но на мобильном браузере (Chrome на Android и т. Д.) Class = "Lang-Dart PrettyPrint-Override">/// Robust function to remove repeated words and merged repeated phrases.
String dedupeMergedRepeat(String input) {
// Remove numbers
String processed = input.replaceAll(RegExp(r'[0-9]'), '');
// Split into words using unicode support
List words = RegExp(r'(\p{L}+)', unicode: true)
.allMatches(processed)
.map((m) => m.group(0)!)
.toList();
if (words.isEmpty) return "";
// Remove consecutive duplicate words (case insensitive)
List noConsec = [];
for (var w in words) {
if (noConsec.isEmpty || noConsec.last.toLowerCase() != w.toLowerCase()) {
noConsec.add(w);
}
}
// Remove all duplicate words, keep first occurrence (case insensitive)
Set seen = {};
List noRepeat = [];
for (var w in noConsec) {
if (!seen.contains(w.toLowerCase())) {
seen.add(w.toLowerCase());
noRepeat.add(w);
}
}
String joined = noRepeat.join(' ');
// Remove repeated merged words: e.g. "DrDr" -> "Dr"
joined = joined.replaceAllMapped(
RegExp(r'\b(\p{L}+)\1\b', unicode: true, caseSensitive: false),
(m) => m.group(1)!);
// Remove repeated merged phrases. E.g. "Dr AmbedkarDr Ambedkar Road" -> "Dr Ambedkar Road"
// Try window sizes from half down to 1 word
List phraseWords = joined.split(' ');
for (int size = phraseWords.length ~/ 2; size >= 1; size--) {
for (int i = 0; i + 2 * size
Как я его использую: < /strong>
всякий раз, когда получается ввод микрофона, я называю эту функцию перед заполнением поле. Хотя эта логика присутствует.
В Fluther Web, она работает нормально, и Dedupes, как и ожидалось. /> Убедитесь, что я называю функцию, прежде чем установить значение TextEdingTitingController. Обновления? /> Примечание: < /strong> < /p>
Ошибка только на мобильных браузерах, а не при запуске в качестве нативного приложения Flutter или Fluther Web. ценится!
speech_to_text: ^7.1.0
Tested on: Chrome Android browser, Xiaomi Mi 10i Internet browser
Подробнее здесь: https://stackoverflow.com/questions/796 ... n-mobile-b
Как предотвратить повторные слова и фразы в речи к тексту адреса в мобильном браузере в Flutter? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение