ml.apps --- Aplikasi ML#

Modul ml.apps berisi kelas aplikasi ML tingkat tinggi yang dibangun di atas ml.Model.

class MicroSpeech -- Pengenalan Ucapan#

Objek MicroSpeech mengenali kata-kata lisan sederhana menggunakan model MicroSpeech dari TensorFlow Lite untuk Mikrokontroler. Model default mengenali "Yes" dan "No".

class ml.apps.MicroSpeech(preprocessor: ml.Model = None, micro_speech: ml.Model = None, labels: list[str] = None, **kwargs)#

Membuat objek MicroSpeech.

preprocessor adalah ml.Model praprosesor audio. Jika None, /rom/audio_preprocessor.tflite dimuat.

micro_speech adalah ml.Model pengenalan ucapan. Jika None, /rom/micro_speech.tflite dimuat.

labels adalah daftar string label yang sesuai dengan kategori keluaran model. Jika None, label diambil dari micro_speech.labels.

Argumen kata kunci tambahan apa pun diteruskan ke audio.init() (periferal audio diinisialisasi dengan channels=1, frequency=16000, dan samples=320).

audio_callback(buf: bytes) None#

Callback streaming audio internal. Menambahkan sampel baru dari buf ke dalam buffer audio bergilir, memperbarui spektrogram dengan menjalankan model preprocessor pada jendela terbaru, dan memperbarui riwayat prediksi dengan menjalankan model micro_speech pada spektrogram. Biasanya tidak dipanggil langsung.

start_audio_streaming() None#

Membersihkan spektrogram dan riwayat prediksi, lalu memulai streaming audio dengan MicroSpeech.audio_callback sebagai callback. Tidak beroperasi jika streaming sudah dimulai.

stop_audio_streaming() None#

Menghentikan streaming audio.

listen(timeout: int = 0, callback: callable = None, threshold: float = 0.65, filter: list[str] = ['Yes', 'No']) tuple[str, numpy.ndarray]#

Mendengarkan kata yang diucapkan dan mengembalikan tuple (label, average_scores) setelah label yang skor rata-ratanya di atas threshold dan terdapat dalam filter terdeteksi. Memanggil MicroSpeech.start_audio_streaming jika belum streaming.

timeout adalah waktu maksimum dalam milidetik untuk mendengarkan. Jika 0, mendengarkan tanpa batas waktu hingga kata dikenali. Jika -1, berjalan dalam mode non-blocking dan segera mengembalikan (None, average_scores) jika tidak ada kata yang dikenali; streaming audio dibiarkan berjalan. Untuk nilai positif apa pun, mendengarkan selama milidetik tersebut lalu mengembalikan (None, average_scores) saat habis waktu.

callback adalah callable opsional yang dipanggil sebagai callback(label, average_scores) ketika kata dikenali alih-alih dikembalikan. Dikombinasikan dengan timeout=0, ini memungkinkan pengenalan berkelanjutan.

threshold adalah kepercayaan rata-rata minimum yang diperlukan untuk menerima pengenalan.

filter adalah daftar string label yang diterima. Pengenalan di luar daftar ini diabaikan.

_SLICE_SIZE: int#

Jumlah fitur per irisan spektrogram (40).

_SLICE_COUNT: int#

Jumlah irisan spektrogram yang tersimpan (49).

_SLICE_TIME_MS: int#

Rentang waktu satu irisan dalam milidetik (30).

_AUDIO_FREQUENCY: int#

Laju sampel audio dalam Hz (16000).

_SAMPLES_PER_STEP: int#

Sampel audio per langkah 10 ms (160).

_CATEGORY_COUNT: int#

Jumlah kategori keluaran (4).

_AVERAGE_WINDOW_SAMPLES: int#

Jumlah bingkai prediksi yang dirata-ratakan selama jendela pemulusan (1020 // _SLICE_TIME_MS).