UNPKG

echogarden

Version:

An easy-to-use speech toolset. Includes tools for synthesis, recognition, alignment, speech translation, language detection, source separation and more.

68 lines (52 loc) 1.66 kB
import type * as Onnx from 'onnxruntime-node' export function getOnnxSessionOptions(options: OnnxSessionOptions) { const onnxOptions: Onnx.InferenceSession.SessionOptions = { executionProviders: ['cpu'], logSeverityLevel: 3, } if (options) { if (options.executionProviders != null) { let executionProviders = options.executionProviders.filter(provider => { if (!provider) { return false } if (provider === 'dml' && !dmlProviderAvailable()) { return false } return true }) if (!executionProviders.includes('cpu')) { executionProviders.push('cpu') } executionProviders = Array.from(new Set(executionProviders)) onnxOptions.executionProviders = executionProviders as any } else if (options.enableGPU === true && dmlProviderAvailable()) { onnxOptions.executionProviders = ['dml', 'cpu'] } if (options.logSeverityLevel != null) { onnxOptions.logSeverityLevel = options.logSeverityLevel } } return onnxOptions } export function makeOnnxLikeFloat32Tensor(onnxTensor: Onnx.Tensor): OnnxLikeFloat32Tensor { return { data: (onnxTensor.data as Float32Array).slice(), dims: onnxTensor.dims.slice() } } export function dmlProviderAvailable() { const platform = process.platform const arch = process.arch return platform === 'win32' && arch === 'x64' } export interface OnnxLikeFloat32Tensor { readonly data: Float32Array readonly dims: number[] } export interface OnnxSessionOptions { enableGPU?: boolean executionProviders?: OnnxExecutionProvider[] logSeverityLevel?: 0 | 1 | 2 | 3 | 4 } export type OnnxExecutionProvider = 'cpu' | 'dml' | 'cuda' | 'coreml' | 'webgpu'