Sub RecognizeFromFile (Dir As String, FileName As String)
Dim no As NativeObject = speech
Dim nme As NativeObject = Me
If Dir = File.DirAssets Then FileName = FileName.ToLowerCase
nme.RunMethod("RecognizeFromUrl:::", Array(speech, no.GetField("recognizer"), "file://" & File.Combine(Dir, FileName)))
End Sub
#if OBJC
- (void) RecognizeFromUrl:(B4ISpeechRecognition*)speech :(SFSpeechRecognizer*)recognizer :(NSString*)url {
SFSpeechURLRecognitionRequest* request = [[SFSpeechURLRecognitionRequest alloc]initWithURL:[NSURL URLWithString:url]];
[recognizer recognitionTaskWithRequest:request resultHandler:^void (SFSpeechRecognitionResult *res, NSError* error) {
B4IList *l1 = [B4IList new];
[l1 Initialize];
if (res.final) {
for (SFTranscription *trans in res.transcriptions)
[l1 Add:trans.formattedString];;
}
else
[l1 Add:res.bestTranscription.formattedString];
BOOL isFinal = res.isFinal;
if (error != nil) {
[B4I shared].lastError = error;
isFinal = true;
}
[B4IObjectWrapper raiseEventFromDifferentThread:speech :@"_result:::" :@[@(error == nil), @(isFinal), l1]];
}];
}
#End If