Ce projet est un assistant vocal Flutter AI via ChatGPT par OpenAI.
Ce projet nécessite une jeton de session depuis ChatGPT pour accéder à son API REST non officielle, speech_to_text et flutter_tts
* Parfois lent à répondre, principalement en raison d’une utilisation excessive de ChatGPT
Démo
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());
}
Jeton de session
Pour obtenir un jeton de session :
- Aller à et connectez-vous ou inscrivez-vous.
- Ouvrez les outils de développement.
- Ouvert
Application
>Cookies
(Storage
>Cookies
sur Firefox)
- Créez ces fichiers et ajoutez votre jeton de session pour exécuter respectivement les tests et l’exemple :
Devrait ressembler à ceci :
const SESSION_TOKEN = 'my session token from ';
Le crédit
Licence
AVEC Droits d’auteur (c) 2022, Emre Coskunçay
Si vous avez trouvé ce projet intéressant, pensez à soutenir mon travail open source en me parrainer ou me suivre sur twitter
GitHub
Voir Github