71 lines
1.8 KiB
JavaScript
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; |