【bekars|开发日记】从0开始运行DuerOS个人开发板-DuerOS From Scratch
b****s · b****s 发布于2017-10-28 16:10 浏览:3131 回复:11

0. 写在前面

一些朋友拿到了DuerOS的个人开发板,急迫的想体验这个大玩具。

“我怎么才能和这块小黑板子对话啊?”

“你到是先买个树莓派啊!”

所以,我想给这些刚入坑的朋友写一个简单的运行个人开发板的说明,而DuerOS官方已经有一个制作好的树莓派系统,我打算从树莓派原始系统开始说起,告诉大家如何DuerOS From Scratch。

1. 购买树莓派

购买地点:淘宝或者京东,记住买3代就行,一般没有假货,中国版、英国版都一样
周边装备:TF卡(8G或者16G,下有选择说明),读卡器,HDMI线(接显示器),Android数据线(一头USB,一头Mini USB),板子的电源插头,外壳,AUX线(外接音箱)

2. 树莓派原生系统准备

从树莓派官网下载RASPBIAN烧录镜像:

https://www.raspberrypi.org/downloads/

依照原厂系统安装说明使用Etcher烧录树莓派系统到TF卡,系统会占用TF卡大概5G空间,如果你以后要经常备份卡可以考虑买8G TF卡,备份快,如果你需要在树莓派上开发程序16G也足够了。

用HDMI线接显示器,USB接鼠标和键盘,启动系统,就可以进入桌面了,设置WiFi并能联网。

树莓派的Mirror很多,选择一个最快的更新系统:

http://www.raspbian.org/RaspbianMirrors$ sudo apt-get update$ sudo apt-get upgrade

3. 接线

按图接线

4. 搞出声音

树莓派默认声音是从HDMI接口输出的,要想从音箱发声需要修改为从3.5mm接口输出。

$ sudo amixer cset numid=3 1$ alsamixer
调大音量

安装sox,录制并播放一个wav测试麦克和音箱:

$ sudo apt-get install sox

$ AUDIODEV=hw:1,0 rec your_voice.wav随便唱个歌吼两声

$ play your_voice.wav能听到声音了

5. 安装运行环境

官方镜像中的程序是C写的,没有放出源码,目前开源的node.js版本有源码,为了便于学习使用node.js版本程序。

安装系统软件包:

$ sudo apt-get install libsox-fmt-mp3
$ sudo apt-get install libasound2 libasound2-dev alsa-utils
$ sudo apt-get install python
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libatlas-dev

安装libiconv:

$ wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz$ tar xzvf libiconv-1.15.tar.gz$ cd libiconv-1.15$ ./configure --prefix=/usr$ make$ sudo make install

安装MPlayer:

$ sudo apt-get install libmpg123-dev$ wget http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.3.0.tar.xz$ tar xvf MPlayer-1.3.0.tar.xz$ cd MPlayer-1.3.0$ ./configure;$ make$ sudo make install

安装node

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
$ . ~/.bashrc
$ nvm install --lts$ nvm use --lts

安装cnpm

npm在国内很慢,使用淘宝的cnpm替代。

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

6. 安装源码

下载源码

$ git clone https://github.com/dueros/dcs-sdk-js.git
$ export CODE_ROOT=$(pwd)/dcs-sdk-js

安装node库

$ cd $CODE_ROOT$ cnpm install$ cd snowboy$ cnpm install$ cnpm install -g node-pre-gyp$ cnode-pre-gyp clean$ cnode-pre-gyp configure$ cnode-pre-gyp build

7. 修改配置文件

$ cd $CODE_ROOT$ cp dcs_config.json.pi dcs_config.json

修改dcs_config.json中的device_id和access_token,需要你到DuerOS的开发平台用百度帐号先创建一个产品,具体步骤可以参考:

http://developer.dueros.baidu.com/doc/overall/console-guide_markdown

将device_id修改为你创建产品的client_id,access_token通过以下方法获取。

  1. 打开一个浏览器,输入网址:https://openapi.baidu.com/oauth/2.0/authorize?client_id={{CLIENT_ID}}&response_type=token&redirect_uri={{REDIRECT_URI}};

  2. 修改上面网址中的{{CLIENT_ID}}为你创建产品的client_id,{{REDIRECT_URI}}设置为"oob",类似于这样:

    https://openapi.baidu.com/oauth/2.0/authorize?client_id=xxxxxxyyyyyyyzzzzz&response_type=token&redirect_uri=oob
  3. 回车之后会出现百度oauth登录界面,输入帐号和密码之后过了短信验证,浏览器会被重定向到oauth成功的一个页面上;

  4. 看地址栏中的参数中已经有access_token了,类似于这样:

    access_token=23.0e1814d2e6861779dc251eaeb5dc2008.2592000.1511768527.2300547068-10218111
  5. 这个token过期时间是1个月,就是说1个月之后要再获取新的token;

8. 唤醒野兽-小度

激动人心的一刻就要来了,启动程序

$ cd $CODE_ROOT
$ node index.js

可以说“小度 小度”唤醒了,也可以用回车唤醒。

点赞  ( 1 )
收藏
评论(11)
共11条回复 最后由D****童回复于2017-11-01 13:05
#2b****s回复于2017-10-28 16:14:06

3. 搞出声音

树莓派默认声音是从HDMI接口输出的,要想从音箱发声需要修改为从3.5mm接口输出。

$ sudo amixer cset numid=3 1$ alsamixer
调大音量

安装sox,录制并播放一个wav测试麦克和音箱:

$ sudo apt-get install sox

$ AUDIODEV=hw:1,0 rec your_voice.wav随便唱个歌吼两声

$ play your_voice.wav能听到声音了

4. 安装运行环境

官方镜像中的程序是C写的,没有放出源码,目前开源的node.js版本有源码,为了便于学习使用node.js版本程序。

安装系统软件包:

$ sudo apt-get install libsox-fmt-mp3
$ sudo apt-get install libasound2 libasound2-dev alsa-utils
$ sudo apt-get install python
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libatlas-dev

安装libiconv:

$ wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz$ tar xzvf libiconv-1.15.tar.gz$ cd libiconv-1.15$ ./configure --prefix=/usr$ make$ sudo make install

安装MPlayer:

$ sudo apt-get install libmpg123-dev$ wget http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.3.0.tar.xz$ tar xvf MPlayer-1.3.0.tar.xz$ cd MPlayer-1.3.0$ ./configure;$ make$ sudo make install

安装node

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
$ . ~/.bashrc
$ nvm install --lts$ nvm use --lts

安装cnpm

npm在国内很慢,使用淘宝的cnpm替代。

$ npm install -g cnpm --registry=https://registry.npm.taobao.org



#3b****s回复于2017-10-28 16:14:29

5. 安装源码

下载源码

$ git clone https://github.com/dueros/dcs-sdk-js.git
$ export CODE_ROOT=$(pwd)/dcs-sdk-js

安装node库

$ cd $CODE_ROOT$ cnpm install$ cd snowboy$ cnpm install$ cnpm install -g node-pre-gyp$ cnode-pre-gyp clean$ cnode-pre-gyp configure$ cnode-pre-gyp build

6. 修改配置文件

$ cd $CODE_ROOT$ cp dcs_config.json.pi dcs_config.json

修改dcs_config.json中的device_id和access_token,需要你到DuerOS的开发平台用百度帐号先创建一个产品,具体步骤可以参考:

http://developer.dueros.baidu.com/doc/overall/console-guide_markdown

将device_id修改为你创建产品的client_id,access_token通过以下方法获取。

  1. 打开一个浏览器,输入网址:https://openapi.baidu.com/oauth/2.0/authorize?client_id={{CLIENT_ID}}&response_type=token&redirect_uri={{REDIRECT_URI}};

  2. 修改上面网址中的{{CLIENT_ID}}为你创建产品的client_id,{{REDIRECT_URI}}为oauth认证的回调url,如http://127.0.0.1:8888,注意这里不能用“bdconnect://cancel,bdconnect://success”;

  3. 回车之后会出现百度oauth登录界面,输入帐号和密码之后过了短信验证,浏览器会被重定向到127.0.0.1的一个连接上,但是会打不开,因为没有服务器;

  4. 看地址栏中的参数中已经有access_token了,类似于这样:

    access_token=23.0e1814d2e6861779dc251eaeb5dc2008.2592000.1511768527.2300547068-10218111
  5. 这个token过期时间是1个月,就是说1个月之后要再获取新的token;

7. 唤醒野兽-小度

激动人心的一刻就要来了,启动程序

$ cd $CODE_ROOT
$ node index.js

可以说“小度 小度”唤醒了,也可以用回车唤醒。


#4b****s回复于2017-10-28 16:46:59

5. 安装源码

下载源码

$ git clone https://github.com/dueros/dcs-sdk-js.git
$ export CODE_ROOT=$(pwd)/dcs-sdk-js

安装node库

$ cd $CODE_ROOT$ cnpm install$ cd snowboy$ cnpm install$ cnpm install -g node-pre-gyp$ cnode-pre-gyp clean$ cnode-pre-gyp configure$ cnode-pre-gyp build

6. 修改配置文件

$ cd $CODE_ROOT$ cp dcs_config.json.pi dcs_config.json

修改dcs_config.json中的device_id和access_token,需要你到DuerOS的开发平台用百度帐号先创建一个产品,具体步骤可以参考:

http://developer.dueros.baidu.com/doc/overall/console-guide_markdown

将device_id修改为你创建产品的client_id,access_token通过以下方法获取。

  1. 打开一个浏览器,输入网址:https://openapi.baidu.com/oauth/2.0/authorize?client_id={{CLIENT_ID}}&response_type=token&redirect_uri={{REDIRECT_URI}};

  2. 修改上面网址中的{{CLIENT_ID}}为你创建产品的client_id,{{REDIRECT_URI}}设置为"oob",类似于这样:

    https://openapi.baidu.com/oauth/2.0/authorize?client_id=xxxxxxyyyyyyyzzzzz&response_type=token&redirect_uri=oob
  3. 回车之后会出现百度oauth登录界面,输入帐号和密码之后过了短信验证,浏览器会被重定向到oauth成功的一个页面上;

  4. 看地址栏中的参数中已经有access_token了,类似于这样:

    access_token=23.0e1814d2e6861779dc251eaeb5dc2008.2592000.1511768527.2300547068-10218111
  5. 这个token过期时间是1个月,就是说1个月之后要再获取新的token;

7. 唤醒野兽-小度

激动人心的一刻就要来了,启动程序

$ cd $CODE_ROOT
$ node index.js

可以说“小度 小度”唤醒了,也可以用回车唤醒。


#5哎****喂回复于2017-10-28 19:08:25

纠正下 Android数据线(一头USB,一头Mini USB),应该是 micro USB

0
#6b****s回复于2017-10-29 08:31:24
#5 哎****喂回复
纠正下 Android数据线(一头USB,一头Mini USB),应该是 micro USB

每次编辑帖子格式都要调整,不影响理解先不改了。

0
#7哎****喂回复于2017-10-29 09:59:07
#6 b****s回复
每次编辑帖子格式都要调整,不影响理解先不改了。

这个论坛编辑工具确实比较难用,直接用markdown感觉比这好用。

0
#8小****丶回复于2017-10-29 15:49:24

加油

0
#9b****s回复于2017-10-29 16:45:22
#7 哎****喂回复
这个论坛编辑工具确实比较难用,直接用markdown感觉比这好用。

我是用md写好转成html然后粘贴过来的,但是只要再编辑保存,所有html样式都变了。

0
#10b****s回复于2017-10-29 16:45:38
#8 小****丶回复
加油

一起努力

0
#11D****童回复于2017-10-30 19:05:00

感谢参加论坛活动!写得真的好有条理好棒哟~

麻烦私聊发下您的邮箱地址~

方便后续跟您联系发放奖品


0
TOP