use transcribe_cpp_sys as sys;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[non_exhaustive]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Task {
#[default]
Transcribe,
Translate,
Instruct,
}
impl Task {
pub(crate) fn to_raw(self) -> sys::transcribe_task {
match self {
Task::Transcribe => sys::transcribe_task::TRANSCRIBE_TASK_TRANSCRIBE,
Task::Translate => sys::transcribe_task::TRANSCRIBE_TASK_TRANSLATE,
Task::Instruct => sys::transcribe_task::TRANSCRIBE_TASK_INSTRUCT,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum TimestampKind {
None,
#[default]
Auto,
Segment,
Word,
Token,
}
impl TimestampKind {
pub(crate) fn to_raw(self) -> sys::transcribe_timestamp_kind {
use sys::transcribe_timestamp_kind as K;
match self {
TimestampKind::None => K::TRANSCRIBE_TIMESTAMPS_NONE,
TimestampKind::Auto => K::TRANSCRIBE_TIMESTAMPS_AUTO,
TimestampKind::Segment => K::TRANSCRIBE_TIMESTAMPS_SEGMENT,
TimestampKind::Word => K::TRANSCRIBE_TIMESTAMPS_WORD,
TimestampKind::Token => K::TRANSCRIBE_TIMESTAMPS_TOKEN,
}
}
pub(crate) fn from_raw(raw: sys::transcribe_timestamp_kind) -> Self {
use sys::transcribe_timestamp_kind as K;
match raw {
K::TRANSCRIBE_TIMESTAMPS_AUTO => TimestampKind::Auto,
K::TRANSCRIBE_TIMESTAMPS_SEGMENT => TimestampKind::Segment,
K::TRANSCRIBE_TIMESTAMPS_WORD => TimestampKind::Word,
K::TRANSCRIBE_TIMESTAMPS_TOKEN => TimestampKind::Token,
_ => TimestampKind::None,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum KvType {
#[default]
Auto,
F32,
F16,
}
impl KvType {
pub(crate) fn to_raw(self) -> sys::transcribe_kv_type {
use sys::transcribe_kv_type as K;
match self {
KvType::Auto => K::TRANSCRIBE_KV_TYPE_AUTO,
KvType::F32 => K::TRANSCRIBE_KV_TYPE_F32,
KvType::F16 => K::TRANSCRIBE_KV_TYPE_F16,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Pnc {
#[default]
Default,
Off,
On,
}
impl Pnc {
pub(crate) fn to_raw(self) -> sys::transcribe_pnc_mode {
use sys::transcribe_pnc_mode as P;
match self {
Pnc::Default => P::TRANSCRIBE_PNC_MODE_DEFAULT,
Pnc::Off => P::TRANSCRIBE_PNC_MODE_OFF,
Pnc::On => P::TRANSCRIBE_PNC_MODE_ON,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Itn {
#[default]
Default,
Off,
On,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Diarize {
#[default]
Default,
Off,
On,
}
impl Diarize {
pub(crate) fn to_raw(self) -> sys::transcribe_diarize_mode {
use sys::transcribe_diarize_mode as D;
match self {
Diarize::Default => D::TRANSCRIBE_DIARIZE_MODE_DEFAULT,
Diarize::Off => D::TRANSCRIBE_DIARIZE_MODE_OFF,
Diarize::On => D::TRANSCRIBE_DIARIZE_MODE_ON,
}
}
}
impl Itn {
pub(crate) fn to_raw(self) -> sys::transcribe_itn_mode {
use sys::transcribe_itn_mode as I;
match self {
Itn::Default => I::TRANSCRIBE_ITN_MODE_DEFAULT,
Itn::Off => I::TRANSCRIBE_ITN_MODE_OFF,
Itn::On => I::TRANSCRIBE_ITN_MODE_ON,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Backend {
#[default]
Auto,
Cpu,
CpuAccel,
Metal,
Vulkan,
Cuda,
Rocm,
}
impl Backend {
pub(crate) fn to_raw(self) -> sys::transcribe_backend_request {
use sys::transcribe_backend_request as B;
match self {
Backend::Auto => B::TRANSCRIBE_BACKEND_AUTO,
Backend::Cpu => B::TRANSCRIBE_BACKEND_CPU,
Backend::CpuAccel => B::TRANSCRIBE_BACKEND_CPU_ACCEL,
Backend::Metal => B::TRANSCRIBE_BACKEND_METAL,
Backend::Vulkan => B::TRANSCRIBE_BACKEND_VULKAN,
Backend::Cuda => B::TRANSCRIBE_BACKEND_CUDA,
Backend::Rocm => B::TRANSCRIBE_BACKEND_ROCM,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Feature {
InitialPrompt,
TemperatureFallback,
LongForm,
Cancellation,
Pnc,
Itn,
Diarization,
Vocabulary,
ContextPrompt,
Instruct,
TranscriptPrefix,
}
impl Feature {
pub(crate) fn to_raw(self) -> sys::transcribe_feature {
use sys::transcribe_feature as F;
match self {
Feature::InitialPrompt => F::TRANSCRIBE_FEATURE_INITIAL_PROMPT,
Feature::TemperatureFallback => F::TRANSCRIBE_FEATURE_TEMPERATURE_FALLBACK,
Feature::LongForm => F::TRANSCRIBE_FEATURE_LONG_FORM,
Feature::Cancellation => F::TRANSCRIBE_FEATURE_CANCELLATION,
Feature::Pnc => F::TRANSCRIBE_FEATURE_PNC,
Feature::Itn => F::TRANSCRIBE_FEATURE_ITN,
Feature::Diarization => F::TRANSCRIBE_FEATURE_DIARIZATION,
Feature::Vocabulary => F::TRANSCRIBE_FEATURE_VOCABULARY,
Feature::ContextPrompt => F::TRANSCRIBE_FEATURE_CONTEXT_PROMPT,
Feature::Instruct => F::TRANSCRIBE_FEATURE_INSTRUCT,
Feature::TranscriptPrefix => F::TRANSCRIBE_FEATURE_TRANSCRIPT_PREFIX,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum CommitPolicy {
#[default]
Auto,
OnFinalize,
StablePrefix,
}
impl CommitPolicy {
pub(crate) fn to_raw(self) -> sys::transcribe_stream_commit_policy {
use sys::transcribe_stream_commit_policy as C;
match self {
CommitPolicy::Auto => C::TRANSCRIBE_STREAM_COMMIT_AUTO,
CommitPolicy::OnFinalize => C::TRANSCRIBE_STREAM_COMMIT_ON_FINALIZE,
CommitPolicy::StablePrefix => C::TRANSCRIBE_STREAM_COMMIT_STABLE_PREFIX,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum StreamState {
Idle,
Active,
Finished,
Failed,
}
impl StreamState {
pub(crate) fn from_raw(raw: sys::transcribe_stream_state) -> Self {
use sys::transcribe_stream_state as S;
match raw {
S::TRANSCRIBE_STREAM_ACTIVE => StreamState::Active,
S::TRANSCRIBE_STREAM_FINISHED => StreamState::Finished,
S::TRANSCRIBE_STREAM_FAILED => StreamState::Failed,
_ => StreamState::Idle,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AbiStruct {
ModelLoadParams,
SessionParams,
RunParams,
StreamParams,
Capabilities,
Timings,
Segment,
Word,
Token,
StreamUpdate,
StreamText,
SessionLimits,
Ext,
DeviceInfo,
SpeakerSegment,
}
impl AbiStruct {
pub(crate) fn to_raw(self) -> sys::transcribe_abi_struct {
use sys::transcribe_abi_struct as A;
match self {
AbiStruct::ModelLoadParams => A::TRANSCRIBE_ABI_MODEL_LOAD_PARAMS,
AbiStruct::SessionParams => A::TRANSCRIBE_ABI_SESSION_PARAMS,
AbiStruct::RunParams => A::TRANSCRIBE_ABI_RUN_PARAMS,
AbiStruct::StreamParams => A::TRANSCRIBE_ABI_STREAM_PARAMS,
AbiStruct::Capabilities => A::TRANSCRIBE_ABI_CAPABILITIES,
AbiStruct::Timings => A::TRANSCRIBE_ABI_TIMINGS,
AbiStruct::Segment => A::TRANSCRIBE_ABI_SEGMENT,
AbiStruct::Word => A::TRANSCRIBE_ABI_WORD,
AbiStruct::Token => A::TRANSCRIBE_ABI_TOKEN,
AbiStruct::StreamUpdate => A::TRANSCRIBE_ABI_STREAM_UPDATE,
AbiStruct::StreamText => A::TRANSCRIBE_ABI_STREAM_TEXT,
AbiStruct::SessionLimits => A::TRANSCRIBE_ABI_SESSION_LIMITS,
AbiStruct::Ext => A::TRANSCRIBE_ABI_EXT,
AbiStruct::DeviceInfo => A::TRANSCRIBE_ABI_DEVICE_INFO,
AbiStruct::SpeakerSegment => A::TRANSCRIBE_ABI_SPEAKER_SEGMENT,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ExtSlot {
Run,
Stream,
}
impl ExtSlot {
pub(crate) fn to_raw(self) -> sys::transcribe_ext_slot {
use sys::transcribe_ext_slot as E;
match self {
ExtSlot::Run => E::TRANSCRIBE_EXT_SLOT_RUN,
ExtSlot::Stream => E::TRANSCRIBE_EXT_SLOT_STREAM,
}
}
}