Отображение и редактирование текста в TextFormField с помощью голоса (Flutter Speech to text)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Отображение и редактирование текста в TextFormField с помощью голоса (Flutter Speech to text)

Сообщение Anonymous »

Я работаю над преобразованием речи Flutter в текст. Пейзаж - пользователь может оставить свой комментарий с помощью голоса. В то время как они вносят комментарии своим голосом, они могут редактировать поле комментария и вводить текст (задаваемый их голосом) в любую позицию. Например, я ввожу информацию с помощью голоса и хочу ввести несколько слов в начале, в середине или в любом месте, где, как мне кажется, мне нужно добавить несколько слов для завершения моих комментариев.
Я использую voice_to_text: ^5.2.0. Ниже приведен пример кода. Здесь я просто пришел, чтобы отобразить текст в TextFormField. Значение удаляется, когда я повторно ввожу свой голос. Но мне нужно, чтобы значение было в TextFormField, и я могу редактировать его в любой позиции данного слова, которую, как мне кажется, мне нужно ввести здесь.
class MyApp extends StatefulWidget {

@override
State createState() => _MyAppState();
}

class _MyAppState extends State {
String text = 'Hi';
bool isListening = false;
final _textEditingController = TextEditingController();
late stt.SpeechToText _speech;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SafeArea(
child: Scaffold(
body: SingleChildScrollView(
child: Column(
children: [
TextFormField(
controller: _textEditingController,
),
Text(text),
],
)
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
floatingActionButton: AvatarGlow(
animate: isListening,
endRadius: 150,
glowColor: Theme.of(context).primaryColor,
child: FloatingActionButton(
onPressed: toggleRecording,
child: Icon(isLintening ? Icons.mic : Icons.mic_none),
),
),
),
));
}

Future toggleRecording() => SpechApi.toggleRecording(
onResult: (text) => setState(() {
this.text = text;
_textEditingController.text = text;
}),
onListening: (isLintening) {
setState(() => this.isListening = isListening);

if(!isListening) {
Future.delayed(Duration(seconds: 1), () {
// Utils.scanText(text);
_textEditingController.text = text;
});
}
});
void onListen() async {
bool available = await _speech.initialize(
onStatus: (val) => print('onStatus: $val'),
onError: (val) => print('onError: $val'));

if (!isListening) {
if (available) {
setState(() {
isLintening = false;
_speech.listen(
onResult: (val) => setState(() {
_textEditingController.text = text;
}),
);
});
}
} else {
setState(() {
isLintening = false;
_speech.stop();
});
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/703 ... ch-to-text
Ответить

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

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

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

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

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