ハロー ブログ

日々のつぶやき @c2c2c2c221

音声認識の判定

音声認識の判定の原案です。(デバッグ中)

...

        // マイク入力の設定
        let recordingFormat = inputNode.outputFormat(forBus: 0)
        inputNode.installTap(onBus: 0, bufferSize: 2048, format: recordingFormat) { (buffer, time) in
          recognitionReq.append(buffer)
        }
        audioEngine.prepare()
        try audioEngine.start()

        recognitionTask = recognizer.recognitionTask(with: recognitionReq, resultHandler: { (result, error) in
          if let error = error {
            print("\(error)")
          } else {
            DispatchQueue.main.async { [self] in
                self.textView2.text = result?.bestTranscription.formattedString
                self.ninnshiki_f1()
                if ( sed_ble_id != "") {
                    os_log("Robi send ID ready!",sed_ble_id)
                }
            }
          }
        })
...
    func ninnshiki_f1(){
         os_log("ninnshiki: %s",self.textView2.text)
         os_log("ni_no = %d",ni_no)
         
         cur_nishishikigo = textView2.text
         cur_Len_table[ni_no] = textView2.text.count

         if ( ni_no == 0 ) {
           cur_Len = cur_Len_table[ni_no]
         } else {
           cur_Len = cur_Len_table[ni_no] - pre_Len
         }
         if ( cur_Len < 0 ) {
           cur_Len = 0
         }
         print("cur_Len=",cur_Len)
           
         cur_ningo = String(String(cur_nishishikigo).suffix( cur_Len ))
         if ( cur_ningo == "") {
         } else {
           print("認識単位:",cur_ningo)
             search_robi_ninngo()
         }
         pre_Len = cur_Len_table[ni_no]
           
         ni_no = ni_no + 1
         if ( ni_no > 5 ) {
           stopLiveTranscription()
           ni_no = 0
           total_Len = 0
           total_Len_pre = 0
           pre_Len = 0
           try! startLiveTranscription()
         }
    }
    
    func search_robi_ninngo() {
        sed_ble_id = ""
        if ( ni_no == 0 ) {
            ni_no_minus = 0
            ni_no_minus2 = 0
        } else {
            if ( ni_no == 1 ) {
               ni_no_minus = ni_no - 1
               ni_no_minus2 = 0
            } else {
                ni_no_minus = ni_no - 1
                ni_no_minus2 = ni_no - 2
            }
        }
        if ( ni_no == 0 ) {
            lennketu_len = cur_Len
        } else if ( ni_no == 1 ) {
            lennketu_len = cur_Len + cur_Len_table[ ni_no_minus ]
        } else {
            lennketu_len = cur_Len + cur_Len_table[ ni_no_minus ] + cur_Len_table[ ni_no_minus2 ]
        }
        lennketu = String(String(cur_nishishikigo).suffix( lennketu_len ))
        print("rennketu2 ",lennketu)
        for  i in 0..<275  {
            if ( ninshikitable[i].ninshikigo == lennketu) {
                 icchi_ningo = lennketu
                 icchi_ningo_f = 1
                print("rennketu2 Robi 認識語 と一致 ID=",ninshikitable[i].ID)
                sed_ble_id = ninshikitable[i].ID
                return
            }
        }
        print("rennketu fuiichi2")
        if ( ni_no == 0 ) {
            ni_no_minus = 0
        } else {
            ni_no_minus = ni_no - 1
        }
        lennketu_len = cur_Len + cur_Len_table[ ni_no_minus ]
        lennketu = String(String(cur_nishishikigo).suffix( lennketu_len ))
        print("rennketu ",lennketu)
        for  i in 0..<275  {
            if ( ninshikitable[i].ninshikigo == lennketu) {
                 icchi_ningo = lennketu
                 icchi_ningo_f = 1
                 print("rennketu Robi 認識語 と一致 ID=",ninshikitable[i].ID)
                 sed_ble_id = ninshikitable[i].ID
                 return
            }
        }
        print("rennketu fuiichi")
        for  i in 0..<275  {
            if ( ninshikitable[i].ninshikigo == cur_ningo) {
                 icchi_ningo = cur_ningo
                 icchi_ningo_f = 1
                 print("Robi 認識語 と一致 ID=",ninshikitable[i].ID)
                 sed_ble_id = ninshikitable[i].ID
                 return
            }
        }

        icchi_ningo = ""
        icchi_ningo_f = 0
        return
        
    }


    func ninshikitable_init(){
            ninshikitable.append(ninshikidata(ID:"26",ninshikigo:"こんにちは"))
            ninshikitable.append(ninshikidata(ID:"27",ninshikigo:"こんばんは"))
...