``` service ASR { //grpc service rpc Recognize (stream Request) returns (stream Response) {} //Stub } message Request { //request data bytes audio_data = 1; //audio data in bytes. string user = 2; //user allowed. string language = 3; //language, zh-CN for now. bool speaking = 4; //flag for speaking. bool isEnd = 5; //flag for end. set isEnd to true when you stop asr: //vad:is_speech then speaking=True & isEnd = False, audio data will be appended for the specfied user. //vad:silence then speaking=False & isEnd = False, clear audio buffer and do asr inference. } message Response { //response data. string sentence = 1; //json, includes flag for success and asr text . string user = 2; //same to request user. string language = 3; //same to request language. string action = 4; //server status: //terminate:asr stopped; //speaking:user is speaking, audio data is appended; //decoding: server is decoding; //finish: get asr text, most used. }