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


    [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

  • 相关阅读:
    Spring IOC(二)beanName 别名管理
    Spring IOC(六)依赖查找
    Spring IOC(五)依赖注入
    Spring IOC(七)类型推断
    Spring 循环引用(二)源码分析
    Spring 循环引用(一)一个循环依赖引发的 BUG
    Spring IOC(四)FactoryBean
    Spring 中的类加载机制
    Spring IOC(三)单例 bean 的注册管理
    Spring Environment(三)生命周期
  • 原文地址:https://www.cnblogs.com/bingduoduo/p/10558119.html
Copyright © 2020-2023  润新知