by Anonymous » 13 Jul 2025, 00:00
Wiederholte Wörter/Phrasen in der Sprach-Text-Eingabe (Mobile Browser, Flutter Web OK)-Dedupe-Funktion funktioniert nicht in Flattern
Ich erstelle kein persönliches Infotoformular in Flatter mit Sprache-zu-Text (mit Sprach-up-up-up-up-up-up-up-wörern. Phrasen aus dem Mikrofoneingang, bevor Felder ausgefüllt werden. />
Code: Select all
/// 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
[b] Wie ich es verwende: < /strong>
Wenn der Mikrofoneingang empfangen wird, nenne ich diese Funktion, bevor ich das Feld fülle. Wörter/Phrasen, obwohl diese Logik vorhanden ist. logs. TexteditingController-Updates? /> HINWEIS: < /strong> < /p>
Der Fehler ist nur auf mobilen Browsern, nicht beim Laufen als native Flutter -App oder Flattern -Web. geschätzt! [/b]
speech_to_text: ^7.1.0
Tested on: Chrome Android browser, Xiaomi Mi 10i Internet browser
Wiederholte Wörter/Phrasen in der Sprach-Text-Eingabe (Mobile Browser, Flutter Web OK)-Dedupe-Funktion funktioniert nicht in Flattern
Ich erstelle kein persönliches Infotoformular in Flatter mit Sprache-zu-Text (mit Sprach-up-up-up-up-up-up-up-wörern. Phrasen aus dem Mikrofoneingang, bevor Felder ausgefüllt werden. />
[code]/// 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
[b] Wie ich es verwende: < /strong>
Wenn der Mikrofoneingang empfangen wird, nenne ich diese Funktion, bevor ich das Feld fülle. Wörter/Phrasen, obwohl diese Logik vorhanden ist. logs. TexteditingController-Updates? /> HINWEIS: < /strong> < /p>
Der Fehler ist nur auf mobilen Browsern, nicht beim Laufen als native Flutter -App oder Flattern -Web. geschätzt! [/b]
speech_to_text: ^7.1.0
Tested on: Chrome Android browser, Xiaomi Mi 10i Internet browser
[/code]