Go to the documentation of this file.00001
00002
00003
00004 import threading
00005
00006
00007 from rospeex_core import logging_util
00008 from rospeex_core.sr.base import Session
00009 from rospeex_core.sr.base import ThreadPool
00010 from sync_client import SyncClient
00011 from state import InitState
00012
00013
00014 logger = logging_util.get_logger(__name__)
00015
00016
00017 class StreamingClient(SyncClient):
00018 """ Audio Processor class """
00019 BASE_URL = 'http://rospeex.nict.go.jp/nauth/SocketServlet'
00020 SEND_THREAD_NUM = 2
00021
00022 def __init__(self, language='ja', *args, **kwargs):
00023 super(StreamingClient, self).__init__()
00024 self._streaming_cb_lock = threading.Lock()
00025 self._streaming_cb_list = []
00026
00027
00028 self._pool = ThreadPool(self.SEND_THREAD_NUM)
00029 self._session = Session(
00030 InitState(
00031 self.BASE_URL,
00032 language,
00033 self._pool
00034 )
00035 )
00036 self._session.start()
00037 self._streaming_state = self._session.state()
00038
00039 def support_streaming(self):
00040 """
00041 check support streaming
00042 @returns: True for support streaming / False for NOT support streaming
00043 """
00044 return True
00045
00046 def set_streaming_config(self, language):
00047 """ set streaming config
00048 @param language:
00049 """
00050 state = InitState(self.BASE_URL, language, self._pool)
00051 self._session.set_next_state(state)
00052
00053 def add_streaming_packet(self, packet_type, packet_data):
00054 """ add streaming packet
00055 @param packet_type:
00056 @type packet_type: int
00057 @param packet_data:
00058 @param packet_data: str
00059 """
00060 self._session.add_packet(packet_type, packet_data)
00061
00062 def register_streaming_cb(self, cb):
00063 """
00064 register streaming result callback
00065 @param cb:
00066 @type cb:
00067 """
00068 self._session.register_result_cb(cb)
00069
00070 def unregister_streaming_cb(self, cb):
00071 """
00072 unregister streaming result callback
00073 @param cb:
00074 @type cb:
00075 """
00076 self._session.register_unresult_cb(cb)
00077
00078 def join(self, timeout=None):
00079 """
00080 join streaming client
00081 @param timeout:
00082 @type timeout:
00083 """
00084 self._pool.end()
00085 self._session.join(timeout)