Speechly browser client
With the browser-client you can add voice features to any website. It handles authentication, audio capture, network streaming and connection management with the Speechly Voice API.
Check out the browser-client-example repository for a demo app built using this client.
NOTE: If you are using React, you can use our React client instead. It provides the same functionalities, but provides a programming model that is idiomatic to React.
Usage with Node
Install the package:
# Using Yarn
yarn add @speechly/browser-client
# Using NPM
npm install --save @speechly/browser-client
Start using the client:
import { Client, Segment } from '@speechly/browser-client'
const client = new Client({appId: 'your-app-id'})
await client.initialize()
client.onSegmentChange((segment: Segment) => {
console.log('Received new segment from the API:', segment.intent, segment.entities, segment.words, segment.isFinal)
})
await client.startContext()
setTimeout(async function() {
await client.stopContext()
}, 3000)
Usage with browsers
This sample HTML loads Speechly's browser-client
ES modules via a CDN that mirrors npm packages. The page displays a text field that you dictate text into. See browser's console log for raw segment feed from Speechly.
Please use a HTML server to view the example. Running it as a file will not work due to browser's security restrictions. For example run serve .
on command line and open localhost:3000
in your browser.
<html>
<body>
<input id="textBox" type="text" placeholder="Hold to talk..." autofocus>
<script type="module">
import { Client, ClientState } from "https://unpkg.com/@speechly/browser-client/core/speechly.es.js"
const widget = document.getElementById("textBox")
let clientState = ClientState.Disconnected;
const client = new Client({
appId: "your-app-id",
debug: true,
logSegments: true,
})
client.onStateChange(state => {
clientState = state;
});
client.onSegmentChange(segment => {
let transcript = segment.words.map(w => w.value.toLowerCase()).filter(w => w !== "").join(" ");
if (segment.isFinal) transcript += ".";
widget.value = transcript;
});
const startListening = async () => {
switch (clientState) {
case ClientState.Disconnected:
await client.initialize();
case ClientState.Connected:
widget.value = "Listening..."
client.startContext();
break;
}
}
const stopListening = () => {
switch (clientState) {
case ClientState.Starting:
case ClientState.Recording:
client.stopContext();
break;
}
}
widget.addEventListener("mousedown", startListening)
document.addEventListener("mouseup", stopListening)
</script>
</body>
</html>
Documentation
You can find the detailed browser-client API documentation in the GitHub repository.
You can also refer to Speechly Docs for more information.
Contributing
See contribution guide in CONTRIBUTING.md.