diff --git a/src/web/js/events.js b/src/web/js/events.js index 82ffade9ce..1757c05fde 100644 --- a/src/web/js/events.js +++ b/src/web/js/events.js @@ -24,12 +24,20 @@ } }, + /** Handle changing voices. */ + handleVoiceSelect: function(ev) { + var selectedVoice = $('select').val(); + Ui.clearInput(); + Ui.setVoice(selectedVoice); + Ui.setStateFromInput(); + }, + /** Handle form submission. */ handleFormSubmit: function(ev) { var $audio = $('#sound'), sentence = $('#text').val(), + speaker = $('select').val(), query = encodeURIComponent(sentence), - speaker = 'trump', // TODO: Don't hardcode url = '/speak?v=' + speaker + '&s=' + query; ev.preventDefault(); diff --git a/src/web/js/initialize.js b/src/web/js/initialize.js index ebed2a7e9f..a4fac7c987 100644 --- a/src/web/js/initialize.js +++ b/src/web/js/initialize.js @@ -8,6 +8,7 @@ $('form').submit(function(ev) { return Events.handleFormSubmit(ev); }); $('input').on('keyup', function(ev) { return Events.handleTyping(ev); }); $('body').on('keyup', function(ev) { return Events.handleBodyTyping(ev); }); + $('select').on('change', function(ev) { return Events.handleVoiceSelect(ev); }); } /** Init the UI, possibly from a state passed in from the URL. */ diff --git a/src/web/js/ui.js b/src/web/js/ui.js index 76bd901fe7..6d98f9c105 100644 --- a/src/web/js/ui.js +++ b/src/web/js/ui.js @@ -16,6 +16,19 @@ this.setStateFromInput(); }, + /** Set the voice. */ + setVoice: function(voice) { + var vocabulary = Library.getSpeakerVocabulary(voice); + if (vocabulary) { + this.currentVocabulary = vocabulary; + } + }, + + /** Clear the input box. */ + clearInput: function() { + $('input').val(''); + }, + // TODO: Rename, redesign. setFromInput: function(sentence) { var suggestedWords = []; diff --git a/web/index.html b/web/index.html index f47e31cc3c..0ac520e9f2 100644 --- a/web/index.html +++ b/web/index.html @@ -14,6 +14,10 @@
+