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
JavaScript
;
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