Explorar o código

Speech API usage refinements

Tim Burks %!s(int64=9) %!d(string=hai) anos
pai
achega
bfae7ce9b2
Modificáronse 1 ficheiros con 23 adicións e 24 borrados
  1. 23 24
      Examples/Speech/Speech/SpeechRecognitionService.swift

+ 23 - 24
Examples/Speech/Speech/SpeechRecognitionService.swift

@@ -41,31 +41,26 @@ class SpeechRecognitionService {
       // if we aren't already streaming, set up a gRPC connection
       call = client.createCall(host: HOST,
                                method: "/google.cloud.speech.v1beta1.Speech/StreamingRecognize",
-                               timeout: 60.0)
+                               timeout: 120.0)
 
       let metadata = Metadata(["x-goog-api-key":API_KEY,
                                "x-ios-bundle-identifier":Bundle.main.bundleIdentifier!])
       call.start(metadata:metadata)
 
       let recognitionConfig = fileDescriptorSet.createMessage("RecognitionConfig")!
-      recognitionConfig.addField("encoding") {(field) in field.setInt(1)} // LINEAR16
-      recognitionConfig.addField("sample_rate") {(field) in field.setInt(self.sampleRate)}
-      recognitionConfig.addField("language_code") {(field) in field.setString("en-US")}
-      recognitionConfig.addField("max_alternatives") {(field) in field.setInt(30)}
+      recognitionConfig.addField("encoding", value: 1)
+      recognitionConfig.addField("sample_rate", value: self.sampleRate)
+      recognitionConfig.addField("language_code", value: "en-US")
+      recognitionConfig.addField("max_alternatives", value: 30)
 
       let streamingRecognitionConfig = fileDescriptorSet.createMessage("StreamingRecognitionConfig")!
-      streamingRecognitionConfig.addField("config") {
-        (field) in field.setMessage(recognitionConfig)}
-      streamingRecognitionConfig.addField("single_utterance") {
-        (field) in field.setBool(false)}
-      streamingRecognitionConfig.addField("interim_results") {
-        (field) in field.setBool(true)}
+      streamingRecognitionConfig.addField("config", value: recognitionConfig)
+      streamingRecognitionConfig.addField("single_utterance", value: false)
+      streamingRecognitionConfig.addField("interim_results", value: true)
 
       let streamingRecognizeRequest = fileDescriptorSet.createMessage("StreamingRecognizeRequest")!
-      streamingRecognizeRequest.addField("streaming_config")
-      {(field) in field.setMessage (streamingRecognitionConfig)}
+      streamingRecognizeRequest.addField("streaming_config", value:streamingRecognitionConfig)
 
-      streamingRecognizeRequest.display()
       let messageData = streamingRecognizeRequest.data()
       call.sendMessage(data:messageData)
       streaming = true
@@ -74,12 +69,9 @@ class SpeechRecognitionService {
     }
 
     let streamingRecognizeRequest = fileDescriptorSet.createMessage("StreamingRecognizeRequest")!
-    streamingRecognizeRequest.addField("audio_content") {(field) in
-      field.setData(audioData as Data)
-    }
+    streamingRecognizeRequest.addField("audio_content", value: audioData)
     let messageData = streamingRecognizeRequest.data()
     call.sendMessage(data:messageData)
-
   }
 
   func receiveMessage() {
@@ -88,7 +80,17 @@ class SpeechRecognitionService {
         if let responseMessage = self.fileDescriptorSet.readMessage(
           "StreamingRecognizeResponse",
           data:data) {
-          responseMessage.display()
+          responseMessage.forEachField("results") {(field) in
+            field.message().forOneField("is_final") { (field2) in
+              field.message().forOneField("alternatives") { (field) in
+                let alternativeMessage = field.message()
+                if let transcript = alternativeMessage.oneField("transcript") {
+                  let text = transcript.string()
+                  print(text)
+                }
+              }
+            }
+          }
         }
       }
       self.receiveMessage()
@@ -100,14 +102,11 @@ class SpeechRecognitionService {
       return
     }
     streaming = false
-    call.close {
-
-    }
+    call.close {}
   }
-
+  
   func isStreaming() -> Bool {
     return streaming
   }
-  
 }