Step by Step带你玩转DuerOS - Python DuerOS SDK[Ubuntu平台] (2)
E****u · E****u 发布于2017-10-21 17:38 浏览:7655 回复:24

有了前面两篇文章的介绍,相信大家已经跃跃欲试了,想最快的体验DuerOS的能力?那当然是下载DuerOS App啦,

度秘App

如果想在硬件上体验,可以尝试树莓派版本,

基于树莓派的个人开发套件

基于树莓派的个人开发套件

项目地址:http://open.duer.baidu.com/doc/device-devkit/intro_markdown

但不论是手机端的App还是基于树莓派的个人开发套件,但都有一个开发者不能忍缺陷:只能“看”,不能“玩”。作为机智神勇的开发者,肯定需要能定制、能修改、能改造的。

新的选择

针对上面的情况,这里提供了一个Python版本的DuerOS。
项目地址:https://github.com/MyDuerOS/DuerOS-Python-Client
之所以选择Python主要出于以下方面的考量:

  • 简单易学,即便是没有编程经验的同学也能快速上手

  • 环境搭建简单,避免各种编译、链接问题

  • AI时代必备技能,AI时代你还不会Python?

当前版本支持功能:

  • 完成OAuth 2.0认证

  • 通过[Enter]键触发唤醒状态

  • 通过[小度小度]触发唤醒状态

  • 支持天气、百科等TTS播放功能

  • 支持音乐播放功能

  • 支持闹铃功能

  • 云端下发Directive显示

后续会支持跟多的功能,比如,

  • 接入百度的技能平台,完成自定义功能

  • 接入百度的配网、配对、设备控制能力

希望大家把使用过程中遇到的问题提出来,便于后续的优化

DuerOS-Python-Client使用说明

运行依赖

  • gstreamer1.0

  • gstreamer1.0-plugins-good

  • gstreamer1.0-plugins-ugly

  • python-gi

  • python-gst

  • gir1.2-gstreamer-1.0

测试环境

  • Ubuntu 16.04

  • Python 2.7.12

使用说明

项目获取

通过git下载代码到本地

# git clone https://github.com/MyDuerOS/DuerOS-Python-Client.git

认证授权

在DuerOS-Python-Client目录下执行

# ./auth.sh

通过[Enter]键触发唤醒状态

在DuerOS-Python-Client目录下执行

# ./enter_trigger_start.sh

然后,每次单击[Enter]键后进行语音输入

通过[小度小度]触发唤醒状态

在DuerOS-Python-Client目录下执行

# ./wakeup_trigger_start.sh

然后,每次通过[小度小度]进行唤醒,然后,进行语音输入

代码结构

DuerOS-Python-Client代码结构如下图所示,

图片

其中,

DuerOS-Python-Client:项目根目录

  • DuerOS-Python-Client/auth.sh:认证授权脚本

  • DuerOS-Python-Client/enter_trigger_start.sh:[Enter]按键触发唤醒脚本

  • DuerOS-Python-Client/wakeup_tirgger_start.sh:[小度小度]触发唤醒脚本

DuerOS-Python-Client/app:应用目录

  • DuerOS-Python-Client/app/auth.py:认证授权实现模块

  • DuerOS-Python-Client/app/enter_trigger_main.py:[Enter]按键触发唤醒实现模块

  • DuerOS-Python-Client/app/wakeup_tirgger_main.py:[小度小度]触发唤醒实现模块

  • DuerOS-Python-Client/app/framework:平台相关目录

  • DuerOS-Python-Client/app/framework/mic.py:录音模块(基于pyaudio)

  • DuerOS-Python-Client/app/framework/player.py:播放模块(基于GStreamer)

  • DuerOS-Python-Client/app/snowboy:snowboy唤醒引擎

DuerOS-Python-Client/sdk:dueros sdk目录

  • DuerOS-Python-Client/sdk/auth.py:授权相关实现

  • DuerOS-Python-Client/sdk/dueros_core.py:dueros交互实现

  • DuerOS-Python-Client/sdk/interface:端能力接口实现

SDK接口说明

授权模块(sdk/auth)

授权接口

用户通过授权接口完成基于OAuth2.0的认证授权流程

def auth_request(client_id=CLIENT_ID, client_secret=CLIENT_SECRET):
'''
发起认证
:param client_id:开发者注册信息
:param client_secret: 开发者注册信息
:return:
'''

DuerOS核心模块(sdk/dueros_core)

启动DuerOS核心模块

DuerOS核心处理模块启动

    def start(self):
    '''
    DuerOS模块启动
    :return:
    '''

停止DuerOS核心模块

DuerOS核心处理模块停止

    def stop(self):
    '''
    DuerOS模块停止
    :return:
    '''

触发语音识别状态

DuerOS核心处理模块进入语音识别状态(唤醒后触发)

    def listen(self):
    '''
    DuerOS进入语音识别状态
    :return:
    '''

directive监听注册

通过监听注册接口,用户可以获得云端下发的directive内容

    def set_directive_listener(self, listener):
    '''
    directive监听器设置
    :param listener: directive监听器
    :return:
    '''

App接口说明

录音模块(app/framework/mic)

开始录音

录音开始控制

    def start(self):
    '''
    开始录音
    :return:
    '''

结束录音

录音结束控制

    def stop(self):
    '''
    结束录音
    :return:
    '''

录音接收实体绑定

将录音组件同,duersdk进行绑定

def link(self, sink):
    '''
    绑定录音接收实体
    :param sink: 录音接收实体
    :return:
    '''

录音实体解除绑定

解除录音组件同duersdk间的绑定

def unlink(self, sink):
    '''
    录音实体解除绑定
    :param sink: 录音接收实体
    :return:
    '''

播放模块(app/framework/player)

开始播放

开始播放控制

  def play(self, uri):
    '''
    播放
    :param uri:播放资源地址
    :return:
    '''

停止播放

停止播放控制

def stop(self):
    '''
    停止
    :return:
    '''

暂停播放

暂停播放控制

def pause(self):
    '''
    暂停
    :return:
    '''

恢复播放

恢复播放控制

def resume(self):
    '''
    回复播放
    :return:
    '''

播放状态监听注册

注册播放状态的监听器

def add_callback(self, name, callback):
    '''
    播放状态回调
    :param name: {eos, ...}
    :param callback: 回调函数
    :return:
    '''
播放时长

当前播放音频的播放时长(模块属性)

@property
def duration(self):
    '''
    播放时长
    :return:
    '''
播放位置

当前播放音频的播放位置(模块属性)

@property
def position(self):
    '''
    播放位置
    :return:
    '''

播放状态

当前播放音频的播放状态(模块属性)

@property
def state(self):
    '''
    播放状态
    :return:
    '''

工具模块(app/utils/prompt_tone)

提示音播放

短暂提示音("du")播放

def play(self):
    '''
    提示音播放
    :return:
    '''


上一篇:

《Step by Step带你玩转DuerOS-智能语音系统的系统组成(1)》


下一篇:

《Step by Step带你玩转DuerOS - Python DuerOS SDK[树莓派平台] (3)》


系列目录:

《Step by Step带你玩转DuerOS - 内容目录》

点赞  ( 2 )
收藏
评论(24)
共24条回复 最后由m****a回复于2018-03-08 09:54
#2智****命回复于2017-10-21 21:16:06

终于有Python版本的了,可喜可贺

0
#3****aj回复于2017-10-21 21:38:05

真是个好消息!!!!

0
#4D****童回复于2017-10-30 10:15:11

更新upupup~

0
#5小****丶回复于2017-10-30 10:37:50

mark

0
#6r****s回复于2017-10-30 11:04:28

这是官方的案例么

0
#7b****s回复于2017-10-30 18:47:38

赞一个

0
#8叶****沙回复于2017-10-30 22:10:18

Mark

0
#9I****n回复于2017-10-31 09:38:24

必须 赞一个 

0
#10w****2回复于2017-10-31 13:12:27

晚上,就开始试试了。

0
#11S****k回复于2017-10-31 21:42:05

mark

0
TOP