Skip to content

Commit a636d45

Browse files
authored
Merge pull request #3 from watson-developer-cloud/development
Merge development into master
2 parents 6f9c817 + df20dd5 commit a636d45

File tree

4 files changed

+118
-15
lines changed

4 files changed

+118
-15
lines changed

app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ let username = process.env.TEXT_TO_SPEECH_USERNAME;
2626
let password = process.env.TEXT_TO_SPEECH_PASSWORD;
2727

2828
// On Cloud Foundry, we'll have a VCAP_SERVICES environment variable with credentials.
29-
let vcapCredentials = vcapServices.getCredentials('speech_to_text');
29+
let vcapCredentials = vcapServices.getCredentials('text_to_speech');
3030

3131
// Create appropriate token manager and client.
3232
let client;

src/components/ControlContainer/ControlContainer.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@ import {
1010
Tile,
1111
} from 'carbon-components-react';
1212
import useDataApi from 'use-data-api';
13+
import { sampleText } from '../../data/sampleText';
1314

1415
const VOICES_ENDPOINT = '/api/voices';
1516

1617
const mapVoicesToDropdownItems = voices =>
1718
voices
18-
.sort((voiceA, voiceB) => voiceA.description > voiceB.description)
19+
.sort((voiceA, voiceB) =>
20+
voiceA.description.localeCompare(voiceB.description),
21+
)
1922
.map(voice => {
2023
const colonIndex = voice.description.indexOf(':');
2124
const voicePersonName = voice.description.substring(0, colonIndex);
@@ -44,11 +47,18 @@ export const ControlContainer = ({ onSynthesize }) => {
4447

4548
// Default to initial voice once all voices are loaded.
4649
useEffect(() => {
47-
if (voices[0]) {
48-
setSelectedVoice(mapVoicesToDropdownItems(voices)[0]);
50+
if (voices[1]) {
51+
onSelectVoice(mapVoicesToDropdownItems(voices)[1]);
4952
}
5053
}, [voices]);
5154

55+
const onSelectVoice = voice => {
56+
setSelectedVoice(voice);
57+
58+
const text = sampleText[voice.id];
59+
setText(text);
60+
};
61+
5262
return (
5363
<Tile className="control-container">
5464
<h3 className="container-title">Input</h3>
@@ -60,7 +70,7 @@ export const ControlContainer = ({ onSynthesize }) => {
6070
id="voice-model-dropdown"
6171
label="Select a voice model"
6272
onChange={newModel => {
63-
setSelectedVoice(newModel.selectedItem);
73+
onSelectVoice(newModel.selectedItem);
6474
}}
6575
items={mapVoicesToDropdownItems(voices)}
6676
selectedItem={selectedVoice && selectedVoice.label}

src/components/ServiceContainer/ServiceContainer.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,17 @@ export const ServiceContainer = () => {
2424
setError(createError(TOKEN_ERROR_TITLE, authJson));
2525
}
2626

27-
try {
28-
synthesize({
29-
accessToken: authJson.accessToken,
30-
element: audioElementRef.current,
31-
text,
32-
voice: voice.id,
33-
});
34-
} catch (error) {
35-
setError(createError(SYNTHESIZE_ERROR_TITLE, error));
36-
}
27+
const audio = await synthesize({
28+
accessToken: authJson.accessToken,
29+
autoPlay: false,
30+
element: audioElementRef.current,
31+
text,
32+
voice: voice.id,
33+
});
34+
audio.play().catch(error => {
35+
console.log('ERROR', error);
36+
setError(createError(SYNTHESIZE_ERROR_TITLE, error.message));
37+
});
3738
};
3839

3940
return (

src/data/sampleText.js

Lines changed: 92 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)