diff --git a/README.md b/README.md index f3d24d3..ef14270 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ # DuerOS-Python-Client使用说明 +文档参考 +* [《Step by Step带你玩转DuerOS - Python DuerOS SDK[树莓派平台] (3)》](https://dueros.baidu.com/didp/forum/topic/show?topicId=244796) +* [《Step by Step带你玩转DuerOS - 内容目录》](https://dueros.baidu.com/didp/forum/topic/show?topicId=244800) + ## 运行依赖 * gstreamer1.0 * gstreamer1.0-plugins-good @@ -10,6 +14,10 @@ * Ubuntu 16.04 * Python 2.7.12 ## 使用说明 + +### 树莓派运行环境要求 +需要使用DuerOS的树莓派镜像,不能直接使用树莓派的官方镜像。在DuerOS的官方镜像中已支持了DuerOS-Python-Client运行的环境(如OpenSSL和Python更新),不再需要手动更新,直接运行DuerOS-Python-Client即可。 + ### 项目获取 通过git下载代码到本地 diff --git a/app/duer_link.py b/app/duer_link.py new file mode 100644 index 0000000..8347c4d --- /dev/null +++ b/app/duer_link.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- + +from framework.duerLink.duerLinkIntf import * +import time + +clientId = "BhqAyIkxbhbWPvPMXeE1uHUX" + +duerLink = duerLinkIntf() + +def networkConfigNotify_callback(notify_type): + if notify_type == notify_network_status_type.ENetworkConfigStarted: + print "networkConfig :: ENetworkConfigStarted" + + elif notify_type == notify_network_status_type.ENetworkConfigIng: + print "networkConfig :: ENetworkConfigIng" + + elif notify_type == notify_network_status_type.ENetworkLinkFailed: + print "networkConfig :: ENetworkLinkFailed" + + elif notify_type == notify_network_status_type.ENetworkConfigRouteFailed: + print "networkConfig :: ENetworkConfigRouteFailed" + + elif notify_type == notify_network_status_type.ENetworkConfigExited: + print "networkConfig :: ENetworkConfigExited" + + elif notify_type == notify_network_status_type.ENetworkLinkSucceed: + print "networkConfig :: ENetworkLinkSucceed" + pass + +def networkStatus_callback(status): + if status == InternetConnectivity.UNAVAILABLE: + print "networkStatus :: UNAVAILABLE" + + elif status == InternetConnectivity.AVAILABLE: + print "networkStatus :: AVAILABLE" + + elif status == InternetConnectivity.UNKNOW: + print "networkStatus :: UNKNOW" + + pass + +def dlpDataNotify_callback(jsonData, sessionId): + print "Dlp data recv : %s" % jsonData + response = "{\"to_client\":{\"header\":{\"namespace\":\"dlp.authentication\",\ + \"name\":\"PassportPairReturn\",\"messageId\":\"1cafb8d9-8958-4dec-926c-ac8ee060c840\"},\ + \"payload\":{\"status\":0,\"message\":\"\"}}}" + duerLink.send_dlp_msg_to_all_clients(response) + return " " + + + +duerLink.init_duer_link() + +networkconfigObserver = networkConfigObserver() +networkconfigObserver.add_callback(networkConfigNotify_callback) +duerLink.set_networkConfig_observer(networkconfigObserver) + +networkStatusObserver = networkStatusObserver() +networkStatusObserver.add_callback(networkStatus_callback) +duerLink.set_monitor_observer(networkStatusObserver) + +dlpObserver = dlpDataObserver() +dlpObserver.add_callback(dlpDataNotify_callback) +duerLink.set_dlp_data_observer(dlpObserver) + +duerLink.start_network_recovery() + +duerLink.start_discover_and_bound(clientId) + +while True: + time.sleep(2) + continue diff --git a/app/enter_trigger_main.py b/app/enter_trigger_main.py index 4e30812..ceeede7 100644 --- a/app/enter_trigger_main.py +++ b/app/enter_trigger_main.py @@ -36,7 +36,7 @@ def main(): dueros.start() audio.start() - prompt_tone_player = PromptTone() + prompt_tone_player = PromptTone(player) while True: try: diff --git a/app/framework/duerLink/__init__.py b/app/framework/duerLink/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/framework/duerLink/_duerLink.so b/app/framework/duerLink/_duerLink.so new file mode 100755 index 0000000..e2a0546 Binary files /dev/null and b/app/framework/duerLink/_duerLink.so differ diff --git a/app/framework/duerLink/duerLink.py b/app/framework/duerLink/duerLink.py new file mode 100644 index 0000000..4d2a9b6 --- /dev/null +++ b/app/framework/duerLink/duerLink.py @@ -0,0 +1,426 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.8 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + + + + + +from sys import version_info +if version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_duerLink', [dirname(__file__)]) + except ImportError: + import _duerLink + return _duerLink + if fp is not None: + try: + _mod = imp.load_module('_duerLink', fp, pathname, description) + finally: + fp.close() + return _mod + _duerLink = swig_import_helper() + del swig_import_helper +else: + import _duerLink +del version_info +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + if _newclass: + object.__setattr__(self, name, value) + else: + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr_nondynamic(self, class_type, name, static=1): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + if (not static): + return object.__getattr__(self, name) + else: + raise AttributeError(name) + +def _swig_getattr(self, class_type, name): + return _swig_getattr_nondynamic(self, class_type, name, 0) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except Exception: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except AttributeError: + class _object: + pass + _newclass = 0 + + +try: + import weakref + weakref_proxy = weakref.proxy +except Exception: + weakref_proxy = lambda x: x + + + +_duerLink.Duer_Link_Version_swigconstant(_duerLink) +Duer_Link_Version = _duerLink.Duer_Link_Version + +_duerLink.ENetworkNone_swigconstant(_duerLink) +ENetworkNone = _duerLink.ENetworkNone + +_duerLink.ENetworkConfigExited_swigconstant(_duerLink) +ENetworkConfigExited = _duerLink.ENetworkConfigExited + +_duerLink.ENetworkConfigStarted_swigconstant(_duerLink) +ENetworkConfigStarted = _duerLink.ENetworkConfigStarted + +_duerLink.ENetworkConfigIng_swigconstant(_duerLink) +ENetworkConfigIng = _duerLink.ENetworkConfigIng + +_duerLink.ENetworkConfigRouteFailed_swigconstant(_duerLink) +ENetworkConfigRouteFailed = _duerLink.ENetworkConfigRouteFailed + +_duerLink.ENetworkLinkSucceed_swigconstant(_duerLink) +ENetworkLinkSucceed = _duerLink.ENetworkLinkSucceed + +_duerLink.ENetworkLinkFailed_swigconstant(_duerLink) +ENetworkLinkFailed = _duerLink.ENetworkLinkFailed + +_duerLink.ENetworkRecoveryStart_swigconstant(_duerLink) +ENetworkRecoveryStart = _duerLink.ENetworkRecoveryStart + +_duerLink.ENetworkRecoverySucceed_swigconstant(_duerLink) +ENetworkRecoverySucceed = _duerLink.ENetworkRecoverySucceed + +_duerLink.ENetworkRecoveryFailed_swigconstant(_duerLink) +ENetworkRecoveryFailed = _duerLink.ENetworkRecoveryFailed + +_duerLink.ERaspberryPi_swigconstant(_duerLink) +ERaspberryPi = _duerLink.ERaspberryPi + +_duerLink.EMtk_swigconstant(_duerLink) +EMtk = _duerLink.EMtk + +_duerLink.EHodor_swigconstant(_duerLink) +EHodor = _duerLink.EHodor + +_duerLink.EOther_swigconstant(_duerLink) +EOther = _duerLink.EOther + +_duerLink.ESoftAP_swigconstant(_duerLink) +ESoftAP = _duerLink.ESoftAP + +_duerLink.EBle_swigconstant(_duerLink) +EBle = _duerLink.EBle + +_duerLink.EAll_swigconstant(_duerLink) +EAll = _duerLink.EAll + +_duerLink.EThird_Party_SuNing_swigconstant(_duerLink) +EThird_Party_SuNing = _duerLink.EThird_Party_SuNing + +_duerLink.UNAVAILABLE_swigconstant(_duerLink) +UNAVAILABLE = _duerLink.UNAVAILABLE + +_duerLink.AVAILABLE_swigconstant(_duerLink) +AVAILABLE = _duerLink.AVAILABLE + +_duerLink.UNKNOW_swigconstant(_duerLink) +UNKNOW = _duerLink.UNKNOW + +_duerLink.EDeviceAll_swigconstant(_duerLink) +EDeviceAll = _duerLink.EDeviceAll + +_duerLink.EDeviceTV_swigconstant(_duerLink) +EDeviceTV = _duerLink.EDeviceTV + +_duerLink.EDeviceSuningTV_swigconstant(_duerLink) +EDeviceSuningTV = _duerLink.EDeviceSuningTV + +_duerLink.EDeviceHodor_swigconstant(_duerLink) +EDeviceHodor = _duerLink.EDeviceHodor + +_duerLink.ENotFoundDevice_swigconstant(_duerLink) +ENotFoundDevice = _duerLink.ENotFoundDevice + +_duerLink.EDeviceConnectionFailed_swigconstant(_duerLink) +EDeviceConnectionFailed = _duerLink.EDeviceConnectionFailed + +_duerLink.EDeviceConnectionSuccess_swigconstant(_duerLink) +EDeviceConnectionSuccess = _duerLink.EDeviceConnectionSuccess + +_duerLink.EDeviceDisconnectionFailed_swigconstant(_duerLink) +EDeviceDisconnectionFailed = _duerLink.EDeviceDisconnectionFailed + +_duerLink.EDeviceDisconnectionSuccess_swigconstant(_duerLink) +EDeviceDisconnectionSuccess = _duerLink.EDeviceDisconnectionSuccess + +_duerLink.EDeviceSendMsgFailed_swigconstant(_duerLink) +EDeviceSendMsgFailed = _duerLink.EDeviceSendMsgFailed + +_duerLink.EDeviceSendMsgSuccess_swigconstant(_duerLink) +EDeviceSendMsgSuccess = _duerLink.EDeviceSendMsgSuccess +class NetworkConfigStatusObserver(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, NetworkConfigStatusObserver, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, NetworkConfigStatusObserver, name) + __repr__ = _swig_repr + + def notify_network_config_status(self, notify_type): + return _duerLink.NetworkConfigStatusObserver_notify_network_config_status(self, notify_type) + + def __init__(self): + if self.__class__ == NetworkConfigStatusObserver: + _self = None + else: + _self = self + this = _duerLink.new_NetworkConfigStatusObserver(_self, ) + try: + self.this.append(this) + except Exception: + self.this = this + __swig_destroy__ = _duerLink.delete_NetworkConfigStatusObserver + __del__ = lambda self: None + def __disown__(self): + self.this.disown() + _duerLink.disown_NetworkConfigStatusObserver(self) + return weakref_proxy(self) +NetworkConfigStatusObserver_swigregister = _duerLink.NetworkConfigStatusObserver_swigregister +NetworkConfigStatusObserver_swigregister(NetworkConfigStatusObserver) + +class NetWorkPingStatusObserver(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, NetWorkPingStatusObserver, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, NetWorkPingStatusObserver, name) + __repr__ = _swig_repr + + def network_status_changed(self, status): + return _duerLink.NetWorkPingStatusObserver_network_status_changed(self, status) + + def __init__(self): + if self.__class__ == NetWorkPingStatusObserver: + _self = None + else: + _self = self + this = _duerLink.new_NetWorkPingStatusObserver(_self, ) + try: + self.this.append(this) + except Exception: + self.this = this + __swig_destroy__ = _duerLink.delete_NetWorkPingStatusObserver + __del__ = lambda self: None + def __disown__(self): + self.this.disown() + _duerLink.disown_NetWorkPingStatusObserver(self) + return weakref_proxy(self) +NetWorkPingStatusObserver_swigregister = _duerLink.NetWorkPingStatusObserver_swigregister +NetWorkPingStatusObserver_swigregister(NetWorkPingStatusObserver) + +class NetworkDiscoverStatusObserver(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, NetworkDiscoverStatusObserver, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, NetworkDiscoverStatusObserver, name) + __repr__ = _swig_repr + + def get_link_baiduid(self, baidu_id): + return _duerLink.NetworkDiscoverStatusObserver_get_link_baiduid(self, baidu_id) + + def get_link_bduss(self, bduss): + return _duerLink.NetworkDiscoverStatusObserver_get_link_bduss(self, bduss) + + def __init__(self): + if self.__class__ == NetworkDiscoverStatusObserver: + _self = None + else: + _self = self + this = _duerLink.new_NetworkDiscoverStatusObserver(_self, ) + try: + self.this.append(this) + except Exception: + self.this = this + __swig_destroy__ = _duerLink.delete_NetworkDiscoverStatusObserver + __del__ = lambda self: None + def __disown__(self): + self.this.disown() + _duerLink.disown_NetworkDiscoverStatusObserver(self) + return weakref_proxy(self) +NetworkDiscoverStatusObserver_swigregister = _duerLink.NetworkDiscoverStatusObserver_swigregister +NetworkDiscoverStatusObserver_swigregister(NetworkDiscoverStatusObserver) + +class AccessTokenObserver(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, AccessTokenObserver, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, AccessTokenObserver, name) + __repr__ = _swig_repr + + def access_token_status(self, status, info): + return _duerLink.AccessTokenObserver_access_token_status(self, status, info) + + def __init__(self): + if self.__class__ == AccessTokenObserver: + _self = None + else: + _self = self + this = _duerLink.new_AccessTokenObserver(_self, ) + try: + self.this.append(this) + except Exception: + self.this = this + __swig_destroy__ = _duerLink.delete_AccessTokenObserver + __del__ = lambda self: None + def __disown__(self): + self.this.disown() + _duerLink.disown_AccessTokenObserver(self) + return weakref_proxy(self) +AccessTokenObserver_swigregister = _duerLink.AccessTokenObserver_swigregister +AccessTokenObserver_swigregister(AccessTokenObserver) + +class DuerLinkReceivedDataObserver(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, DuerLinkReceivedDataObserver, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, DuerLinkReceivedDataObserver, name) + __repr__ = _swig_repr + + def NotifyReceivedData(self, jsonPackageData, iSessionID=0): + return _duerLink.DuerLinkReceivedDataObserver_NotifyReceivedData(self, jsonPackageData, iSessionID) + + def __init__(self): + if self.__class__ == DuerLinkReceivedDataObserver: + _self = None + else: + _self = self + this = _duerLink.new_DuerLinkReceivedDataObserver(_self, ) + try: + self.this.append(this) + except Exception: + self.this = this + __swig_destroy__ = _duerLink.delete_DuerLinkReceivedDataObserver + __del__ = lambda self: None + def __disown__(self): + self.this.disown() + _duerLink.disown_DuerLinkReceivedDataObserver(self) + return weakref_proxy(self) +DuerLinkReceivedDataObserver_swigregister = _duerLink.DuerLinkReceivedDataObserver_swigregister +DuerLinkReceivedDataObserver_swigregister(DuerLinkReceivedDataObserver) + +class DuerLinkWrapper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, DuerLinkWrapper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, DuerLinkWrapper, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined") + __repr__ = _swig_repr + __swig_getmethods__["get_instance"] = lambda x: _duerLink.DuerLinkWrapper_get_instance + if _newclass: + get_instance = staticmethod(_duerLink.DuerLinkWrapper_get_instance) + + def release(self): + return _duerLink.DuerLinkWrapper_release(self) + + def init_duer_link(self): + return _duerLink.DuerLinkWrapper_init_duer_link(self) + + def start_network_recovery(self): + return _duerLink.DuerLinkWrapper_start_network_recovery(self) + + def start_discover_and_bound(self, client_id): + return _duerLink.DuerLinkWrapper_start_discover_and_bound(self, client_id) + + def send_dlp_msg_to_all_clients(self, sendBuffer): + return _duerLink.DuerLinkWrapper_send_dlp_msg_to_all_clients(self, sendBuffer) + + def set_networkConfig_observer(self, config_listener): + return _duerLink.DuerLinkWrapper_set_networkConfig_observer(self, config_listener) + + def set_discover_observer(self, deicover_listener): + return _duerLink.DuerLinkWrapper_set_discover_observer(self, deicover_listener) + + def set_monitor_observer(self, ping_listener): + return _duerLink.DuerLinkWrapper_set_monitor_observer(self, ping_listener) + + def set_dlp_data_observer(self, observer): + return _duerLink.DuerLinkWrapper_set_dlp_data_observer(self, observer) + + def start_network_config(self): + return _duerLink.DuerLinkWrapper_start_network_config(self) + + def stop_network_config(self): + return _duerLink.DuerLinkWrapper_stop_network_config(self) + + def ble_client_connected(self): + return _duerLink.DuerLinkWrapper_ble_client_connected(self) + + def ble_client_disconnected(self): + return _duerLink.DuerLinkWrapper_ble_client_disconnected(self) + + def ble_recv_data(self, data, len): + return _duerLink.DuerLinkWrapper_ble_recv_data(self, data, len) + __swig_getmethods__["bluez_recv_data"] = lambda x: _duerLink.DuerLinkWrapper_bluez_recv_data + if _newclass: + bluez_recv_data = staticmethod(_duerLink.DuerLinkWrapper_bluez_recv_data) + + def start_loudspeaker_ctrl_devices_service(self, *args): + return _duerLink.DuerLinkWrapper_start_loudspeaker_ctrl_devices_service(self, *args) + + def send_msg_to_devices_by_spec_type(self, msg_buf, device_type_value): + return _duerLink.DuerLinkWrapper_send_msg_to_devices_by_spec_type(self, msg_buf, device_type_value) + + def disconnect_devices_connections_by_spe_type(self, device_type_value): + return _duerLink.DuerLinkWrapper_disconnect_devices_connections_by_spe_type(self, device_type_value) +DuerLinkWrapper_swigregister = _duerLink.DuerLinkWrapper_swigregister +DuerLinkWrapper_swigregister(DuerLinkWrapper) + +def DuerLinkWrapper_get_instance(): + return _duerLink.DuerLinkWrapper_get_instance() +DuerLinkWrapper_get_instance = _duerLink.DuerLinkWrapper_get_instance + +def DuerLinkWrapper_bluez_recv_data(data, len): + return _duerLink.DuerLinkWrapper_bluez_recv_data(data, len) +DuerLinkWrapper_bluez_recv_data = _duerLink.DuerLinkWrapper_bluez_recv_data + +# This file is compatible with both classic and new-style classes. + + diff --git a/app/framework/duerLink/duerLinkIntf.py b/app/framework/duerLink/duerLinkIntf.py new file mode 100644 index 0000000..0c1e574 --- /dev/null +++ b/app/framework/duerLink/duerLinkIntf.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- + +import duerLink + +class platform_type: + ERaspberryPi = duerLink.ERaspberryPi + EMtk = duerLink.EMtk + EHodor = duerLink.EHodor + EOther = duerLink.EOther + +class auto_config_network_type: + ESoftAP = duerLink.ESoftAP + EBle = duerLink.EBle + EAll = duerLink.EAll + +class notify_network_status_type: + ENetworkNone = duerLink.ENetworkNone + ENetworkConfigExited = duerLink.ENetworkConfigExited + ENetworkConfigStarted = duerLink.ENetworkConfigStarted + ENetworkConfigIng = duerLink.ENetworkConfigIng + ENetworkConfigRouteFailed = duerLink.ENetworkConfigRouteFailed + ENetworkLinkSucceed = duerLink.ENetworkLinkSucceed + ENetworkLinkFailed = duerLink.ENetworkLinkFailed + ENetworkRecoveryStart = duerLink.ENetworkRecoveryStart + ENetworkRecoverySucceed = duerLink.ENetworkRecoverySucceed + ENetworkRecoveryFailed = duerLink.ENetworkRecoveryFailed + +class InternetConnectivity: + UNAVAILABLE = duerLink.UNAVAILABLE + AVAILABLE = duerLink.AVAILABLE + UNKNOW = duerLink.UNKNOW + + +def notify_network_config_status_default_callback(notify_type): + print "Network config notify type %d" % notify_type + +def network_status_changed_callback(current_status): + print "Network status %d" % current_status + +def dlp_data_notify_callback(jsonData, sessionId): + print "Dlp data recv : %s" % jsonData + return " " + +class networkConfigObserver(duerLink.NetworkConfigStatusObserver): + def notify_network_config_status(self, notify_type): + self.callback(notify_type) + + def add_callback(self, callback=notify_network_config_status_default_callback): + self.callback = callback + + +class networkStatusObserver(duerLink.NetWorkPingStatusObserver): + def network_status_changed(self, current_status): + self.callback(current_status) + + def add_callback(self, callback=network_status_changed_callback): + self.callback = callback + + +class dlpDataObserver(duerLink.DuerLinkReceivedDataObserver): + def NotifyReceivedData(self, jsonData, sessionId=0): + reponse = self.callback(jsonData, sessionId) + return reponse + + def add_callback(self, callback=dlp_data_notify_callback): + self.callback = callback + + +class duerLinkIntf(object): + + def __init__(self): + self.duerLinkInstance = duerLink.DuerLinkWrapper.get_instance() + + def init_duer_link(self): + self.duerLinkInstance.init_duer_link() + + def start_network_recovery(self): + self.duerLinkInstance.start_network_recovery() + + def start_discover_and_bound(self, client_id): + self.duerLinkInstance.start_discover_and_bound(client_id) + + def set_networkConfig_observer(self, networkConfig_ob): + self.duerLinkInstance.set_networkConfig_observer(networkConfig_ob) + + def set_monitor_observer(self, monitor_ob): + self.duerLinkInstance.set_monitor_observer(monitor_ob) + + def set_dlp_data_observer(self, dlp_ob): + self.duerLinkInstance.set_dlp_data_observer(dlp_ob) + + def send_dlp_msg_to_all_clients(self, sendBuffer): + self.duerLinkInstance.send_dlp_msg_to_all_clients(sendBuffer) diff --git a/app/framework/duerLink/libBluez.so b/app/framework/duerLink/libBluez.so new file mode 100755 index 0000000..2e38229 Binary files /dev/null and b/app/framework/duerLink/libBluez.so differ diff --git a/app/framework/duerLink/libdbus.so b/app/framework/duerLink/libdbus.so new file mode 100755 index 0000000..54c5381 Binary files /dev/null and b/app/framework/duerLink/libdbus.so differ diff --git a/app/framework/duerLink/libduerLink.so b/app/framework/duerLink/libduerLink.so new file mode 100755 index 0000000..ef975c3 Binary files /dev/null and b/app/framework/duerLink/libduerLink.so differ diff --git a/app/framework/duerLink/libffi.so.6.0.0 b/app/framework/duerLink/libffi.so.6.0.0 new file mode 100755 index 0000000..093624b Binary files /dev/null and b/app/framework/duerLink/libffi.so.6.0.0 differ diff --git a/app/framework/duerLink/libglib-2.0.so.0.4400.1 b/app/framework/duerLink/libglib-2.0.so.0.4400.1 new file mode 100755 index 0000000..78ab607 Binary files /dev/null and b/app/framework/duerLink/libglib-2.0.so.0.4400.1 differ diff --git a/app/framework/mic.py b/app/framework/mic.py index c1f0035..6320e67 100755 --- a/app/framework/mic.py +++ b/app/framework/mic.py @@ -10,7 +10,7 @@ class Audio(object): 录音类(基于pyaudio) ''' - def __init__(self, rate=16000, frames_size=None, channels=None, device_index=None): + def __init__(self, rate=16000, frames_size=None, channels=None, device_index=2): ''' 录音类初始化 :param rate:采样率 diff --git a/app/snowboy/_snowboydetect.so b/app/snowboy/_snowboydetect.so index ea7281b..494fadb 100755 Binary files a/app/snowboy/_snowboydetect.so and b/app/snowboy/_snowboydetect.so differ diff --git a/app/snowboy/snowboydecoder.py b/app/snowboy/snowboydecoder.py index a715eca..8be34cb 100644 --- a/app/snowboy/snowboydecoder.py +++ b/app/snowboy/snowboydecoder.py @@ -91,6 +91,7 @@ def __init__(self, decoder_model, resource_filename=resource.encode(), model_str=model_str.encode()) self.detector.SetAudioGain(audio_gain) self.num_hotwords = self.detector.NumHotwords() + self.detector.ApplyFrontend(True) if len(decoder_model) > 1 and len(sensitivity) == 1: sensitivity = sensitivity*self.num_hotwords diff --git a/app/utils/prompt_tone.py b/app/utils/prompt_tone.py index 44840a3..ef5a479 100644 --- a/app/utils/prompt_tone.py +++ b/app/utils/prompt_tone.py @@ -8,8 +8,8 @@ class PromptTone(object): 提示音播放类(用于唤醒态提示) ''' - def __init__(self): - self.player = Player() + def __init__(self, player): + self.player = player resource = os.path.realpath(os.path.join(os.path.dirname(__file__), '../resources/du.mp3')) self.resource_uri = 'file://{}'.format(resource) diff --git a/app/wakeup_trigger_main.py b/app/wakeup_trigger_main.py index 1dd7106..0b477f0 100644 --- a/app/wakeup_trigger_main.py +++ b/app/wakeup_trigger_main.py @@ -190,7 +190,7 @@ def main(): wakeup_engine.link(dueros) wakeup_engine.set_wakeup_detector(snowboy) - prompt_tone_player = PromptTone() + prompt_tone_player = PromptTone(player) def wakeup(): ''' diff --git a/duer_link.sh b/duer_link.sh new file mode 100755 index 0000000..c1c3a5f --- /dev/null +++ b/duer_link.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +ifconfig | grep wlan0 +if [ $? != "0" ]; then + modprobe -r brcmfmac + modprobe brcmfmac +fi + +WORK_PATH="${PWD}" +export PYTHONPATH=${WORK_PATH}:${PYTHONPATH} +export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${WORK_PATH}/app/framework/duerLink/ + +python ./app/duer_link.py diff --git a/sdk/interface/cxhelper/__init__.py b/sdk/interface/cxhelper/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/sdk/interface/cxhelper/_cxhelper.so b/sdk/interface/cxhelper/_cxhelper.so new file mode 100755 index 0000000..8f5c445 Binary files /dev/null and b/sdk/interface/cxhelper/_cxhelper.so differ diff --git a/sdk/interface/cxhelper/cxhelper.py b/sdk/interface/cxhelper/cxhelper.py new file mode 100644 index 0000000..ad33064 --- /dev/null +++ b/sdk/interface/cxhelper/cxhelper.py @@ -0,0 +1,82 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.2 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + + + + + +from sys import version_info +if version_info >= (2,6,0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_cxhelper', [dirname(__file__)]) + except ImportError: + import _cxhelper + return _cxhelper + if fp is not None: + try: + _mod = imp.load_module('_cxhelper', fp, pathname, description) + finally: + fp.close() + return _mod + _cxhelper = swig_import_helper() + del swig_import_helper +else: + import _cxhelper +del version_info +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static): + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,0) + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + raise AttributeError(name) + +def _swig_repr(self): + try: strthis = "proxy of " + self.this.__repr__() + except: strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except AttributeError: + class _object : pass + _newclass = 0 + + + +def getAngle(): + return _cxhelper.getAngle() +getAngle = _cxhelper.getAngle + +def getVersion(): + return _cxhelper.getVersion() +getVersion = _cxhelper.getVersion +# This file is compatible with both classic and new-style classes. + + diff --git a/sdk/interface/mic_array.py b/sdk/interface/mic_array.py new file mode 100644 index 0000000..e69de29