This project is a Flutter AI Voice Assistant via ChatGPT by OpenAI.
This project requires a valid session token from ChatGPT to access its unofficial REST API , speech_to_text and flutter_tts
*Sometimes slow to respond, mostly due to excessive use of ChatGPT
Demo
Usage
import 'package:flutter_chatgpt_api/flutter_chatgpt_api.dart'; import 'package:flutter_tts/flutter_tts.dart'; import 'package:speech_to_text/speech_recognition_result.dart'; import 'package:speech_to_text/speech_to_text.dart'; @override void initState() { super.initState(); _api = ChatGPTApi(sessionToken: SESSION_TOKEN); isLoading = false; _initSpeech(); } void _initSpeech() async { speechEnabled = await _speechToText.initialize(); _speechToText.systemLocale().then( (value) => tts.setLanguage(value!.localeId), ); tts.setSpeechRate(0.6); setState(() {}); } void _startListening() async { await _speechToText.listen(onResult: _onSpeechResult); setState(() {}); } void _onSpeechResult(SpeechRecognitionResult result) { setState( () { if (result.finalResult) { _buildSubmit(result.recognizedWords); } }, ); } _buildSubmit(String prompt) async { setState( () { _messages.add( ChatMessage( text: prompt, chatMessageType: ChatMessageType.user, ), ); isLoading = true; }, ); var input = prompt; Future.delayed(const Duration(milliseconds: 50)).then((_) => _scrollDown()); var newMessage = await _api.sendMessage( input, conversationId: _conversationId, parentMessageId: _parentMessageId, ); setState(() { _conversationId = newMessage.conversationId; _parentMessageId = newMessage.messageId; isLoading = false; _messages.add( ChatMessage( text: newMessage.message, chatMessageType: ChatMessageType.bot, ), ); tts.speak(newMessage.message); }); Future.delayed(const Duration(milliseconds: 50)).then((_) => _scrollDown()); }
SessionToken
To get a session token:
- Go to https://chat.openai.com/chat and log in or sign up.
- Open dev tools.
- Open
Application
>Cookies
(Storage
>Cookies
on FireFo
- Create these files and add your session token to run the tests and example respectively:
lib/session_token.dart
Should look something like this:
const SESSION_TOKEN = 'my session token from https://chat.openai.com/chat';
Learn more about chatgpt project. click here
Credit
- Huge thanks to Travis Fischer for creating Node.js ChatGPT API (unofficial)
- Speech to Text speech_to_text by Corner Software
- Text to Speech flutter_tts by Daniel Lutton
- Inspired by this ChatGPT API Dart by Jason Rai
License
MIT Copyright (c) 2022, Emre Coşkunçay
If you found this project interesting, please consider supporting my open source work by sponsoring me or following me on twitter
Post Credit
This project is developed by coskuncay
Download this project from the below link.
https://github.com/coskuncay/flutter_ai_voice_assistant_chatgpt/archive/refs/heads/master.zip
You can visit original source page from the below link:
https://github.com/coskuncay/flutter_ai_voice_assistant_chatgpt