UNPKG

@huggingface/transformers

Version:

State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server!

54 lines (49 loc) • 2.17 kB
import { PreTrainedModel } from '../modeling_utils.js'; import { sessionRun } from '../session.js'; import { Tensor } from '../../utils/tensor.js'; export class SnacPreTrainedModel extends PreTrainedModel { main_input_name = 'input_values'; forward_params = ['input_values']; } /** * The SNAC (Multi-Scale Neural Audio Codec) model. */ export class SnacModel extends SnacPreTrainedModel { /** * Encodes the input audio waveform into discrete codes. * @param {Object} inputs Model inputs * @param {Tensor} [inputs.input_values] Float values of the input audio waveform, of shape `(batch_size, channels, sequence_length)`). * @returns {Promise<Record<string, Tensor>>} The output tensors of shape `(batch_size, num_codebooks, sequence_length)`. */ async encode(inputs) { return await sessionRun(this.sessions['encoder_model'], inputs); } /** * Decodes the given frames into an output audio waveform. * @param {Record<string, Tensor>} inputs The encoded audio codes. * @returns {Promise<{audio_values: Tensor}>} The output tensor of shape `(batch_size, num_channels, sequence_length)`. */ async decode(inputs) { return await sessionRun(this.sessions['decoder_model'], inputs); } } export class SnacEncoderModel extends SnacPreTrainedModel { /** @type {typeof PreTrainedModel.from_pretrained} */ static async from_pretrained(pretrained_model_name_or_path, options = {}) { return super.from_pretrained(pretrained_model_name_or_path, { ...options, // Update default model file name if not provided model_file_name: options.model_file_name ?? 'encoder_model', }); } } export class SnacDecoderModel extends SnacPreTrainedModel { /** @type {typeof PreTrainedModel.from_pretrained} */ static async from_pretrained(pretrained_model_name_or_path, options = {}) { return super.from_pretrained(pretrained_model_name_or_path, { ...options, // Update default model file name if not provided model_file_name: options.model_file_name ?? 'decoder_model', }); } }