音声認識の判定の原案です。(デバッグ中)
...
// マイク入力の設定
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:"こんばんは"))
...