UNPKG

voice-to-text-converter

Version:

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

148 lines 5.88 kB
"use strict"; // Browser-specific entry point // This file excludes Node.js-specific engines and utilities var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.VERSION = exports.SUPPORTED_AUDIO_FORMATS = exports.isSupportedAudioFormat = exports.WebSpeechEngine = exports.BaseSpeechRecognitionEngine = exports.VoiceToText = void 0; exports.transcribeFromMicrophone = transcribeFromMicrophone; exports.createVoiceToText = createVoiceToText; exports.getBrowserSupport = getBrowserSupport; exports.getAudioDevices = getAudioDevices; exports.requestMicrophonePermission = requestMicrophonePermission; // Main API var voice_to_text_1 = require("./voice-to-text"); Object.defineProperty(exports, "VoiceToText", { enumerable: true, get: function () { return voice_to_text_1.VoiceToText; } }); // Types and interfaces __exportStar(require("./types"), exports); // Browser-compatible engines only var base_engine_1 = require("./engines/base-engine"); Object.defineProperty(exports, "BaseSpeechRecognitionEngine", { enumerable: true, get: function () { return base_engine_1.BaseSpeechRecognitionEngine; } }); var web_speech_engine_1 = require("./engines/web-speech-engine"); Object.defineProperty(exports, "WebSpeechEngine", { enumerable: true, get: function () { return web_speech_engine_1.WebSpeechEngine; } }); // Browser-compatible utilities var audio_1 = require("./utils/audio"); Object.defineProperty(exports, "isSupportedAudioFormat", { enumerable: true, get: function () { return audio_1.isSupportedAudioFormat; } }); Object.defineProperty(exports, "SUPPORTED_AUDIO_FORMATS", { enumerable: true, get: function () { return audio_1.SUPPORTED_AUDIO_FORMATS; } }); // Default export for convenience const voice_to_text_2 = require("./voice-to-text"); exports.default = voice_to_text_2.VoiceToText; /** * Quick transcription from microphone (browser only) * @param options Microphone and recognition options * @returns Promise resolving to transcription results */ async function transcribeFromMicrophone(options = {}) { const converter = new voice_to_text_2.VoiceToText({ defaultEngine: { engine: 'web-speech' }, defaultRecognitionConfig: { language: options.language, ...options.config } }); await converter.initialize(); return new Promise((resolve, reject) => { const results = []; converter.on('result', (result) => { if (result.isFinal) { results.push(result); } }); converter.on('end', () => { converter.cleanup().then(() => resolve(results)).catch(reject); }); converter.on('error', (error) => { converter.cleanup().then(() => reject(error)).catch(reject); }); converter.fromMicrophone({ duration: options.duration || 5000, ...options }).catch(reject); }); } /** * Create a VoiceToText instance optimized for browser * @param options Configuration options * @returns Configured VoiceToText instance */ function createVoiceToText(options = {}) { return new voice_to_text_2.VoiceToText({ defaultEngine: { engine: 'web-speech' }, defaultRecognitionConfig: { language: options.language || 'en-US', continuous: options.continuous, interimResults: options.interimResults }, debug: options.debug, enableFallback: false // Only Web Speech API available in browser }); } /** * Check browser capabilities * @returns Browser support information */ function getBrowserSupport() { return voice_to_text_2.VoiceToText.getBrowserSupport(); } /** * Get available audio input devices * @returns Promise resolving to list of audio input devices */ async function getAudioDevices() { if (typeof navigator === 'undefined' || !navigator.mediaDevices) { return []; } try { const devices = await navigator.mediaDevices.enumerateDevices(); return devices.filter(device => device.kind === 'audioinput'); } catch (error) { console.error('Failed to enumerate audio devices:', error); return []; } } /** * Request microphone permission * @returns Promise resolving to whether permission was granted */ async function requestMicrophonePermission() { if (typeof navigator === 'undefined' || !navigator.mediaDevices) { return false; } try { const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); // Stop the stream immediately as we only needed permission stream.getTracks().forEach(track => track.stop()); return true; } catch (error) { console.error('Microphone permission denied:', error); return false; } } // Version information exports.VERSION = '1.0.0'; // Auto-attach to window in browser environment if (typeof window !== 'undefined') { window.VoiceToText = voice_to_text_2.VoiceToText; window.voiceToText = { transcribeFromMicrophone, createVoiceToText, getBrowserSupport, getAudioDevices, requestMicrophonePermission }; } //# sourceMappingURL=browser.js.map