diff --git a/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Networking/StreamRecognize/STCASRStreamNetworkingManager.h b/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Networking/StreamRecognize/STCASRStreamNetworkingManager.h index 18870fa..d82d2fe 100644 --- a/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Networking/StreamRecognize/STCASRStreamNetworkingManager.h +++ b/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Networking/StreamRecognize/STCASRStreamNetworkingManager.h @@ -32,6 +32,7 @@ * Closes the stream transaction and provides the finished result * @param completionHandler The recognition completion handler */ --(void)closeStreamWithCompletionHandler:(CompletionHandler)completionHandler; +-(void)closeStreamWithCompletionHandler:(CompletionHandler)completionHandler + transformId:(NSString *)transformId; @end diff --git a/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Networking/StreamRecognize/STCASRStreamNetworkingManager.m b/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Networking/StreamRecognize/STCASRStreamNetworkingManager.m index d6654e9..c43f8cb 100644 --- a/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Networking/StreamRecognize/STCASRStreamNetworkingManager.m +++ b/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Networking/StreamRecognize/STCASRStreamNetworkingManager.m @@ -55,7 +55,7 @@ -(void)progressRequest { completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { - + NSError *responseError = [self checkError:error withResponse:response withErrorData:data]; @@ -63,9 +63,9 @@ -(void)progressRequest { self.completionHandler(responseError, nil); return ; } - + self.result = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - + NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; self.transactionId = [httpResponse allHeaderFields][@"X-Transaction-Id"]; self.completionHandler(nil, self.result); @@ -88,16 +88,26 @@ -(void)startStreamWithPackage:(NSString *)package } --(void)closeStreamWithCompletionHandler:(CompletionHandler)completionHandler { + +-(void)closeStreamWithCompletionHandler:(CompletionHandler)completionHandler + transformId:(NSString *)transformId { self.completionHandler = completionHandler; + NSMutableDictionary *bodyParams = @{ }.mutableCopy; + if ([transformId length] != 0) { + bodyParams = @{ + @"transform": @[ @{ + @"id":transformId, + @"type":@"BUILD_IN" + }]}; + }; NSLog(@"DELETE %@",STCASRURLManager.asrRecognizeStreamClose); NSURLSessionDataTask *task = [self taskRequestWithTypeRequest:@"DELETE" - withBody:nil + withBody:[bodyParams count] == 0 ? nil : bodyParams forURLString:self.closeRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { - + NSError *responseError = [self checkError:error withResponse:response withErrorData:data]; @@ -105,9 +115,9 @@ -(void)closeStreamWithCompletionHandler:(CompletionHandler)completionHandler { self.completionHandler(responseError, nil); return ; } - + self.result = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; - + [self finalizeRequest]; }]; [task resume]; diff --git a/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/STCRecognizeKitImplementation.m b/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/STCRecognizeKitImplementation.m index c3cbd5e..7c118fb 100644 --- a/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/STCRecognizeKitImplementation.m +++ b/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/STCRecognizeKitImplementation.m @@ -74,13 +74,16 @@ -(void)streamWithPackage:(NSString *)package } startSessionHandler: startSessionHandler]; } --(void)closeStreamWithCompletionHandler:(RecognizeCompletionHandler)completionHandler { +-(void)closeStreamWithCompletionHandler:(RecognizeCompletionHandler)completionHandler + transformId:(NSString *)transformId { self.streamCompletionHandler = completionHandler; if ( self.streamNetworkingManager ) { [self.streamNetworkingManager closeStreamWithCompletionHandler:^(NSError *error, NSObject *result) { NSDictionary *recognizeResult = (NSDictionary *)result; self.streamCompletionHandler(error, recognizeResult); - }]; + } + transformId: transformId + ]; } } diff --git a/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Streamer/STCStreamRecognizer.m b/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Streamer/STCStreamRecognizer.m index 8488b7d..d8b2f7b 100644 --- a/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Streamer/STCStreamRecognizer.m +++ b/SpeechproSpeechKit/SpeechproSpeechKit/RecognizeKit/Streamer/STCStreamRecognizer.m @@ -36,7 +36,7 @@ -(void)configureRecognizeKit:(void (^)(void)) startSessionHandler; @interface STCStreamRecognizer(Private) -(void)startSocketWithURL:(NSString *)urlString ; --(void)closeSocket; +-(void)closeSocketWithTransformId:(NSString *)transformId; -(void)handleResult:(NSDictionary *)result withError:(NSError *)error; @@ -76,15 +76,16 @@ - (void)setUpPeakPowerHandler: (PeakPowerHandler)peakPowerHandler { - (void)stop { [self.voiceManager stop]; - [self closeSocket]; + [self closeSocketWithTransformId:(@"")]; } --(void)stopWithCompletionHandler:(RecognizingCompletionHandler)completionHandler { +-(void)stopWithCompletionHandler:(RecognizingCompletionHandler)completionHandler + transformId:(NSString*) transformId{ self.recognizeCompletionHandler = nil; self.recognizeStopCompletionHandler = completionHandler; [self.voiceManager stop]; - [self closeSocket]; + [self closeSocketWithTransformId:(transformId)]; } @end @@ -108,29 +109,34 @@ -(void)startSocketWithURL:(NSString *)urlString { if (weakself.recognizeCompletionHandler) { weakself.recognizeCompletionHandler(error, nil); } - [weakself closeSocket]; + [weakself closeSocketWithTransformId:(@"")]; return ; } if (weakself.recognizeCompletionHandler) { weakself.recognizeCompletionHandler(nil, nil); } - + }; - + [self.socket connect]; } --(void)closeSocket { +-(void)closeSocketWithTransformId:(NSString *)transformId { [self.recognizeKit closeStreamWithCompletionHandler:^(NSError *error, NSDictionary *result) { + NSString *text = result[@"text"]; + if ([result[@"interpretation"][transformId] length] != 0) { + text = result[@"interpretation"][transformId]; + } if (self.recognizeCompletionHandler) { - self.recognizeCompletionHandler(error, result[@"text"]); + self.recognizeCompletionHandler(error, text); } if (self.recognizeStopCompletionHandler) { - self.recognizeStopCompletionHandler(error, result[@"text"]); + self.recognizeStopCompletionHandler(error, text); self.recognizeStopCompletionHandler = nil; } - // [self.socket disconnect]; - }]; + // [self.socket disconnect]; + } + transformId: transformId]; } -(void)handleResult:(NSDictionary *)result @@ -139,7 +145,7 @@ -(void)handleResult:(NSDictionary *)result if(self.recognizeCompletionHandler) { self.recognizeCompletionHandler(error, nil); } - + return ; } [self.voiceManager record]; @@ -177,7 +183,7 @@ -(void)configureVoiceManager { if(weakself.peakPowerHandler != nil){ weakself.peakPowerHandler(peakPower); } - + [weakself handleData:data]; }; } diff --git a/SpeechproSpeechKit/SpeechproSpeechKit/STCRecognizeKit.h b/SpeechproSpeechKit/SpeechproSpeechKit/STCRecognizeKit.h index 2c318e1..4ac1403 100644 --- a/SpeechproSpeechKit/SpeechproSpeechKit/STCRecognizeKit.h +++ b/SpeechproSpeechKit/SpeechproSpeechKit/STCRecognizeKit.h @@ -14,7 +14,7 @@ /** * Is the block which is called when recognition data is received - + * @param error Data receiving error. * @param result Responce data.\nIf data received successfully, 'error' is nil */ @@ -22,7 +22,7 @@ typedef void (^RecognizeCompletionHandler) ( NSError *error, NSDictionary *resul /** * Is the block which is called when package list is received - + * @param error Data receiving error. * @param result Responce data.\nIf data received successfully, 'error' is nil */ @@ -71,6 +71,7 @@ withCompletionHandler:(RecognizeCompletionHandler)completionHandler; * Closes the socket * @param completionHandler The response block called when the result is received */ --(void)closeStreamWithCompletionHandler:(RecognizeCompletionHandler)completionHandler; +-(void)closeStreamWithCompletionHandler:(RecognizeCompletionHandler)completionHandler + transformId:(NSString*) transformId; @end diff --git a/SpeechproSpeechKit/SpeechproSpeechKit/STCStreamRecognizing.h b/SpeechproSpeechKit/SpeechproSpeechKit/STCStreamRecognizing.h index 0674fc9..279a48c 100644 --- a/SpeechproSpeechKit/SpeechproSpeechKit/STCStreamRecognizing.h +++ b/SpeechproSpeechKit/SpeechproSpeechKit/STCStreamRecognizing.h @@ -18,7 +18,8 @@ * Stops the recognition * @param completionHandler The recognition completion handler */ --(void)stopWithCompletionHandler:(RecognizingCompletionHandler)completionHandler; +-(void)stopWithCompletionHandler:(RecognizingCompletionHandler)completionHandler + transformId:(NSString*) transformId; -(void)setUpPeakPowerHandler: (PeakPowerHandler)peakPowerHandler; @end