Mulai cepat Apple

Paket Swift untuk iOS dan macOS: baris pemasangan, tempat menaruh kunci, dan panduan mulai cepat.

Paket Swift berjalan di iOS dan macOS pada Apple silicon. Paket ini memakai Neural Engine jika perangkat sudah mengujinya terhadap mesin exact (CPU). Jika tidak, yang dipakai adalah mesin CPU. Kode sumbernya ada di github.com/Quran-Lab/tajweedformer-apple.

Pemasangan

// Package.swift, or in Xcode: File > Add Package Dependencies
.package(url: "https://github.com/Quran-Lab/tajweedformer-apple", from: "3.1.4")
// product TajweedFormer

import TajweedFormer

Kunci

Aplikasi iOS memakai kunci apps, sedangkan build macOS-nya memakai kunci desktop, jadi Anda memerlukan dua kunci. Aplikasi dikenali dari bundle id-nya. Simpan kunci di luar repositori Anda:

// Secrets.xcconfig (git-ignored), the target's base configuration
QURANLAB_KEY = qlk_v1_...

// Info.plist: QuranLabKey = $(QURANLAB_KEY)
let key = Bundle.main.object(forInfoDictionaryKey: "QuranLabKey") as? String

Tambahkan capability App Attest: dengan capability ini aplikasi Anda membuktikan instalasinya, dan rekaman yang dibagikan pelajar tidak diunggah tanpanya (berbagi rekaman).

Client, model, listen, read

import TajweedFormer

func quickStart(key: String) async throws {
    // once per process
    let client = try TajweedClient(key: key)
    // downloads the model once, verifies it, opens and warms it
    let model = try await client.model()
    // asks for the microphone; 1.5 s of silence end the take
    let session = try await model.listen(options: .init(endOnSilenceMs: 1500))
    for await chunk in session.chunks {       // every 320 ms
        print(chunk.decoded.text)             // what the model heard so far
    }
}

Panggil fungsi ini dari sebuah tombol: Task { try await quickStart(key: key) }.

  • Mikrofon. listen() meminta izin dan menangkap audio pada laju sampel perangkat itu sendiri, lalu meneruskan laju itu ke sesi. Karena itu, laju sampel tidak muncul di sini.
  • Akhir take. Dengan endOnSilenceMs, take (satu kali bacaan yang didengarkan SDK) selesai dengan sendirinya 1,5 detik setelah pelajar berhenti. Tanpa opsi ini, panggil try await session.finish().
  • Take berikutnya adalah panggilan model.listen() yang baru.
  • Galat. Setiap galat berupa TajweedError dengan code yang stabil, fix, dan tautan ke halaman Galat.

Yang dikembalikan

Setiap potongan berisi chunk.decoded (teks, setiap token beserta waktu dan tingkat keyakinannya, serta jumlah token yang sudah tetap) 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.