Я работаю над преобразованием речи 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
Отображение и редактирование текста в TextFormField с помощью голоса (Flutter Speech to text) ⇐ Android
Форум для тех, кто программирует под Android
1772067732
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();
});
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/70314631/display-and-edit-text-into-textformfield-using-voice-flutter-speech-to-text[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия