stt-vosk-py-node/client-example.js

71 lines
1.8 KiB
JavaScript

// Example client that can connect to the WebSocket STT API
const WebSocket = require('ws');
const fs = require('fs');
class STTClient {
constructor(serverUrl = 'ws://localhost:3000') {
this.ws = new WebSocket(serverUrl);
this.setupWebSocket();
}
setupWebSocket() {
this.ws.on('open', () => {
console.log('Connected to STT server');
});
this.ws.on('message', (data) => {
const message = JSON.parse(data);
if (message.type === 'transcription') {
console.log('Transcription:', message.text);
} else if (message.type === 'error') {
console.error('STT Error:', message.message);
}
});
this.ws.on('close', () => {
console.log('Disconnected from STT server');
});
this.ws.on('error', (error) => {
console.error('WebSocket error:', error);
});
}
// Send audio file for transcription
sendAudioFile(filePath) {
if (this.ws.readyState === WebSocket.OPEN) {
const audioData = fs.readFileSync(filePath);
this.ws.send(audioData);
console.log(`Sent audio file: ${filePath}`);
} else {
console.error('WebSocket not connected');
}
}
// Send raw audio buffer
sendAudioBuffer(audioBuffer) {
if (this.ws.readyState === WebSocket.OPEN) {
this.ws.send(audioBuffer);
} else {
console.error('WebSocket not connected');
}
}
close() {
this.ws.close();
}
}
// Example usage
if (require.main === module) {
const client = new STTClient();
// Example: Send an audio file
// client.sendAudioFile('./test-audio.wav');
// Keep the process alive
process.stdin.resume();
}
module.exports = STTClient;