48 lines
2.2 KiB
C
48 lines
2.2 KiB
C
#pragma once
|
|
|
|
extern "C" {
|
|
|
|
// Streaming PCM chunk callback. samples is mono float PCM at 24 kHz, valid
|
|
// only for the duration of the call. Return non-zero to continue, 0 to abort.
|
|
typedef int (*qt3_chunk_cb)(const float *samples, int n_samples,
|
|
void *user_data);
|
|
|
|
// Load the talker + codec/tokenizer GGUFs. use_fa / clamp_fp16 map to
|
|
// qt_init_params (the qt ABI exposes no thread count; ggml uses its own
|
|
// default). Returns 0 on success, non-zero on failure.
|
|
int qt3_load(const char *talker_path, const char *codec_path, int use_fa,
|
|
int clamp_fp16);
|
|
|
|
// Synthesize to a malloc'd float PCM buffer (caller frees via qt3_pcm_free).
|
|
// The synthesis mode (base / custom_voice / voice_design) is auto-detected by
|
|
// qt from the talker GGUF; speaker is honoured only for custom_voice, instruct
|
|
// for voice_design / custom_voice, and ref_samples (+ optional ref_text) drive
|
|
// base-mode cloning. qt enforces the rules and we surface qt_last_error() on
|
|
// QT_STATUS_MODE_INVALID. Writes the sample count to *out_n. Returns NULL on
|
|
// failure (out_n set to 0).
|
|
float *qt3_tts(const char *text, const char *lang, const char *instruct,
|
|
const char *speaker, const float *ref_samples, int ref_n,
|
|
const char *ref_text, long long seed, float temperature,
|
|
int top_k, float top_p, float repetition_penalty,
|
|
int max_new_tokens, int *out_n);
|
|
|
|
// Streaming synthesis: cb is invoked per PCM chunk as audio is produced. Same
|
|
// param semantics as qt3_tts. Returns 0 on success.
|
|
int qt3_tts_stream(const char *text, const char *lang, const char *instruct,
|
|
const char *speaker, const float *ref_samples, int ref_n,
|
|
const char *ref_text, long long seed, float temperature,
|
|
int top_k, float top_p, float repetition_penalty,
|
|
int max_new_tokens, qt3_chunk_cb cb, void *user_data);
|
|
|
|
// Free a buffer returned by qt3_tts.
|
|
void qt3_pcm_free(float *p);
|
|
|
|
// Release the qt context.
|
|
void qt3_unload(void);
|
|
|
|
// Named-speaker introspection (custom_voice models). Returns 0 / NULL when no
|
|
// model is loaded or the index is out of range.
|
|
int qt3_n_speakers(void);
|
|
const char *qt3_speaker_name(int i);
|
|
}
|