UNPKG

voice-to-text-converter

Version:

A modern, lightweight Node.js package for speech-to-text conversion with support for multiple engines

100 lines 4.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GoogleCloudEngine = exports.VoskEngine = exports.WebSpeechEngine = exports.BaseSpeechRecognitionEngine = void 0; exports.createEngine = createEngine; exports.getAvailableEngines = getAvailableEngines; exports.isEngineAvailable = isEngineAvailable; exports.getEngineCapabilities = getEngineCapabilities; var base_engine_1 = require("./base-engine"); Object.defineProperty(exports, "BaseSpeechRecognitionEngine", { enumerable: true, get: function () { return base_engine_1.BaseSpeechRecognitionEngine; } }); var web_speech_engine_1 = require("./web-speech-engine"); Object.defineProperty(exports, "WebSpeechEngine", { enumerable: true, get: function () { return web_speech_engine_1.WebSpeechEngine; } }); var vosk_engine_1 = require("./vosk-engine"); Object.defineProperty(exports, "VoskEngine", { enumerable: true, get: function () { return vosk_engine_1.VoskEngine; } }); var google_cloud_engine_1 = require("./google-cloud-engine"); Object.defineProperty(exports, "GoogleCloudEngine", { enumerable: true, get: function () { return google_cloud_engine_1.GoogleCloudEngine; } }); const web_speech_engine_2 = require("./web-speech-engine"); const vosk_engine_2 = require("./vosk-engine"); const google_cloud_engine_2 = require("./google-cloud-engine"); const types_1 = require("../types"); /** * Create a speech recognition engine based on configuration */ function createEngine(config) { switch (config.engine) { case 'web-speech': return new web_speech_engine_2.WebSpeechEngine(); case 'vosk': return new vosk_engine_2.VoskEngine(config.modelPath); case 'google-cloud': return new google_cloud_engine_2.GoogleCloudEngine(config.apiKey, config.projectId); default: throw new types_1.SpeechRecognitionError(types_1.SpeechRecognitionErrorType.INVALID_CONFIG, `Unsupported engine: ${config.engine}`); } } /** * Get available engines in current environment */ function getAvailableEngines() { const engines = []; // Check Web Speech API if (new web_speech_engine_2.WebSpeechEngine().isAvailable()) { engines.push('web-speech'); } // Check Vosk if (new vosk_engine_2.VoskEngine().isAvailable()) { engines.push('vosk'); } // Check Google Cloud Speech if (new google_cloud_engine_2.GoogleCloudEngine().isAvailable()) { engines.push('google-cloud'); } return engines; } /** * Check if a specific engine is available */ function isEngineAvailable(engineType) { try { const engine = createEngine({ engine: engineType }); return engine.isAvailable(); } catch { return false; } } function getEngineCapabilities(engineType) { switch (engineType) { case 'web-speech': return { offline: false, streaming: true, fileProcessing: false, realtime: true, languages: new web_speech_engine_2.WebSpeechEngine().getSupportedLanguages(), supportedFormats: ['microphone'] }; case 'vosk': return { offline: true, streaming: true, fileProcessing: true, realtime: true, languages: new vosk_engine_2.VoskEngine().getSupportedLanguages(), supportedFormats: ['wav', 'raw', 'microphone', 'stream'] }; case 'google-cloud': return { offline: false, streaming: true, fileProcessing: true, realtime: true, languages: new google_cloud_engine_2.GoogleCloudEngine().getSupportedLanguages(), maxFileSize: 10 * 1024 * 1024, // 10MB for synchronous recognition supportedFormats: ['wav', 'flac', 'mp3', 'ogg', 'microphone', 'stream'] }; default: throw new Error(`Unknown engine: ${engineType}`); } } //# sourceMappingURL=index.js.map