constructor(tokenizer, {
        skip_prompt = false,
        callback_function = null,
        token_callback_function = null,
        on_chunk_start = null,
        on_chunk_end = null,
        on_finalize = null,
        time_precision = 0.02,
        skip_special_tokens = true,
        decode_kwargs = {},
    } = {}) {
        super(tokenizer, {
            skip_prompt,
            skip_special_tokens,
            callback_function,
            token_callback_function,
            decode_kwargs,
        });
        this.timestamp_begin = tokenizer.timestamp_begin;

        this.on_chunk_start = on_chunk_start;
        this.on_chunk_end = on_chunk_end;
        this.on_finalize = on_finalize;

        this.time_precision = time_precision;

        this.waiting_for_timestamp = false;
    }
@param {import('../tokenizers.js').WhisperTokenizer} tokenizer
@param {Object} options
@param {boolean} [options.skip_prompt=false] Whether to skip the prompt tokens
@param {function(string): void} [options.callback_function=null] Function to call when a piece of text is ready to display
@param {function(bigint[]): void} [options.token_callback_function=null] Function to call when a new token is generated
@param {function(number): void} [options.on_chunk_start=null] Function to call when a new chunk starts
@param {function(number): void} [options.on_chunk_end=null] Function to call when a chunk ends
@param {function(): void} [options.on_finalize=null] Function to call when the stream is finalized
@param {number} [options.time_precision=0.02] Precision of the timestamps
@param {boolean} [options.skip_special_tokens=true] Whether to skip special tokens when decoding
@param {Object} [options.decode_kwargs={}] Additional keyword arguments to pass to the tokenizer's decode method