摘要:的架构跟类似,从下至上,由系统服务和应用框架组成。依托于提供的运行时,从到现在的和,在构建工具领域,社区也不断涌现出非常卓越的开源项目来。
大家好,很开心在这里宣布 YodaOS 开源了。他将承载 Rokid 4年以来对于人工智能和语音交互领域的沉淀,并选择 Node.js 作为操作系统的一等开发公民,全部开放给社区。
YodaOS 的架构跟 Android 类似,从下至上,由 Linux Kernel、系统服务和应用框架组成。不过 YodaOS 有以下不同:
开发者可以直接使用 JavaScript / Node.js 来开发本地应用(技能);
封装了 AI 抽象层,可以通过 JavaScript 直接调用到诸如语音激活、语音识别、人脸识别等接口;
除了支持默认的 Node.js API 外,YodaOS 还提供:
内置的语音激活和语音识别 API,真正做到了开箱即用(开发)的语音交互系统;
对音量控制、电源管理、蓝牙、多媒体播放、LED 灯效和 OTA 等都进行了接口封装;
对物联网开发者来说,内置了标准化的 WebSocket、MQTT 等物联网协议的客户端实现;
YodaOS 也支持 npm 仓库,开发者可以根据自己的需要在 OS 中运行所需的模块,不过并不推荐使用一些实现起来很重的模块,因为 YodaOS 需要支持中低端设备,所以有时候也需要考虑到性能方面的因素。
如果遇到一些 npm 仓库确实实现很重,但又不得不用的时候,在 YodaOS 上,我们一般的做法是使用 N-API 桥接 C/C++ 模块,然后保证 JavaScript API 与对应的 npm 包一致。
同时借助于 N-API,开发者可以将任何 Linux 的库移植到 YodaOS 上,并通过 N-API 以 JavaScript API 方式使用,可以这么理解,N-API 之于 YodaOS,就像 JNI 之于 Android。
为什么是 Node.js
前面提到了 YodaOS 选择拥抱 Node.js 和 Node.js 开发者,最大的一个原因就是在过去将近10年的时间,从最开始 Ryan Dahl 定义的,一个轻量级的 Web 服务器框架,到如今的 Express、Loopback、Koajs、Midway 和 Egg Framework,在 Web 服务器框架领域已经渐渐成熟。
依托于 Node.js 提供的运行时,从 Grunt、Gulp 到现在的 Webpack 和 Parcel,在构建工具领域,社区也不断涌现出非常卓越的开源项目来。Node.js 正在发挥每位开发者的想象力,社区中几乎有你需要的一切,甚至于在社区中,有一句流传已久的名言:
“any application that can be written in JavaScript, will eventually be
written in JavaScript”——Atwood’s Law
意思就是说,只要能被 JavaScript 来编写的程序,终将使用 JavaScript 实现。那为什么不用 JavaScript 来写一个操作系统呢?
当然上面的只是一个有趣的引子,Rokid 真正想做的是让 Node.js 开发者能够以更低的门槛进入语音交互和嵌入式领域。
Node.js 与 ShadowNode
YodaOS 虽然跟 Android 的架构相似,不过解决的问题,及目标设备并不尽然相同,对于现在越来越便宜的手机,Android 开发者几乎不用担心系统性能的问题。然而对于像智能音响、IoT 终端以及其他嵌入式设备,通常硬件资源都是非常紧缺的,在这种情况下,OS 就要解决开发者“既要节省资源、又要便于开发”的问题。
于是针对中低端硬件产品(内存介于 128MB 到 256MB 之间),我们创造了 ShadowNode 来解决这个问题,它是 Rokid 基于三星 IoT.js 二次开发的一款 Node.js 运行时,它具备更快的启动速度和更低的资源占用,相比 IoT.js,它:
提供了更好的错误栈信息和性能调试工具;
支持了基于 N-API 的跨运行时模块执行;
针对特定芯片的性能优化,比如 AmLogic A113 和 Kamino18;
借助于 N-API 的 ABI 兼容特性,我们实现了 OS 上层框架和应用的运行时兼容性。比如开发者完全可以选择在更高级的设备上运行 YodaOS,此时内存和 Flash 不再是瓶颈,开发者只需要更换系统中的 Node.js 运行时,即可获得更快的执行速度,不需要修改一行上层代码。
最后
我们希望借助 YodaOS,为 Node.js 社区补全终端开发这一版图,让我们用这门亲切的语言,再次回到我们熟悉的“端”的开发。
如果想一起加入 YodaOS,可以在 GitHub 上关注我们,项目地址:https://github.com/yodaos-pro...。
关于 YodaOS:
YodaOS 是 Rokid 研发的首个全栈开源 AI 操作系统,由 Linux 内核、硬件抽象层、AI 抽象层和 JavaScript 框架组成,专为下一代人机交互设备开发,可用于智能音箱、智能家居、智能穿戴和车载等多种设备和场景。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/108926.html
摘要:为了能让感兴趣的开发者小伙伴第一时间体验到,联合社区赶在春节前发起开发套件试用征集活动,该套件是基于自研语音解决方案平台打造而成。与此同时,我们也同样提供高度定制化模块化的整体架构,开发者亦可方便地选择想要集成的模块对整个操作系统重新组装。 1月28日,Rokid为人机交互设备开发的开源人工智能操作系统——YodaOS正式上线,可用于智能音箱、智能家居、智能穿戴和车载等多种设备和场景。...
摘要:为了能让感兴趣的开发者小伙伴第一时间体验到,联合社区赶在春节前发起开发套件试用征集活动,该套件是基于自研语音解决方案平台打造而成。与此同时,我们也同样提供高度定制化模块化的整体架构,开发者亦可方便地选择想要集成的模块对整个操作系统重新组装。 1月28日,Rokid为人机交互设备开发的开源人工智能操作系统——YodaOS正式上线,可用于智能音箱、智能家居、智能穿戴和车载等多种设备和场景。...
摘要:月号,杭州和联合主办的第八期技术分享会,在公司如期举行。张伟林,宋小菜资深前端开发工程师,年,霹雳迷,已手残的纸牌魔术师,喜欢神奇的东西,技术栈从上向下不断横向纵向贯穿,目前在寻找前后端大一统思想的路上越走越偏。 showImg(https://segmentfault.com/img/bVbkWN4?w=3000&h=1686); 12 月 9 号,杭州 NodeParty 和 Ro...
摘要:系统在初始化时,会加载所有,然后分别在和生成对应的。那么在中,又是如何将上述的生成为开发者直接使用的接口的呢下面就为大家介绍我们引入的。它接受一个对象,然后会遍历原型链中的对象,并且分别按照和去生成一个叫的对象,最后将这个对象返回给开发者。 在 Node.js 社区中,其实不乏通过 Markdown 生成 RESTful API 的框架,按照一定的格式约定好 API 所需要的数据,然后...
摘要:接下来,由会通过上传音频数据,云端通过一系列算法最终将语音数据转换为两部分结果纯文本,表示这段音频数据中用户所说的话,比如若琪今天的天气。 本文是面向 Web 开发者所写,介绍关于语音交互的一篇科普性质的文章,希望借助这篇文章,让开发者了解到什么是语音交互,以及在 YodaOS 中的技术实现。不了解YodaOS是什么?点击这里回顾。 作为 Web 开发者,相信在面试时常会被问到浏览器输...
阅读 512·2019-08-30 15:55
阅读 921·2019-08-29 15:35
阅读 1182·2019-08-29 13:48
阅读 1889·2019-08-26 13:29
阅读 2915·2019-08-23 18:26
阅读 1218·2019-08-23 18:20
阅读 2814·2019-08-23 16:43
阅读 2693·2019-08-23 15:58