Flutter AI 语音助手(通过 ChatGPT)
本项目是一个通过 ChatGPT(来自 OpenAI)实现的 Flutter AI 语音助手。
本项目需要有效的 ChatGPT session token 才能访问其非官方 REST API,以及 speech_to_text 和 flutter_tts。
*有时响应缓慢,主要是由于过度使用 ChatGPT
演示
用法
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
获取 session token
- 前往 https://chat.openai.com/chat 登录或注册。
- 打开开发者工具。
- 打开
Application>Cookies(在 FireFox 上是Storage>Cookies)。
- 创建这些文件,并将您的 session token 添加到文件中,以便分别运行测试和示例。
lib/session_token.dart
应该看起来像这样
const SESSION_TOKEN = 'my session token from https://chat.openai.com/chat';
鸣谢
- 非常感谢 Travis Fischer 创建了 Node.js ChatGPT API(非官方)。
- 语音转文本 speech_to_text,作者:Corner Software
- 文本转语音 flutter_tts,作者:Daniel Lutton
- 受此 ChatGPT API Dart 启发,作者:Jason Rai
许可证
MIT 版权所有 (c) 2022,Emre Coşkunçay
如果您觉得这个项目很有趣,请考虑通过 赞助我 或 在 Twitter 上关注我 来支持我的开源工作。

