[BUAA软工]第二次团队作业
Part 1 项目说明
1. 简介
项目名称:语音coding助手(暂定)
说明: 实现一个android app, 通过语音输入来写python代码,和android 上的 shell 交互。
2.应用场景
手机端写代码是一件非常麻烦的事情,即便有外置键盘,也不便于携带。
1️⃣ 当你走在路上,忽然想到一个很好的idea,希望能够很快把他实现出来,但用手机输入太慢而且不方便,用语音输入就很酷,不是吗?
2️⃣ 在自己家里写代码,可以写的很快,而且很舒服,读出include, 自动输入include
3️⃣ 对于手部有残疾但梦想成为程序员的人,语音coding助手就是最好的医疗手段。
为什么单纯使用语音来写代码呢?因为通用的语音识别是存在比较大的二义性问题的。比如,你什么意思?意思意思?意思意思什么意思?没有意思。
3. 技术说明
语音输入
:使用科大讯飞api,团队使用过科大讯飞的sdk,中英文可以混合翻译,就语音翻译而言,科大讯飞确实是业界标杆之一。
shell
: 项目目的在于语音输入指令或者代码到shell或者vim中,我们选取得是android上开源的强大终端termux,【链接】, 这个shell 包含vim, apt-get, 可以安装python, 甚至是gcc, g++, 安装完openssh,还可以连接远程服务器,可以认为时以一个运行在android上的小linux系统,我们的开发将基于这个项目。
流程:调用语音识别api ➡️ 得到输入的String ➡️ String 转换成对应的动作 ➡️ 执行 action
4.项目划分
4-1前端
界面设计优化, 一到两人
4-2 后端
后端逻辑开发, 两到三人
part 1:语音->指定语言 自然语言转为String
part 2 :指定语言-> 执行操作 String ->Action
4-3 测试
测试功能, 一到两人
4-4 PM
需求安排,开发分工,进度核对,push和鼓励组员,技术支持
4.难点
调用语音识别的api其实算不上太大的难点,SDK和参考文档都很完善,而且中英文混合可以消除一些歧义,比如把vim 的 "i" (启动编辑的input的缩写)换成“输入”, 就不会和字母'i', 混合
需要设计比较多的语音命令或者说模式(string->action,借用模式识别的词), 才能让项目足够好用,输入足够快,而这些匹配的模式其实有一定的学习成本,所以设计选取的命令和命令的数量都需要比较好的把控。
action如何实现,
比如action为往vim编辑光标处输如字符串"hello world"
比如action为换行,跳跃指定的行
比如action为run这个脚本,并且推送到github远程仓库
尤其第三点其实需要对应android研究比较深,需要将termux默认的键盘输入,转变到使用语音输入后做出希望完成的动作,而最核心的是如何不用键盘在制定的光标处输入字符,这需要我们研究一下termux的源码实现,然后对其进行更改。
5.案例
语音写code的idea并非没有人想到过,http://blog.jobbole.com/45781/ , 这就是个例子,只不过这个人在window上进行实践,他手部肌肉麻木无法顺利敲键盘,是实现了一个系统,支持大约2000多种语音指令,http://v.youku.com/v_show/id_XNTk2MTAyMjQ0.html 视频10分钟多演示功能, 也可参见知乎提问如何优雅地用语音输入写程序?
还有一个反面案例,锤子出品的TNT工作站,他们想做的东西太多了,想要通用的语音输入,并且在比较嘈杂的环境中,效果很差,才会有“安静点!吵到我用TNT”的玩笑了。
6. 用户数目 用户评价估计
校内体验的话,用户数目估计能够达到100+, 毕竟还是很酷的一个项目,演示效果好
如果推广再商业话或者公益化,用户有望持续增长破万。
用户评价估计,termux本身就是口碑极佳的项目(github 3.5k star), 至少我们团队对于做好用户体验非常有信心。
7.预期目标
实现一个语音编写python代码的demo, 选取python作为目标语言是因为受众广,而且格式简单,没有很多分号,或者很麻烦的语法。做成app,能在手机端简单演示。
alpha: 5条核心指令确立,语音正确输入,执行正确的操作
beta: 20条-30条基本指令确立,界面优化,功能扩充,用户体验优化
gamma: 100条指令, 支持用户自定义行为,功能封装, 完善优化,充分测试。
Part 2 NABCD
2-1 N (need)
需求:解决语音书写代码的需求
刚性需求: 对于键盘输入不方便的编程人员,属于刚性需求,中国的大概有8300万人,其中肢体类的占30%-40%,2017年,854.7万残疾儿童及持证残疾人得到基本康复服务,其中肢体残疾人484.6万。
辅助性需求: 对于手打代码累了的人员,可以辅助输入,减少负担。
这个需求在脑机接口普及后很可能会消失。
2-2 A (Approach 做法)
基本的招数:调用过科大讯飞的api,语言:java, c++
独特的招数: 没啥独特的,就是酷。
技术可行性:技术上需要比较了解android底层交互,需要一定研究。
法律法规可行性:遵循中华人民共和国宪法。
2.3 B (Benefit 好处)
- 那你这个产品/服务会给客户/用户带来什么具体好处呢?
让用户轻松码代码,解放双手,更可以在android端快速实现idea原型,快速修改代码。
- 如果用户已经有一个解决方案 (例如用户已经在用 QQ 聊天), 那你的产品具体有哪些好处, 能让用户离开现有产品, 使用你的产品来聊天呢?
目前并没有调研到有同类的应用。可以类比的是正常的使用键盘输入笔记本电脑或者台式机,或者使用蓝牙键盘输入手机端。但并没有真正解放双手,对于残疾人士而言,增加了一条成为程序员的出路。
- 另外这还有一个 Benefit/Cost (成本) 的问题。
这个项目是有“学习成本”的,需要学习一些语音“指令”,对于计算机从业人员而言,其实学习成本不大,需要我们在设计这些“指令”的时候比较用心。而对于残疾人士,这些学习成本也是比较的,就像盲人学习盲文一样。
2-4 C (Competitors 竞争)
竞争对手也没有闲着, 这个市场有多大, 目前有多少竞争者在瓜分, 你了解么? 竞争者是单独的,还是存在一个行业链,各个阶段的竞争者都一样么? 你如果不是最先进入某个市场的产品, 你还能赢么? 我们的新想法可能要和已有的产品竞争,说服用户放弃一个已经使用了一段时间的产品,来用我们的产品,是有不少困难。 我们还要想到, 还有一个隐藏着的竞争对手是 “不消费” -- 很多用户根本就不用这个领域的任何产品, 你怎么能让他们完成从 0 到 1 的转变? 如果你成为他们的第一个产品,那你就是 First Mover, 有很多优势。
市场大小:市场其实不大,可以作为键盘输入的补充,在大多数情形不算必须品,但是有价值的。
行业链:项目完善后,可以集成到不同硬件上,电脑端也可以添加语音写代码的功能。
目前我们要实现的是一个demo,真正做到产品阶段,可以先做成一个插件,一个后台服务,没必要以此作为核心卖点。或者可以实现一个android端的coding IDE,像VS Code 那样的产品,去用语音输入支持更多类型的语言。
2-4 D (Delivery 交付, Data 数据)
怎样把你的创新产品交到用户的手中?
例1, 你想到了一个好主意, 建一个比 hao123 更好的导航页面! 我们姑且认为NABC 都没问题, 那如何把这么好, 这么简单的产品交到 (Deliver) 用户手中呢? 用户怎么能知道你的产品?你如何利用互联网(或者其他途径)把这一福音传遍你的目标用户? 这一方面在早期的软件开发者的角度来看,应该是 “市场部门” 该做的事。 但是,现在网络已经成为绝大多数软件产品一一部分,对社交网络的应用不会发生在产品开发完毕之后,而是在早期就会成为产品规划和功能的一部分。
例2, 你想到了一个手机的应用, NABC 都不错, 那如何把产品交到千万个用户手中呢? 你怎么去找到你的目标用户?光考在中国几十个App 市场去投放么,这是远远不够的!
D: Data 你有什么数据来证明新的功能带来的好处? 团队做了用户调查么? 有什么量化的指标, 例如 NPS(净推荐值)?
交付可以通过上线应用商店,进行推广,当然我们可以现在同学圈子中流行起来,但说实话,一个demo想要真正传播开来其实挺难的,最好的方式应该是先通过学校,或者其他方式,和一些医院建立联系,定制医疗版本,提高软件质量,然后,有可能的话可以卖给一些手机厂商,集成到他们的系统中去。或者还可以通过“知乎”进行推荐,在所有相关问题下进行回答,推荐我们的工具,在或者可以通过抖音进行推广,让我们的应用转换成为一个网红app.
2-5 用户
班上同学肯定是有超过10个愿意配合的同学,他们是:
乔x,庹XX, 胡XX, 汤XX, 樊XX,齐XX, 刘X铭,王科X, 万XX,赵XX...
- 把这些要点都组合成为一段话 -- 当你要向别人兜售你的项目的时候, 你通常只有很短的时间 (电梯演说),能否自然而有条理地把项目说清楚? 请用你产品中实际的元素代替 <> 中的抽象概念。
全新的产品:
各位领导/投资人/合作伙伴: 我们的 <语音助手> 是为了解决手机端写代码的痛苦, 他们需要更好更快更方便 <Need>的输入方式, 但软键盘输入实在太慢太麻烦了,我们通过语音辅助输入 <Approach>, 它能加快写码速度,释放双手<Benefit>, 这是前所未有的<Competitor>。 同时,我们通过大量的推广 <Delivery> ,能很快地让大部分用户知道我们的产品,并进一步传播。
增量改进的功能:
各位领导/合作伙伴: 我们的 <医疗版本改进> 是为了解决 的痛苦, 他们中很多人是可以成为良好的程序员的 < Need>, 但是因为手部残疾没法写代码,通过针对性的语音写代码训练 < Approach>, 能够帮助他们实现成为程序员的梦想 < Benefit>, 让他们的人生更加圆满,包括我们之前和相关医院的合作证明< Data>平均只需要一周甚至更短的时间,一个残疾人士就能够快速书写所需要的代码。我们相信医疗版本的语音coding助手能给我们带来业绩改善,同时这也是一项公益性很强的事业。
- 把上面的这段话录制为视频,上传到视频网站,并把链接发到个人/团队博客上。 【todo】
【作业2】 以终为始,假设一切顺利,产品发布了,你怎么宣传这个产品呢?请写一个新闻稿,描述你的新产品在新闻发布会上的情况
标题
语音写码,释放双手!
副标题
你将获得极度舒适的写码体验
总结
语音写码会比键盘输入快1.5倍!(假如),小小手机也可以成为coding利器。
问题
手机端快速写代码的困境。
解决方案
通过语音辅助coding , 或者完全使用语音coding
你的引证
这个项目会很有趣~
如何开始
(假如说我们实现了这个功能)想要快速定位特定位置,你只需说:"转到第25行末尾"。
客户评述
今天去丈母娘家的路上,产品经理忽然就改需求了,手上就一台手机,还好有语音输入,很快就完成了,要是键盘打,真是得当着丈母娘的面头秃了。
收尾和号召
语音coding助手正式上架各大应用商店! 下月将推出语音codingIDE,敬请期待!