# GPT_Assistant_Android **Repository Path**: skythinker/gpt-assistant-android ## Basic Information - **Project Name**: GPT_Assistant_Android - **Description**: 【新增PDF和Office文件解析上传】安卓端全场景GPT助手,可用音量键唤起并进行语音交流,支持联网、拍照、智能模板、PDF和Office文件解析等 - **Primary Language**: Android - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 143 - **Forks**: 55 - **Created**: 2023-09-10 - **Last Updated**: 2025-06-04 ## Categories & Tags **Categories**: ai **Tags**: chatGPT, Android, AI ## README

简体中文 | English

GPT Assistant

安卓端全场景 GPT 助手
快捷唤起 · 语音交互 · 支持联网 · 文件上传

--- ## 介绍 ### 主要特性 - **多场景文件处理**: - 通过拍照 / 相册 / 分享 / 打开 / 拖拽上传 - 支持图片 / TXT / PDF / DOCX / PPTX / XLSX 文件 - **支持联网**:按需抓取网页内容发送给GPT - **全局快捷入口**:音量键唤醒 / 状态栏快捷键 / 跨应用划词调起 - **智能模板**:轻松为每个模板自由定制界面(自定义下拉选框和输入框) - **多接口语音输入输出**:华为 / 百度 / Whisper / Google / 系统TTS - **完全开源**:通过OpenAI API(或其兼容接口)提供服务,不收取任何费用 --- ## 功能展示 **一、基础使用:仅用音量键就可以操控** 1. 长按音量下键唤出界面 2. 按住音量键不放,开始语音输入 3. 松开后再次短按,发送问题 4. 接收回复的同时可以自动通过语音进行播报
**二、用状态栏快捷键也可触发** 下拉状态栏,点击“GPT”按钮,即可唤出界面,键盘会自动弹出,可以手动输入问题
**三、支持连续对话** 激活界面上方的对话图标,即可进行连续对话,点击左侧的头像图标可以对单条对话进行删除、重试等操作
**四、上传文本/图片/文档** - **界面内上传**:点击左下角的附件按钮,可选择拍照、相册、文件方式上传文档 - **分享上传**:在其他应用(如图库)中选中文本或图片,点击分享按钮,选择本程序 - **打开上传**:在其他应用(如微信QQ)中选择“打开方式”,选择本程序 - **拖拽上传**:在支持拖拽的其他应用(微信QQ、超级中转站、电脑多屏协同等)中,拖拽文件到本程序界面 - **划词上传**:在其他应用中选中文本,选用本程序处理
**五、智能模板** 通过高级模板语法,可以实现向界面添加下拉选框等操作,具体说明可以在[模板编写说明](template_help.md)中查看
点击模板编辑页面右上角的按钮,可以加载在线模板列表,在[讨论社区](https://github.com/Skythinker616/gpt-assistant-android/discussions/categories/templates)中可以获取更多模板或分享自己的模板,分享的模板可能会被动态更新到在线模板列表中哦~ **六、支持GPT联网** 通过Function接口允许GPT发起联网请求,程序会向GPT自动返回所需的网页数据,使GPT具有联网能力(需先在设置中允许联网)
> 注1:上图均为使用`gpt-3.5-turbo`模型的测试结果,建议在提问前加入“百度搜索”、“必应搜索”、“在线获取”、“从xxx获取”等字样引导GPT,以获得更好的联网效果 > > 注2:如果你使用图中的提问但没有获取到正确的回答,可能是由于GPT的随机性导致访问了错误的网址,或是网站内容变化导致抓取失败,你可以尝试修改提问方式 > > 注3:由于需要将网页内容发送给GPT,联网时会产生大量Token消耗,`gpt-4`模型请谨慎使用 > > 注4:不支持Function的模型(如`gpt-4-vision-preview`等)无法使用联网功能 --- ## 安装&配置 ### 1. 下载安装 直接下载最新发行版中的apk文件,安装即可 ### 2. 配置 OpenAI 程序使用的是OpenAI API,需要用户在设置中填入自己的API_KEY,可以选择使用官方服务或第三方转发服务 - **使用官方服务** 在OpenAI官网注册账号并获取API_KEY,在软件设置中填写网址`https://api.openai.com/`和API_KEY - **使用第三方转发服务**(国内使用) 官方服务在国内无法直接访问,用户可以选择使用第三方转发服务,此处推荐一个提供免费接口的项目[GPT_API_free](https://github.com/chatanywhere/GPT_API_free),目前其免费服务提供`gpt-3.5-turbo`、`gpt-4o-mini`等模型,限制调用频率不超过200请求/天/IP&Key,在国内可直接访问 ### 3. 配置语音识别 (可选) > 注:程序默认使用的是华为语音识别接口,如无特殊情况,不需要进行此步骤 **百度语音识别接口** 用户可以参照[百度语音识别官方文档](https://cloud.baidu.com/doc/SPEECH/s/qknh9i8ed)注册并创建应用,然后获取AppID、API Key和Secret Key填入设置中 若设置项的“启用长语音”选项关闭,则使用的是百度短语音识别接口,若开启,则使用的是实时语音识别接口,需要用户根据需求在创建应用时勾选对应的服务 此外,在创建应用时,需要将“语音包名”设置为“Android”,并填入本软件包名`com.skythinker.gptassistant` ![设置语音包名](readme_img/asr_set_package.jpg) **Google语音识别接口** 用户需要确保系统中已安装[Google](https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox)软件,然后跟随软件指引设定Google为系统语音识别引擎,且允许其使用麦克风权限,然后在软件设置中选择Google语音识别接口即可 **Whisper语音识别接口** 如果用户所使用的OpenAI接口支持Whisper模型,在软件设置中选择Whisper语音识别接口即可使用 ### 4. 开始使用 - 如果你希望使用音量键唤醒,你需要: 1. 根据软件提示开启无障碍服务,并允许软件在后台运行 2. 查看系统设置中是否存在“后台弹出界面”权限,如有该权限则允许,如无则忽略 > 若发现长按音量下键后手机震动一下但没有弹出界面,大概率是因为缺少该权限 - 请参照[功能展示](#功能展示)中的操作使用软件 --- ## Q&A ### 软件唤起 **Q: 长按音量下键只是在调节音量,并没有其他任何现象?** A: 请在系统设置中开启本软件的无障碍服务(重启手机后可能需要重新开启) **Q: 长按音量下键后,手机震动了一下,但没有弹出界面?** A: 请在系统设置中允许程序“后台弹出界面”权限 **Q: 隔一段时间不用就无法使用音量键唤起了?** A: 请在系统设置中允许程序在后台运行 ### 语音交互 **Q: 语音播报没声音 / 不好听?** A: 软件调用的是系统自带TTS(Text To Speech)服务,可以通过软件设置项“打开系统语音设置”进入系统设置界面,选择合适的语音引擎;若对系统自带引擎不满意也可以自行安装第三方TTS引擎如讯飞、[TTS Server](https://github.com/jing332/tts-server-android) 等 **Q: 不同接口的语音识别效果有什么差别?** A: 在中文和中英混说的场景下测试: - 华为接口(实时语音识别)识别准确度很高,单句识别表现最好 - 百度则在长句识别时表现很好,断句较为合理,但难以做到中英混合识别(选用的是中文普通话模型) - Google支持的语言种类很多,中文识别效果一般,且不会加标点 - Whisper支持的语言也很多,中文识别效果还可以,但有时出现简繁体不受控的情况,且不支持边说话边输出 在纯英文场景下,华为、Google和Whisper的效果都不错 **Q: 语音识别接口费用如何?** 本软件目前支持以下四种语音识别接口,默认使用的华为接口是免费的: - **华为HMS**(默认接口)提供免费的语音识别接口,因此程序内置了作者的API Key以供直接使用,如无特殊情况该接口将在华为免费期间一直可用 - **Google**也是免费接口,但在国内可能无法访问,仅推荐海外用户使用 - **百度**短语音识别为新用户提供15万次 & 180天免费额度,额度外收取¥0.0034/次的调用费用 - **Whisper**接口由OpenAI提供,与GPT聊天使用相同接口参数,调用费用可以参考[官方说明](https://openai.com/pricing) ### 联网相关 **Q: 联网时GPT能访问什么网站?** A: 程序使用Android WebView加载网页,能用本机浏览器打开的网站都可以访问 **Q: GPT能获取网站中的什么内容?** A: 对于一般网站,仅允许GPT获取纯文本内容,而对于下述特殊适配过的网站,GPT还可以获取到搜索结果链接:百度、必应、谷歌、谷歌学术、知乎、微博、京东、GitHub、B站、知网 > 如果你觉得有其他网站需要适配,可以提交Issue **Q: 为什么GPT在访问一些网站时说无法获取内容?** A: 网页加载超时(15s)、需要登录、需要验证等原因都可能导致这个问题,你可以尝试再次提问,或要求GPT更换访问的网站 ### 其他使用问题 **Q: 为什么列表中没有我需要的模型?** A: 软件仅内置了少数常用模型,你可以在设置中添加自定义模型(以英文分号分隔),添加后即会出现在列表中 **Q: 显示获取失败,提示请求超时,或产生错误码502/503?** A: 排除网络因素,该错误一般由OpenAI接口产生,可能由于其服务器负载过高导致,请重试或等待一段时间后再尝试 [查看OpenAI实时状态](https://status.openai.com/) **Q: 如何使用非OpenAI格式的模型接口?** A: 各家LLM接口种类繁多(如Claude、Gemini、Ollama等),本项目暂无计划进行一一适配,用户可以考虑部署[OneAPI](https://github.com/songquanpeng/one-api)或[NewAPI](https://github.com/QuantumNous/new-api)等分发系统将各家接口统一转换为OpenAI格式 ### 开发相关 **Q: 编译仓库代码后无法使用华为HMS语音识别?** A: 为防止滥用,仓库中的Key开启了包名和签名验证,因此如果希望自行编译使用,需要根据[华为官方文档](https://developer.huawei.com/consumer/cn/doc/hiai-Guides/ml-asr-0000001050066212#section699935381711)创建AppGallery应用并替换鉴权信息,包括`app/agconnect-services.json`文件和`app/src/main/res/values/strings.xml`中的`hms_api_key`字段 --- ## 主要功能更新日志 - **2023.09.10** 发布第一个版本,支持基础对话、百度语音输入、TTS输出、Markdown渲染等功能 - **2023.09.13** 支持连续对话、GPT-4、百度长语音识别,上下文菜单唤起 - **2023.10.06** 添加华为HMS语音识别 - **2023.11.06** 添加联网功能 - **2023.12.04** 添加Vision识图功能 - **2023.12.21** 支持高级模板语法 - **2024.01.08** 支持Google和Whisper语音识别、在线模板列表 - **2024.05.25** 支持连续语音对话 - **2025.04.23** 支持多种文档解析 --- ## TODO - 支持提问、回复长度限制 - 支持消息压缩 - 应用内直接下载安装更新 --- ## 测试环境 已测试的机型: | 机型 | 系统版本 | Android 版本 | 本程序版本 | | :--: | :-----: | :----------: | :-------: | | 荣耀 7C | EMUI 8.0.0 | Android 8 | 1.9.1 | | 荣耀 20 | HarmonyOS 3.0.0 | Android 10 | 1.9.1 | | 荣耀 20 | HarmonyOS 4.0 | Android 10 | 2.0.0 | | 华为 Mate 30 | HarmonyOS 3.0.0 | Android 12 | 1.6.0 | | 华为 Mate 30 | HarmonyOS 4.0 | Android 12 | 1.8.0 | | 荣耀 Magic 4 | MagicOS 7.0 | Android 13 | 1.9.1 | | 荣耀 Magic 6 | MagicOS 8.0 | Android 14 | 1.11.1 | | 荣耀 Magic 6 | MagicOS 9.0 | Android 15 | 2.0.0 | | 红米 K20 Pro | MIUI 12.5.6 | Android 11 | 1.5.0 | | 红米 K60 Pro | MIUI 14.0.23 | Android 13 | 1.7.0 | | 小米 13 | MIUI 14.0.5 | Android 14 | 1.10.0 | | Pixel 2 (模拟器) | Android 12 | Android 12 | 1.7.0 | --- ## 改进&贡献 如果你有改进建议或希望参与贡献,欢迎提交Issue或Pull Request --- ## 隐私说明 本程序不会以任何方式收集用户的个人信息,语音输入会直接发送给各语音接口,提问会直接发送给OpenAI API,不会经过其他中间服务器 --- ## 引用的开源项目 - [Markwon](https://github.com/noties/Markwon): Android上的Markdown渲染器 - [chatgpt-java](https://github.com/Grt1228/chatgpt-java): OpenAI API的Java封装 ---