Mulai cepat Android

SDK Kotlin untuk Android: baris pemasangan, tempat menaruh kunci, dan panduan mulai cepat.

SDK Kotlin berupa AAR untuk Android (minSdk 26, arm64-v8a dan armeabi-v7a). Paketnya adalah ai.quranlab:tajweedformer di Maven Central, dan kode sumbernya ada di github.com/Quran-Lab/tajweedformer-android.

Pemasangan

// settings.gradle.kts: mavenCentral() in the repositories
// app/build.gradle.kts
dependencies {
    implementation("ai.quranlab:tajweedformer:3.1.5")
}

Kunci

Gunakan kunci apps. Aplikasi dikenali dari applicationId di Gradle. Simpan kunci di luar repositori Anda:

# local.properties (git-ignored)
QURANLAB_KEY=qlk_v1_...

Baca kunci ini di Gradle dan masukkan ke field BuildConfig atau placeholder manifes. Lalu teruskan ke SDK saat aplikasi dijalankan.

Client, model, listen, read

suspend fun quickStart(context: Context, heard: TextView) {
    // your key; one Client per process
    val client = TajweedClient(context, "qlk_v1_...")
    // the first run downloads and verifies the model
    val model = client.model()
    // asks for the microphone itself; ends 1.5 s after the learner stops
    val session = model.listen(TajweedSessionOptions(endOnSilenceMs = 1500))
    // every chunk: what the model heard so far
    session.chunks.collect { chunk -> heard.text = chunk.decoded.text }
}

Inilah empat panggilan yang dimiliki setiap SDK Quran Lab.

  • Mikrofon. model.listen() meminta izin android.permission.RECORD_AUDIO sendiri bila diperlukan. Jika izin ditolak, Anda mendapat galat microphone_denied. Audio ditangkap pada laju sampel perangkat itu sendiri, jadi laju sampel tidak muncul di kode Anda.
  • Akhir take. Dengan endOnSilenceMs, take (satu kali bacaan yang didengarkan SDK) selesai dengan sendirinya setelah ucapan disusul hening selama durasi yang Anda tetapkan: potongan terakhir memiliki decoded.isFinal, dan session.finish() mengembalikan head dari take itu, yaitu keluaran mentah jaringan. Tanpa opsi ini, take terus berjalan sampai finish() atau cancel() dipanggil.
  • Latar belakang. Take dari listen berakhir saat aplikasi keluar dari latar depan. Mulai take baru saat aplikasi kembali ke latar depan.
  • Audio Anda sendiri. model.session() dan session.push(samples) menggantikan listen(). Selebihnya sama.

Yang dikembalikan

Setiap 320 ms, Anda menerima satu potongan berisi chunk.decoded (hasil take sampai saat ini: text, tokens, words, settled, isFinal) dan chunk.heads (keluaran mentah yang Anda pilih). Bangun umpan balik sendiri menjelaskan masing-masing.

Nama persisnya untuk versi SDK Anda ada di README paket.