ROKID 前端语音快速集成指南

官方教程

(liu.bro2) #21

你好,请问放在aosp代码编译只需要把rokid-blacksiren,speech,grpc,protobuf这几个工程放在aosp代码的根目录就行了吗? 这些工程的源码位置有没有讲究? 文档还有工程依赖一个一个的感觉看晕了,能不能给一个集成的总体目录结构图啊? 还有就是涉及到device等的改动是改rokid的device还是aosp的device了? 麻烦帮忙解答,谢谢! :slight_smile:


(薯) #22

你只需要找个统一的位置就好了,比如我建一个opevvoice,然后把SDK全放进去。我们的device目录是SDK的打包信息不用修改,但最终还是要打包到system.img中,所以需要修改项目里的device. 这个博客我没有办法编辑了,grpc已经不用了,最新的SDK如下:

siren    git clone https://github.com/Rokid/rokid-blacksiren
speech   git clone https://github.com/Rokid/rokid-openvoice-sdk,
poco     git clone https://github.com/Rokid/rokid-openvoice-sdk-deps-poco.git
protobuf git clone https://github.com/Rokid/rokid-openvoice-sdk-deps-protobuf -b android23

(liu.bro2) #23

谢谢!按照我的理解,我编译了一下,没有找到编译出来的产物比如(libsiren.so),我没有改代码的任何内容,想先看看编译出来的效果,麻烦指教一下哪里出了问题:
目录结构:
aosp(6.0.0_r1)
    device (需要添加相关mk文件引用openvoice-sample-android)
        xxxx
            p230
                p230.mk(内容include rokid/rokid-openvoice-sample-android/device/xxxx/p230/openvoice.mk)
    … (aosp模块)
    rokid
        rokid-blacksiren
        rokid-openvoice-sample-android
        rokid-openvoice-sdk
        rokid-openvoice-sdk-deps-poco
        rokid-openvoice-sdk-deps-protobuf


(薯) #24

android的版本是多少


(liu.bro2) #25

android 6.0.0_r1


(薯) #26

这个你加到哪了


(薯) #27

你有这个文件?/device/xxxx/p230/p230.mk
这个文件是我目录,你的代码要看你用的是谁的方案,什么配置,我的用的是xxxx的方案,p230的配置
如果编译成功,lib库在out/target/product/p230/system/lib下,看样子好象SDK都没有编译


(liu.bro2) #28

我没有这个文件,我是在aosp的device下面新建了文件夹xxxx/p230然后新增的文件p230.mk 这个文件内容写入了include rokid/rokid-openvoice-sample-android/device/xxxx/p230/openvoice.mk


(薯) #29

这不是你建的,是你的源码树下的,你编译的时候要lunch一下,那个就是你采用的配置,我的是p230


(liu.bro2) #30

咦,尴尬了,没有做过这种底层开发,我以为这样就可以编出来了,意思是我需要选定一个硬件来编译了?
没有跟硬件无关的编译吗?我印象当中看到有文档说像lblacksiren这种都是硬件无关的啊? 硬件无关的不能单独编译吗?


(薯) #31

你是怎么编译的,发下命令


(liu.bro2) #32

我的编译步骤:
. build/envsetup.sh
lunch
    选了aosp_arm
make -j8


(薯) #33

那这一行include rokid/rokid-openvoice-sample-android/device/xxxx/p230/openvoice.mk应该加在/device/xxxx/aosp_arm/aosp_arm.mk中
xxxx我不知道是什么


(liu.bro2) #34

哦哦,明白了,我其实就想自己弄一段pcm数据给blacksiren(把pcm的生成交给开发者),然后走后面的流程,这样岂不是就不用管硬件了?还是我想多了?


(薯) #35

这个编译只是第一步。mic的一些参数你还是要知道的,比如mic的个数,mic的方位,后面还要根据你的板子上的mic来做一定的修改


(liu.bro2) #36

哈哈,感觉对于普通开发者想接入的门槛有点高啊
make: *** No rule to make target ‘out/target/product/generic/obj/lib/libcurl.so’, needed by ‘out/target/product/generic/obj/SHARED_LIBRARIES/libbsiren_intermediates/LINKED/libbsiren.so’. Stop.
make: *** Waiting for unfinished jobs…
Export includes file: rokid/rokid-blacksiren/thirdparty/libjsonc/Android.mk – out/target/product/generic/obj/SHARED_LIBRARIES/libbsiren_intermediates/export_includes
Export includes file: rokid/rokid-openvoice-sdk/Android.mk – out/target/product/generic/obj/SHARED_LIBRARIES/libspeech_intermediates/export_includes


(薯) #37

有些人的代码缺少开源库,你看下你的/external/下有没有curl这个东西,如果没有,把rokid-openvoice-sample-android/external/下的curl解压拷贝到external下编译,另外把 rokid-openvoice-sdk重命名为speech


(liu.bro2) #38

又遇到问题了:
1、rokid-openvoice-sample-android start_input函数返回类型应该是int,这个已改
2、
external/curl/lib/ssluse.c:96:24: fatal error: openssl/ui.h: No such file or directory
#include <openssl/ui.h>
这个问题不知道怎么解


(薯) #39

这个curl是你的还是我的,还有你看下你的/external/下是openssl还是openssh还是什么其它的


(liu.bro2) #40

curl是拷贝rokid-openvoice-sample下面的 external目录下只有openssh