[北航软工]第二次团队作业

[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.难点

  1. 调用语音识别的api其实算不上太大的难点,SDK和参考文档都很完善,而且中英文混合可以消除一些歧义,比如把vim 的 "i" (启动编辑的input的缩写)换成“输入”, 就不会和字母'i', 混合

  2. 需要设计比较多的语音命令或者说模式(string->action,借用模式识别的词), 才能让项目足够好用,输入足够快,而这些匹配的模式其实有一定的学习成本,所以设计选取的命令和命令的数量都需要比较好的把控。

  3. 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...

  1. 把这些要点都组合成为一段话 -- 当你要向别人兜售你的项目的时候, 你通常只有很短的时间 (电梯演说),能否自然而有条理地把项目说清楚? 请用你产品中实际的元素代替 <> 中的抽象概念。

全新的产品:

各位领导/投资人/合作伙伴: 我们的 <语音助手> 是为了解决手机端写代码的痛苦, 他们需要更好更快更方便 <Need>的输入方式, 但软键盘输入实在太慢太麻烦了,我们通过语音辅助输入 <Approach>, 它能加快写码速度,释放双手<Benefit>, 这是前所未有的<Competitor>。 同时,我们通过大量的推广 <Delivery> ,能很快地让大部分用户知道我们的产品,并进一步传播。

增量改进的功能:

各位领导/合作伙伴: 我们的 <医疗版本改进> 是为了解决 <手部残疾人士> 的痛苦, 他们中很多人是可以成为良好的程序员的 <Need>, 但是因为手部残疾没法写代码,通过针对性的语音写代码训练 <Approach>, 能够帮助他们实现成为程序员的梦想 <Benefit>, 让他们的人生更加圆满,包括我们之前和相关医院的合作证明<Data>平均只需要一周甚至更短的时间,一个残疾人士就能够快速书写所需要的代码。我们相信医疗版本的语音coding助手能给我们带来业绩改善,同时这也是一项公益性很强的事业。

  1. 把上面的这段话录制为视频,上传到视频网站,并把链接发到个人/团队博客上。 【todo】

【作业2】 以终为始,假设一切顺利,产品发布了,你怎么宣传这个产品呢?请写一个新闻稿,描述你的新产品在新闻发布会上的情况

标题
  语音写码,释放双手!

副标题
  你将获得极度舒适的写码体验

总结
  语音写码会比键盘输入快1.5倍!(假如),小小手机也可以成为coding利器。

问题
  手机端快速写代码的困境。

解决方案
  通过语音辅助coding , 或者完全使用语音coding

你的引证
  这个项目会很有趣~

如何开始
  (假如说我们实现了这个功能)想要快速定位特定位置,你只需说:"转到第25行末尾"。

客户评述
  今天去丈母娘家的路上,产品经理忽然就改需求了,手上就一台手机,还好有语音输入,很快就完成了,要是键盘打,真是得当着丈母娘的面头秃了。

收尾和号召
  语音coding助手正式上架各大应用商店! 下月将推出语音codingIDE,敬请期待!

附录!

termux

讯飞api

posted @ 2019-03-19 15:33  冰多多  阅读(724)  评论(10编辑  收藏  举报