OpenVINO hackathon: ʻike i ka leo a me nā manaʻo ma Raspberry Pi

Nowemapa 30 - Kekemapa 1 ma Nizhny Novgorod i mālama ʻia OpenVINO hackathon. Ua noi ʻia nā mea komo e hana i kahi prototype o kahi hopena huahana me ka hoʻohana ʻana i ka hāmeʻa Intel OpenVINO. Ua hāʻawi nā mea hoʻonohonoho i ka papa inoa o nā kumuhana pili i hiki ke alakaʻi ʻia e ke koho ʻana i kahi hana, akā ua mau ka hoʻoholo hope me nā hui. Eia kekahi, ua paipai ʻia ka hoʻohana ʻana i nā hiʻohiʻona i komo ʻole i ka huahana.

OpenVINO hackathon: ʻike i ka leo a me nā manaʻo ma Raspberry Pi

Ma kēia ʻatikala e haʻi mākou iā ʻoe e pili ana i ke ʻano o kā mākou hana ʻana i kā mākou prototype o ka huahana, kahi a mākou i lawe mua ai.

ʻOi aku ma mua o 10 mau hui i komo i ka hackathon. Nani ka hele ʻana mai o kekahi o lākou mai nā wahi ʻē aʻe. ʻO ka wahi no ka hackathon ʻo ia ka "Kremlinsky on Pochain" complex, kahi i kau ʻia ai nā kiʻi kahiko o Nizhny Novgorod i loko, i loko o kahi hui! (Ke hoʻomanaʻo nei au iā ʻoe i kēia manawa aia ke keʻena kikowaena o Intel ma Nizhny Novgorod). Ua hāʻawi ʻia nā mea komo i 26 mau hola e kākau i nā code, a ma ka hopena e hōʻike i kā lākou hopena. ʻO kahi pōmaikaʻi ʻokoʻa ʻo ia ka hele ʻana o kahi hālāwai demo e hōʻoia i ka hoʻokō maoli ʻia o nā mea a pau i hoʻolālā ʻia a ʻaʻole i waiho mau manaʻo i ka hōʻike. ʻO nā meaʻai, nā meaʻai, nā meaʻai, nā mea a pau ma laila pū kekahi!

Eia kekahi, hāʻawi ʻo Intel i nā kāmela, Raspberry PI, Neural Compute Stick 2.

Koho hana

ʻO kekahi o nā ʻāpana paʻakikī o ka hoʻomākaukau ʻana no kahi hackathon manuahi ke koho ʻana i kahi paʻakikī. Ua hoʻoholo koke mākou e hele mai me kahi mea ʻaʻole i loko o ka huahana, no ka mea, ua ʻōlelo ka hoʻolaha e mahalo nui ʻia kēia.

Ma ke kālailai ʻana nā hiʻohiʻona, i hoʻokomoʻia i loko o ka huahana i ka hoʻokuʻu i kēia manawa, hiki mākou i ka hopena o ka hapa nui o lākou e hoʻoponopono i nā pilikia o kaʻike kamepiula. Eia kekahi, he mea paʻakikī loa ka loaʻa ʻana o kahi pilikia ma ke kahua o ka ʻike kamepiula ʻaʻole hiki ke hoʻoholo ʻia me ka hoʻohana ʻana iā OpenVINO, a inā paha hiki ke hoʻolālā ʻia, paʻakikī ke ʻimi i nā hiʻohiʻona i hoʻomaʻamaʻa mua ʻia i ka lehulehu. Hoʻoholo mākou e ʻeli i kahi ʻaoʻao ʻē aʻe - i ka hoʻoponopono ʻōlelo a me ka ʻikepili. E noʻonoʻo kākou i kahi hana hoihoi o ka ʻike ʻana i nā manaʻo mai ka ʻōlelo. Pono e ʻōlelo ʻia ua loaʻa iā OpenVINO kahi hiʻohiʻona e hoʻoholo ai i nā manaʻo o ke kanaka ma muli o ko lākou helehelena, akā:

  • Ma ke kumumanaʻo, hiki ke hana i kahi algorithm hui e hana ma ke kani a me ke kiʻi, pono e hāʻawi i ka hoʻonui i ka pololei.
  • ʻOi aku ka nui o ka pahupaʻikiʻi e uhi i kahi ākea; ʻaʻohe palena o ke kani.

E hoʻomohala kākou i ka manaʻo: e lawe kākou i ka manaʻo no ka māhele kūʻai i kumu. Hiki iā ʻoe ke ana i ka hauʻoli o ka mea kūʻai aku ma nā hale kūʻai. Inā ʻoluʻolu ʻole kekahi o nā mea kūʻai aku i ka lawelawe a hoʻomaka e hoʻokiʻekiʻe i ko lākou leo, hiki iā ʻoe ke kāhea koke i ka luna hoʻomalu no ke kōkua.
I kēia hihia, pono mākou e hoʻohui i ka ʻike leo kanaka, e ʻae kēia iā mākou e hoʻokaʻawale i nā limahana hale kūʻai mai nā mea kūʻai aku a hāʻawi i nā ʻikepili no kēlā me kēia kanaka. Eia kekahi, hiki ke nānā i ke ʻano o nā limahana hale kūʻai iā lākou iho, e loiloi i ka lewa i ka hui, kani maikaʻi!

Hoʻokumu mākou i nā koi no kā mākou hopena:

  • ʻO ka liʻiliʻi liʻiliʻi o ka mea i hoʻopaʻa ʻia
  • Hana manawa maoli
  • ʻO ke kumu kūʻai haʻahaʻa
  • Hoʻonui maʻalahi

ʻO ka hopena, koho mākou i ka Raspberry Pi 3 c ma ke ʻano he mea hoʻohana Intel NCS 2.

Eia ka mea nui e hoʻomaopopo i kekahi hiʻohiʻona koʻikoʻi o NCS - ʻoi aku ka maikaʻi me nā hale hoʻolālā CNN maʻamau, akā inā pono ʻoe e holo i kahi kumu hoʻohālike me nā papa maʻamau ma luna o laila, a laila e manaʻo i ka haʻahaʻa haʻahaʻa.

Hoʻokahi wale nō mea liʻiliʻi e hana ai: pono ʻoe e kiʻi i kahi microphone. Hana ʻia kahi microphone USB maʻamau, akā ʻaʻole maikaʻi ia me ka RPI. Akā ma ʻaneʻi ʻo ka hoʻonā ʻoiaʻiʻo "moe kokoke." No ka hoʻopaʻa leo, hoʻoholo mākou e hoʻohana i ka papa Voice Bonnet mai ka pahu Google AIY Voice Kit, aia kahi microphone stereo uea.

Hoʻoiho iā Raspbian mai Hale waihona papahana AIY a hoʻouka iā ia i kahi flash drive, e hoʻāʻo i ka hana ʻana o ka microphone me ka hoʻohana ʻana i kēia kauoha (e hoʻopaʻa i ka leo 5 kekona ka lōʻihi a mālama iā ia i kahi faila):

arecord -d 5 -r 16000 test.wav

Pono wau e hoʻomaopopo koke he paʻakikī loa ka microphone a lawe maikaʻi i ka walaʻau. No ka hoʻoponopono ʻana i kēia, e hele kāua i alsamixer, koho i nā mea hopu a hoʻemi i ka pae hōʻailona hoʻokomo i 50-60%.

OpenVINO hackathon: ʻike i ka leo a me nā manaʻo ma Raspberry Pi
Hoʻololi mākou i ke kino me kahi faila a kūpono nā mea āpau, hiki iā ʻoe ke pani iā ​​​​ia me kahi poʻi

Hoʻohui i kahi pihi hōʻailona

ʻOiai ka wehe ʻana i ka AIY Voice Kit, hoʻomanaʻo mākou aia kahi pihi RGB, hiki ke hoʻomalu ʻia ke kukui hope e nā polokalamu. Huli mākou iā "Google AIY Led" a loaʻa nā palapala: https://aiyprojects.readthedocs.io/en/latest/aiy.leds.html
No ke aha e hoʻohana ʻole ai i kēia pihi e hōʻike i ka manaʻo i ʻike ʻia, he 7 wale nō kā mākou papa, a he 8 kala ke pihi, lawa wale!

Hoʻopili mākou i ke pihi ma o GPIO i Voice Bonnet, hoʻouka i nā hale waihona puke e pono ai (ua hoʻokomo ʻia lākou i ka pahu hoʻoili mai nā papahana AIY)

from aiy.leds import Leds, Color
from aiy.leds import RgbLeds

E hana kāua i kahi ʻōlelo i loaʻa i kēlā me kēia manaʻo ke kala like i ke ʻano o kahi RGB Tuple a me kahi mea o ka papa aiy.leds.Leds, kahi e hoʻonui ai mākou i ke kala:

led_dict = {'neutral': (255, 255, 255), 'happy': (0, 255, 0), 'sad': (0, 255, 255), 'angry': (255, 0, 0), 'fearful': (0, 0, 0), 'disgusted':  (255, 0, 255), 'surprised':  (255, 255, 0)} 
leds = Leds()

A ʻo ka hope, ma hope o kēlā me kēia wānana hou o kahi manaʻo, e hoʻonui mākou i ke kala o ke pihi e like me ia (ma ke kī).

leds.update(Leds.rgb_on(led_dict.get(classes[prediction])))

OpenVINO hackathon: ʻike i ka leo a me nā manaʻo ma Raspberry Pi
Pihi, puhi!

Ke hana nei me ka leo

E hoʻohana mākou i ka pyaudio e hopu i ke kahawai mai ka microphone a me ka webrtcvad e kānana i ka walaʻau a ʻike i ka leo. Eia kekahi, e hana mākou i kahi pila a mākou e hoʻohui asynchronously a wehe i nā ʻāpana leo.

No ka mea he kaupalena ka webrtcvad i ka nui o ka ʻāpana i hāʻawi ʻia - pono e like me 10/20/30ms, a ʻo ka hoʻomaʻamaʻa ʻana o ke kumu hoʻohālike no ka ʻike ʻana i nā manaʻo (e like me kā mākou e aʻo ai ma hope) ua lawe ʻia ma kahi dataset 48kHz, e hana mākou. hopu i nā ʻāpana o ka nui 48000×20ms/1000×1(mono)=960 paita. E hoʻihoʻi ʻo Webrtcvad i ka ʻoiaʻiʻo/False no kēlā me kēia o kēia mau puʻupuʻu, e pili ana i ka hele ʻana a i ʻole ka ʻole o kahi koho balota i ka ʻāpana.

E hoʻokō kākou i kēia loina:

  • E hoʻohui mākou i ka papa inoa i nā ʻāpana i loaʻa ka balota, inā ʻaʻohe koho, a laila e hoʻonui mākou i ka counter o nā ʻāpana hakahaka.
  • Inā he >=30 (600 ms) ka helu helu o nā ʻāpana hakahaka, a laila nānā mākou i ka nui o ka papa inoa o nā ʻāpana i hōʻiliʻili ʻia; inā he >250, a laila hoʻohui mākou i ka pila; inā ʻaʻole, manaʻo mākou ʻo ka lōʻihi. ʻAʻole lawa ka moʻolelo e hānai iā ia i ke kumu hoʻohālike e ʻike ai i ka mea kamaʻilio.
  • Inā he <30 ka helu o nā ʻāpana hakahaka, a ʻoi aku ka nui o ka papa inoa o nā ʻāpana i hōʻiliʻili ʻia ma mua o 300, a laila e hoʻohui mākou i ka ʻāpana i ka pila no ka wānana pololei. (no ka mea, loli nā manaʻo i ka manawa)

 def to_queue(frames):
    d = np.frombuffer(b''.join(frames), dtype=np.int16)
    return d

framesQueue = queue.Queue()
def framesThreadBody():
    CHUNK = 960
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 48000

    p = pyaudio.PyAudio()
    vad = webrtcvad.Vad()
    vad.set_mode(2)
    stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)
    false_counter = 0
    audio_frame = []
    while process:
        data = stream.read(CHUNK)
        if not vad.is_speech(data, RATE):
            false_counter += 1
            if false_counter >= 30:
                if len(audio_frame) > 250:              
                    framesQueue.put(to_queue(audio_frame,timestamp_start))
                    audio_frame = []
                    false_counter = 0

        if vad.is_speech(data, RATE):
            false_counter = 0
            audio_frame.append(data)
            if len(audio_frame) > 300:                
                    framesQueue.put(to_queue(audio_frame,timestamp_start))
                    audio_frame = []

ʻO ka manawa kēia e ʻimi ai i nā hiʻohiʻona i hoʻomaʻamaʻa mua ʻia i ka lehulehu, e hele i github, Google, akā e hoʻomanaʻo he palena kā mākou i ka hoʻolālā i hoʻohana ʻia. He ʻāpana paʻakikī kēia, no ka mea, pono ʻoe e hoʻāʻo i nā hiʻohiʻona ma kāu ʻikepili hoʻokomo, a eia hou, e hoʻohuli iā lākou i ka format kūloko o OpenVINO - IR (Intermediate Representation). Ua ho'āʻo mākou ma kahi o 5-7 mau hoʻonā ʻokoʻa mai github, a inā e hana koke ke kumu hoʻohālike no ka ʻike ʻana i nā manaʻo, a laila me ka ʻike leo pono mākou e kali lōʻihi - hoʻohana lākou i nā hale hana paʻakikī.

Ke nānā nei mākou i kēia mau mea:

A laila e kamaʻilio mākou e pili ana i ka hoʻololi ʻana i nā hiʻohiʻona, e hoʻomaka me ke kumumanaʻo. Loaʻa iā OpenVINO kekahi mau modula:

  • E wehe i Model Zoo, nā hiʻohiʻona i hiki ke hoʻohana a hoʻokomo ʻia i kāu huahana
  • ʻO Model Optimzer, mahalo i hiki iā ʻoe ke hoʻololi i kahi hiʻohiʻona mai nā ʻano hoʻohālikelike like ʻole (Tensorflow, ONNX etc.) i ka format Intermediate Representation, kahi e hana hou ai mākou.
  • ʻAe ʻo Inference Engine iā ʻoe e holo i nā hiʻohiʻona ma ke ʻano IR ma nā kaʻina Intel, Myriad chips a me Neural Compute Stick accelerators
  • ʻO ka mana maikaʻi loa o OpenCV (me ke kākoʻo Inference Engine)
    Hōʻike ʻia kēlā me kēia hiʻohiʻona ma ke ʻano IR e nā faila ʻelua: .xml a me .bin.
    Hoʻololi ʻia nā kumu hoʻohālike i ka hōʻano IR ma o Model Optimizer penei:

    python /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --input_model speaker.hdf5.pb --data_type=FP16 --input_shape [1,512,1000,1]

    --data_type hiki iā ʻoe ke koho i ke ʻano ʻikepili e hana ai ke kumu hoʻohālike. Kākoʻo ʻia ʻo FP32, FP16, INT8. Hiki i ke koho ʻana i ke ʻano ʻikepili maikaʻi loa ke hāʻawi i ka hoʻoikaika hana maikaʻi.
    --input_shape hōʻike i ka nui o ka ʻikepili hoʻokomo. ʻO ka hiki ke hoʻololi ikaika i ka C ++ API, akā ʻaʻole mākou i ʻeli i kēlā mamao a hoʻopaʻa wale iā ia no kekahi o nā hiʻohiʻona.
    A laila, e hoʻāʻo e hoʻouka i ke kumu hoʻohālike i hoʻololi ʻia i ka format IR ma o ka module DNN i OpenCV a hoʻouna iā ia.

    import cv2 as cv
    emotionsNet = cv.dnn.readNet('emotions_model.bin',
                              'emotions_model.xml')
    emotionsNet.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)

    ʻO ka laina hope loa i kēia hihia e ʻae iā ʻoe e hoʻohuli i ka helu ʻana i ka Neural Compute Stick, hana ʻia nā helu kumu ma ke kaʻina hana, akā i ka hihia o ka Raspberry Pi ʻaʻole pono kēia, pono ʻoe i kahi lāʻau.

    ʻO ka mea aʻe, penei ka loiloi: hoʻokaʻawale mākou i kā mākou leo ​​i nā puka makani o kahi nui (no mākou he 0.4 s), hoʻololi mākou i kēlā me kēia puka makani i MFCC, a laila hānai mākou i ka pā.

    emotionsNet.setInput(MFCC_from_window)
    result = emotionsNet.forward()

    A laila, e lawe kākou i ka papa maʻamau no nā puka makani a pau. ʻO kahi hoʻonā maʻalahi, akā no ka hackathon ʻaʻole pono ʻoe e hele mai me kahi mea abstruse, inā loaʻa iā ʻoe ka manawa. He nui kā mākou hana e hana ai, no laila e neʻe kākou - e hana mākou i ka ʻike leo. Pono e hana i kekahi ʻano waihona kahi e mālama ʻia ai nā spectrograms o nā leo i hoʻopaʻa mua ʻia. No ka liʻiliʻi o ka manawa i koe, e hoʻoponopono mākou i kēia pilikia e like me kā mākou hiki.

    ʻO ia hoʻi, hana mākou i kahi palapala no ka hoʻopaʻa ʻana i kahi leo leo (e hana like ia me ka mea i hōʻike ʻia ma luna, aia wale nō ke hoʻopau ʻia mai ka papa keyboard e mālama ai i ka leo i kahi faila).

    E ho'āʻo kākou:

    python3 voice_db/record_voice.py test.wav

    Hoʻopaʻa mākou i nā leo o kekahi poʻe (i kā mākou hihia, ʻekolu mau lālā o ka hui)
    A laila, no kēlā me kēia leo i hoʻopaʻa ʻia, hana mākou i kahi hoʻololi ʻehā wikiwiki, loaʻa kahi spectrogram a mālama iā ia ma ke ʻano he numpy array (.npy):

    for file in glob.glob("voice_db/*.wav"):
            spec = get_fft_spectrum(file)
            np.save(file[:-4] + '.npy', spec)

    Nā kikoʻī hou aku ma ka faila create_base.py
    ʻO ka hopena, ke holo mākou i ka palapala nui, e loaʻa iā mākou nā hoʻopili mai kēia mau spectrograms i ka hoʻomaka ʻana:

    for file in glob.glob("voice_db/*.npy"):
        spec = np.load(file)
        spec = spec.astype('float32')
        spec_reshaped = spec.reshape(1, 1, spec.shape[0], spec.shape[1])
        srNet.setInput(spec_reshaped)
        pred = srNet.forward()
        emb = np.squeeze(pred)

    Ma hope o ka loaʻa ʻana o ka hoʻopili ʻana mai ka ʻāpana kani, hiki iā mākou ke hoʻoholo i ka mea nona ia ma ka lawe ʻana i ka mamao o ka cosine mai ke ala a hiki i nā leo āpau i loko o ka waihona (ʻo ka liʻiliʻi, ʻoi aku ka nui) - no ka demo mākou i kau ai i ka paepae. i ka 0.3):

            dist_list = cdist(emb, enroll_embs, metric="cosine")
            distances = pd.DataFrame(dist_list, columns = df.speaker)

    I ka hopena, makemake wau e hoʻomaopopo i ka wikiwiki o ka inference a ua hiki ke hoʻohui i 1-2 mau hiʻohiʻona hou (no ka laʻana 7 kekona ka lōʻihi i lawe i 2.5 no ka inference). ʻAʻole i loaʻa iā mākou ka manawa e hoʻohui i nā hiʻohiʻona hou a nānā i ke kākau ʻana i kahi prototype o ka noi pūnaewele.

    palapala noi pūnaewele

    ʻO kahi mea nui: lawe mākou i kahi alalai me mākou mai ka home a hoʻonohonoho i kā mākou pūnaewele kūloko, kōkua ia e hoʻopili i ka hāmeʻa a me nā kamepiula ma luna o ka pūnaewele.

    ʻO ka ʻaoʻao hope kahi kaila memo ma waena o ka mua a me Raspberry Pi, e pili ana i ka ʻenehana websocket (http ma luna o ka protocol tcp).

    ʻO ka pae mua ka loaʻa ʻana o ka ʻike i hoʻoponopono ʻia mai ka raspberry, ʻo ia hoʻi, nā wānana i hoʻopaʻa ʻia i json, i mālama ʻia i loko o ka waihona i ka hapalua o kā lākou huakaʻi i hiki ke hana ʻia nā ʻikepili e pili ana i ka manaʻo o ka mea hoʻohana no ka manawa. Hoʻouna ʻia kēia ʻeke i ka ʻaoʻao mua, e hoʻohana ana i ke kau inoa a loaʻa i nā ʻeke mai ka endpoint websocket. Hoʻokumu ʻia ka mīkini hope holoʻokoʻa ma ka ʻōlelo golang; ua koho ʻia ʻo ia no ka mea kūpono ia no nā hana asynchronous, kahi e mālama pono ai nā goroutine.
    Ke komo ʻana i ka hopena, hoʻopaʻa inoa ʻia ka mea hoʻohana a komo i loko o ka hale, a laila loaʻa kāna leka. Hoʻokomo ʻia ka mea hoʻohana a me ka memo i loko o kahi hub maʻamau, kahi i hoʻouna hou ʻia ai nā memo (i ka mua i kākau inoa ʻia), a inā pani ka mea hoʻohana i ka pilina (raspberry a i mua paha), a laila hoʻopau ʻia kāna kau inoa a wehe ʻia ʻo ia mai ka hub.

    OpenVINO hackathon: ʻike i ka leo a me nā manaʻo ma Raspberry Pi
    Ke kali nei mākou i kahi pilina mai ke kua

    ʻO Front-end kahi palapala pūnaewele i kākau ʻia ma JavaScript me ka hoʻohana ʻana i ka waihona React e wikiwiki a maʻalahi i ke kaʻina hana. ʻO ke kumu o kēia noi ke ʻike i ka ʻikepili i loaʻa me ka hoʻohana ʻana i nā algorithm e holo ana ma ka ʻaoʻao hope a pololei ma ka Raspberry Pi. Aia ka ʻaoʻao i ka ʻaoʻao ʻāpana i hoʻokō ʻia me ka hoʻohana ʻana i ka react-router, akā ʻo ka ʻaoʻao nui o ka hoihoi ʻo ia ka ʻaoʻao nui, kahi e loaʻa ai kahi kahawai mau o ka ʻikepili i ka manawa maoli mai ka server e hoʻohana ana i ka ʻenehana WebSocket. ʻIke ʻo Raspberry Pi i kahi leo, hoʻoholo inā no kahi kanaka kikoʻī mai ka waihona i hoʻopaʻa ʻia, a hoʻouna i kahi papa inoa kūpono i ka mea kūʻai aku. Hōʻike ka mea kūʻai i ka ʻikepili pili hou loa, hōʻike i ka avatar o ka mea i ʻōlelo ʻia i loko o ka microphone, a me ka manaʻo e haʻi ai i nā huaʻōlelo.

    OpenVINO hackathon: ʻike i ka leo a me nā manaʻo ma Raspberry Pi
    ʻO ka ʻaoʻao home me nā wānana hou

    hopena

    ʻAʻole hiki ke hoʻopau i nā mea a pau e like me ka mea i hoʻolālā ʻia, ʻaʻole loaʻa iā mākou ka manawa, no laila aia ka manaʻolana nui i ka demo, e hana nā mea āpau. Ma ka hōʻike ʻana ua kamaʻilio lākou e pili ana i ka hana ʻana o nā mea a pau, he aha nā hiʻohiʻona a lākou i lawe ai, he aha nā pilikia i loaʻa iā lākou. ʻO ka hope aʻe ka ʻāpana demo - ua hele ka poʻe loea a puni ka lumi me ka hoʻonohonoho pono ʻole a hoʻokokoke i kēlā me kēia hui e nānā i ka prototype hana. Nīnau mai lākou iā mākou i nā nīnau, pane nā mea a pau i kā lākou ʻāpana, haʻalele lākou i ka pūnaewele ma ka kamepiula, a hana maoli nā mea a pau e like me ka mea i manaʻo ʻia.

    E hoʻomaopopo iaʻu ʻo ka huina kālā o kā mākou hoʻonā he $150:

    • Raspberry Pi 3 ~ $35
    • Google AIY Voice Bonnet (hiki iā ʻoe ke lawe i ka uku haʻiʻōlelo) ~ 15$
    • Intel NCS 2 ~ 100$

    Pehea e hoʻomaikaʻi ai:

    • E hoʻohana i ka hoʻopaʻa inoa mai ka mea kūʻai aku - e noi e heluhelu i ka kikokikona i hana ʻia me ka ʻole
    • Hoʻohui i kekahi mau hiʻohiʻona: hiki iā ʻoe ke hoʻoholo i ke kāne a me ka makahiki ma ka leo
    • E hoʻokaʻawale i nā leo kani i ka manawa like (diarization)

    Waihona: https://github.com/vladimirwest/OpenEMO

    OpenVINO hackathon: ʻike i ka leo a me nā manaʻo ma Raspberry Pi
    Luhi akā hauʻoli mākou

    I ka hopena, makemake wau e mahalo i nā mea hoʻonohonoho a me nā mea komo. Ma waena o nā papahana o nā hui ʻē aʻe, makemake mākou i ka hopena no ka nānā ʻana i nā wahi kaʻa manuahi. No mākou, he ʻike maikaʻi loa ia o ka hoʻoinu ʻana i ka huahana a me ka hoʻomohala ʻana. Manaʻo wau e mālama ʻia nā hanana hoihoi hou aʻe ma nā wahi, me nā kumuhana AI.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka