react-speech
v1.0.2
Published
React component for the web speech synthesis api
Maintainers
Readme
react-speech
React component for the Web Speech api.
The Web Speech API aims to enable web developers to provide, in a web browser, speech-input and text-to-speech output.
The Web Speech API comes in two parts, speech synthesis and speech recognition. This react component supports speech synthesis, text-to-speech.
Install
In order to install react-speech, simply run
$ npm install react-speech --save Simple Usage
Using react-speech, is pretty simple, simply React.render the speech component, setting the text property, which is rendered to speech.
import React from 'react';
import Speech from 'react-speech';
React.render(
<Speech text="Welcome to react speech" />,
document.getElementById('node')
);
Speech Component API
Here is the full API for the <Speech> component, these properties can be set on an instance of Speech:
Property | Type | Default | Required | Description
-------- | ---- | ------- | -------- |-----------
styles | Object | Styles | no | see Styles
text | String | none | yes | This attribute specifies the text to be synthesized and spoken for this utterance. Max 250 characters. See Issues with long text
pitch | Number | 1 | no | This attribute specifies the speaking pitch for the utterance. min=0 max=2 step=1
rate | Number | 1 | no | This attribute specifies the speaking rate for the utterance. max=3.5 min=0.5 step=0.5
volume | Number | 1 | no | This attribute specifies the speaking volume for the utterance. max=1 min=0 step=0.1
lang | String | en-GB | no | This attribute specifies the language of the speech synthesis for the utterance. EN-GB, EN-US|
voice | String | Daniel | no | A voice as a string, please check supported voices for your browser.|
textAsButton | bool| no | no | Display text as a button.|
displayText | string| no | no | When displaying text as a button you can use this to display a different text string.|
stop | bool | false | no | Display a stop button.|
pause | bool | false | no | Display a pause button.|
resume | bool | false | no | Display a resume button.|
disabled | bool | false | no | Disables speech.|
Styles
If you would like to override the default styles, simply pass in a style object. react-speech like React uses inline styles whose key is the camelCased version of the style name, and whose value is the style's value, usually a string.
const style = {
container: { },
text: { },
buttons: { },
play: {
hover: {
backgroundColor: 'GhostWhite'
},
button: {
cursor: 'pointer',
pointerEvents: 'none',
outline: 'none',
backgroundColor: 'Gainsboro',
border: 'solid 1px rgba(255,255,255,1)',
borderRadius: 6
}
},
pause: {
play: { }
hover: { }
},
stop: {
play: {
hover: { },
button: { }
},
resume: {
play: {
hover: { },
button: { }
}
};
Issues with long text
http://stackoverflow.com/questions/21947730/chrome-speech-synthesis-with-longer-texts
Supported broswers
If a browser does not support Web Speech API we simply display the text specified. If you are unsure about your browser:
http://caniuse.com/#feat=web-speech
Development
$ npm install
$ npm startnavigate to http://localhost:3000
Run tests
$ npm testRun build
$ npm run buildor
$ npm run dist$ npm run dist.minExamples
Here are some examples of using react-speech
Default settings
<Speech
text="I have the default settings" />
Altered my voice
<Speech
text="I have altered my voice"
voice="Google UK English Female" />Set button colour
const style = {
play: {
button: {
width: '28',
height: '28',
cursor: 'pointer',
pointerEvents: 'none',
outline: 'none',
backgroundColor: 'yellow',
border: 'solid 1px rgba(255,255,255,1)',
borderRadius: 6
},
}
};
<Speech
styles={style}
text="I have changed the colour of the play button and made it smaller" />Set pitch, rate and volume
<Speech
text="I have altered the pitch, rate and volume of my voice"
pitch="0.5"
rate="0.5"
volume="0.1"
lang="en-GB"
voice="Daniel" />Set default properties
<Speech
text="I have all properties set to their default"
pitch="1"
rate="1"
volume="1"
lang="en-GB"
voice="Google UK English Male" />Display pause, stop and resume buttons
<Speech
stop={true}
pause={true}
resume={true}
text="I am displaying all buttons" />
Display text as a button, and override display text
const textstyle = {
play: {
hover: {
backgroundColor: 'black',
color:'white'
},
button: {
padding:'4',
fontFamily: 'Helvetica',
fontSize: '1.0em',
cursor: 'pointer',
pointerEvents: 'none',
outline: 'none',
backgroundColor: 'inherit',
border: 'none'
},
}
<Speech
styles={textstyle}
textAsButton={true}
displayText="Hello"
text="I have text displayed as a button" />
License
See the License file.

