Mulai cepat Windows dan Linux

Pustaka C untuk Windows dan Linux: cara membangunnya, tempat menaruh kunci, dan panduan mulai cepat.

SDK native adalah API C untuk aplikasi desktop dan server di Windows dan Linux, pada x86-64. Tidak ada biner siap pakai: pustaka ini dibangun dari tag rilisnya dengan CMake. Kode sumbernya ada di github.com/Quran-Lab/tajweedformer-c.

Pemasangan

Linux
git clone --recurse-submodules --branch 3.1.3 https://github.com/Quran-Lab/tajweedformer-c
cd tajweedformer-c
cmake --preset linux && cmake --build --preset linux
Windows
git clone --recurse-submodules --branch 3.1.3 https://github.com/Quran-Lab/tajweedformer-c
cd tajweedformer-c
cmake --preset windows-clang
cmake --build --preset windows-clang

Kunci

Gunakan kunci desktop. Aplikasi Windows dikenali dari nama keluarga paket atau AppUserModelID-nya, sedangkan aplikasi Linux dari app id-nya yang berformat reverse-DNS. Jangan pernah mengompilasi kunci ke dalam kode sumber yang dipakai bersama:

# the environment, or your app's config file
QURANLAB_KEY=qlk_v1_...

Client, model, session, read

Pustaka C tidak memiliki mikrofon: aplikasi Anda, atau perekam milik sistem, yang memasukkan audio ke dalamnya.

#include <stdio.h>
#include "tajweedformer.h"

static void on_chunk(void *user, const TfChunk *chunk) {
  (void)user, puts(chunk->decoded->text);        /* what the model heard so far */
}

static int recite(const char *key) {
  TfClient *client = tf_client_create(
      &(TfClientOptions){.key = key, .app_id = "com.example.quickstart"});
  TfModel *model = tf_client_model(client, NULL);   /* downloaded once, verified, opened */
  TfSession *session = tf_session_create(
      model, &(TfSessionOptions){.on_chunk = on_chunk, .end_on_silence_ms = 1500});
  float samples[1600];                              /* mono float, 100 ms at 16 kHz */
  size_t n;
  while ((n = fread(samples, sizeof *samples, 1600, stdin)) > 0)
    if (tf_session_push(session, samples, (int)n) < 0) break;
  return tf_session_finish(session);
}

Salurkan audio mikrofon melalui pipe sebagai sampel float mono mentah pada 16 kHz. Di Windows, jalankan baris ini di Command Prompt: Windows PowerShell mengubah byte mentah saat melewati pipe.

Linux
arecord -q -f FLOAT_LE -r 16000 -c 1 -t raw | ./quickstart qlk_v1_...
Windows
ffmpeg -f dshow -i audio="<your microphone>" -ac 1 -ar 16000 -f f32le - | quickstart.exe qlk_v1_...
  • Opsi. Setiap struct opsi boleh berupa NULL atau diisi nol seluruhnya. Nol adalah nilai bawaan setiap field.
  • Galat. Fungsi mengembalikan NULL atau kode negatif. tf_last_error() memberikan pesannya, tf_last_error_fix() memberikan yang perlu dilakukan untuk mengatasinya, dan kodenya sama dengan yang ada di Galat.
  • Tanpa mikrofon. tf_session_listen menjalankan salah satu klip contoh yang disertakan bersama model melalui jalur yang sama.

Yang dikembalikan

chunk->decoded berisi hasil take (satu kali bacaan yang didengarkan SDK) sampai saat ini: teks, serta setiap token beserta waktu dan tingkat keyakinannya. Setelah tf_session_finish, tf_session_heads(session) memberikan keluaran mentah dari take tersebut. Bangun umpan balik sendiri menjelaskan masing-masing.

Nama persisnya untuk versi SDK Anda ada di README repositori dan di tajweedformer.h.