Я получаю повторяющиеся слова и фразы в речи к тексту, когда в мобильном браузере, когда я говорю адрес, который я исполAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Я получаю повторяющиеся слова и фразы в речи к тексту, когда в мобильном браузере, когда я говорю адрес, который я испол

Сообщение Anonymous »

Название < /h2>
Повторяемые слова /фразы при вводе речевого текста (мобильный браузер, Flutter Web OK)-Функция Dedupe не работает в Flutter < /p>
Body < /h2>
Я строю личную информацию в Flutter с речевым током (с использованием refer_to_text < /code> и stext-steph Записано функция dedupemergedrepeat для очистки повторяющихся слов и объединенных фраз из ввода микрофона перед заполнением полей.

Он прекрасно работает на Flutter Web , но на мобильном браузере мобильный браузер (хром на Android и т. Д.) , поля все еще наполнены повторяемыми словами, но. /> Вот функция dedupe и соответствующий код: < /p>
/// 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 ... owser-when
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»