@comsultia/speech2text
Version:
Google Speech to Text plugin using websockets to communicate with backend
124 lines (95 loc) • 3.94 kB
Markdown
# speech2text
**speech2text** is a client plugin which using [WebSocket](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket) to communicate with [Google Cloud Speech API](https://cloud.google.com/speech-to-text/) backend. Result of successful connection is Speech to Text response to client frontend. Custom backend on WebSocket protocol is required.
## installation
```javascript
npm install @comsultia/speech2text
```
## usage
In gulpfile.js add build.js to your array of JS files (or whatever you like):
```javascript
const jsFiles = [
'./node_modules/@comsultia/speech2text/dist/bundle.js',
'./public/src/js/custom.js'
];
```
*example available in 'node_modules/@comsultia/speech2text/gulpfile.js'*
In your html add build of js files and initialize speech2text plugin
```html
<html>
<head>
<title>WebSocket Google Speech To Text</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<script src="./public/js/complete.min.js"></script>
</head>
<body>
<main>
<h1>WebSocket Google Speech To Text</h1>
<div class="recorder">
<div class="recorder-buttons">
<button id="btn-start-recording" class="btn-start-recording">Start</button>
<button id="btn-stop-recording" class="btn-stop-recording" disabled>Stop</button>
</div>
<div id="result-wrapper" class="result-wrapper">
<div class="loading-holder"></div>
<h2>Result:</h2>
<div id="result" class="result"></div>
</div>
</div>
</main>
<script>
let loadingHolder = document.querySelector('.loading-holder');
// init Speech to Text plugin
speech2text.init({
debug: true, // true if devel mode
url: 'wss://xx.dev.domain.sk:{PORT}/nodejs/',
elementStart: '#btn-start-recording',
elementStop: '#btn-stop-recording',
elementResult: '#result',
defaultTimeout: 3000,
onConnecting: function() {
console.log('waiting for websocket connection....');
},
onConnection: function() {
console.log('websocket connected....');
},
onNotSupported: function() {
console.log('web audio not supported');
},
onStart: function() {
loadingHolder.classList.add('speech-loading');
},
onBlock: function() {
console.log('microphone blocked');
},
onError: function() {
console.log('websocket connection error');
},
onEnd: function() {
loadingHolder.classList.remove('speech-loading');
}
});
</script>
</body>
</html>
```
*example available in 'node_modules/@comsultia/speech2text/index.html'*
## parameters
**debug**: true || false (required)
**url**: url to your WebSocket backend (required)
**elementStart**: querySelector of recording start button element (required)
**elementStop**: querySelector of recording stop button element (required)
**elementResult**: querySelector of result holder element (required)
**defaultTimeout**: number of miliseconds for waiting on last word to stop, 4000ms is default value (optional)
**onConnecting**: callback on starting connecting with WebSocket (optional)
**onConnection**: callback on successfull connection with WebSocket (optional)
**onNotSupported**: callback on web audio not supported in selected browser (optional)
**onStart**: callback on start of recording (optional)
**onBlock**: callback on microphone block (optional)
**onError**: callback on error connecting with WebSocket (optional)
**onEnd**: callback on close WebSocket and end of recording (optional)
## demo
availbale in *'node_modules/@comsultia/speech2text'*
open *'index.html'* in your browser and check browser console with all events logs (don't forget to change url of your websocket backend)