Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(613)

Unified Diff: chrome/browser/resources/app_list/speech_manager.js

Issue 992173002: Delete the old hotwording integration. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@hotword-remove-disable-option
Patch Set: Rebase. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/app_list/speech_manager.js
diff --git a/chrome/browser/resources/app_list/speech_manager.js b/chrome/browser/resources/app_list/speech_manager.js
deleted file mode 100644
index 74f4668ffdb81ad888fe4d856acde22bcac1da61..0000000000000000000000000000000000000000
--- a/chrome/browser/resources/app_list/speech_manager.js
+++ /dev/null
@@ -1,312 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview The class to Manage both offline / online speech recognition.
- */
-
-<include src="plugin_manager.js">
-<include src="audio_manager.js">
-<include src="speech_recognition_manager.js">
-
-cr.define('speech', function() {
- 'use strict';
-
- /**
- * The state of speech recognition.
- *
- * @enum {string}
- */
- var SpeechState = {
- READY: 'READY',
- HOTWORD_RECOGNIZING: 'HOTWORD_RECOGNIZING',
- RECOGNIZING: 'RECOGNIZING',
- IN_SPEECH: 'IN_SPEECH',
- STOPPING: 'STOPPING',
- NETWORK_ERROR: 'NETWORK_ERROR'
- };
-
- /**
- * The time to show the network error message in seconds.
- *
- * @const {number}
- */
- var SPEECH_ERROR_TIMEOUT = 3;
-
- /**
- * Checks the prefix for the hotword module based on the language. This is
- * fragile if the file structure has changed.
- */
- function getHotwordPrefix() {
- var prefix = navigator.language.toLowerCase();
- if (prefix == 'en-gb')
- return prefix;
- var hyphen = prefix.indexOf('-');
- if (hyphen >= 0)
- prefix = prefix.substr(0, hyphen);
- if (prefix == 'en')
- prefix = '';
- return prefix;
- }
-
- /**
- * @constructor
- */
- function SpeechManager() {
- this.audioManager_ = new speech.AudioManager();
- this.audioManager_.addEventListener('audio', this.onAudioLevel_.bind(this));
- this.speechRecognitionManager_ = new speech.SpeechRecognitionManager(this);
- this.errorTimeoutId_ = null;
- }
-
- /**
- * Updates the state.
- *
- * @param {SpeechState} newState The new state.
- * @private
- */
- SpeechManager.prototype.setState_ = function(newState) {
- if (this.state == newState)
- return;
-
- this.state = newState;
- chrome.send('setSpeechRecognitionState', [this.state]);
- };
-
- /**
- * Called with the mean audio level when audio data arrives.
- *
- * @param {cr.event.Event} event The event object for the audio data.
- * @private
- */
- SpeechManager.prototype.onAudioLevel_ = function(event) {
- var data = event.data;
- var level = 0;
- for (var i = 0; i < data.length; ++i)
- level += Math.abs(data[i]);
- level /= data.length;
- chrome.send('speechSoundLevel', [level]);
- };
-
- /**
- * Called when the hotword recognizer is ready.
- *
- * @param {PluginManager} pluginManager The hotword plugin manager which gets
- * ready.
- * @private
- */
- SpeechManager.prototype.onHotwordRecognizerReady_ = function(pluginManager) {
- this.pluginManager_ = pluginManager;
- this.audioManager_.addEventListener(
- 'audio', pluginManager.sendAudioData.bind(pluginManager));
- this.pluginManager_.startRecognizer();
- this.audioManager_.start();
- this.setState_(SpeechState.HOTWORD_RECOGNIZING);
- };
-
- /**
- * Called when an error happens for loading the hotword recognizer.
- *
- * @private
- */
- SpeechManager.prototype.onHotwordRecognizerLoadError_ = function() {
- this.setHotwordEnabled(false);
- this.setState_(SpeechState.READY);
- };
-
- /**
- * Called when the hotword is recognized.
- *
- * @private
- */
- SpeechManager.prototype.onHotwordRecognized_ = function() {
- if (this.state != SpeechState.HOTWORD_RECOGNIZING)
- return;
- this.pluginManager_.stopRecognizer();
- this.speechRecognitionManager_.start();
- };
-
- /**
- * Called when the speech recognition has happened.
- *
- * @param {string} result The speech recognition result.
- * @param {boolean} isFinal Whether the result is final or not.
- */
- SpeechManager.prototype.onSpeechRecognized = function(result, isFinal) {
- chrome.send('speechResult', [result, isFinal]);
- if (isFinal)
- this.speechRecognitionManager_.stop();
- };
-
- /**
- * Called when the speech recognition has started.
- */
- SpeechManager.prototype.onSpeechRecognitionStarted = function() {
- this.setState_(SpeechState.RECOGNIZING);
- };
-
- /**
- * Called when the speech recognition has ended.
- */
- SpeechManager.prototype.onSpeechRecognitionEnded = function() {
- // Do not handle the speech recognition ends if it ends due to an error
- // because an error message should be shown for a while.
- // See onSpeechRecognitionError.
- if (this.state == SpeechState.NETWORK_ERROR)
- return;
-
- // Restarts the hotword recognition.
- if (this.state != SpeechState.STOPPING && this.pluginManager_) {
- this.pluginManager_.startRecognizer();
- this.audioManager_.start();
- this.setState_(SpeechState.HOTWORD_RECOGNIZING);
- } else {
- this.audioManager_.stop();
- this.setState_(SpeechState.READY);
- }
- };
-
- /**
- * Called when a speech has started.
- */
- SpeechManager.prototype.onSpeechStarted = function() {
- if (this.state == SpeechState.RECOGNIZING)
- this.setState_(SpeechState.IN_SPEECH);
- };
-
- /**
- * Called when a speech has ended.
- */
- SpeechManager.prototype.onSpeechEnded = function() {
- if (this.state == SpeechState.IN_SPEECH)
- this.setState_(SpeechState.RECOGNIZING);
- };
-
- /**
- * Called when the speech manager should recover from the error state.
- *
- * @private
- */
- SpeechManager.prototype.onSpeechRecognitionErrorTimeout_ = function() {
- this.errorTimeoutId_ = null;
- this.setState_(SpeechState.READY);
- this.onSpeechRecognitionEnded();
- };
-
- /**
- * Called when an error happened during the speech recognition.
- *
- * @param {SpeechRecognitionError} e The error object.
- */
- SpeechManager.prototype.onSpeechRecognitionError = function(e) {
- if (e.error == 'network') {
- this.setState_(SpeechState.NETWORK_ERROR);
- this.errorTimeoutId_ = window.setTimeout(
- this.onSpeechRecognitionErrorTimeout_.bind(this),
- SPEECH_ERROR_TIMEOUT * 1000);
- } else {
- if (this.state != SpeechState.STOPPING)
- this.setState_(SpeechState.READY);
- }
- };
-
- /**
- * Changes the availability of the hotword plugin.
- *
- * @param {boolean} enabled Whether enabled or not.
- */
- SpeechManager.prototype.setHotwordEnabled = function(enabled) {
- var recognizer = $('recognizer');
- if (enabled) {
- if (recognizer)
- return;
- if (!this.naclArch)
- return;
-
- var prefix = getHotwordPrefix();
- var pluginManager = new speech.PluginManager(
- prefix,
- this.onHotwordRecognizerReady_.bind(this),
- this.onHotwordRecognized_.bind(this),
- this.onHotwordRecognizerLoadError_.bind(this));
- var modelUrl = 'chrome://app-list/_platform_specific/' + this.naclArch +
- '_' + prefix + '/hotword.data';
- pluginManager.scheduleInitialize(this.audioManager_.sampleRate, modelUrl);
- } else {
- if (!recognizer)
- return;
- document.body.removeChild(recognizer);
- this.pluginManager_ = null;
- if (this.state == SpeechState.HOTWORD_RECOGNIZING) {
- this.audioManager_.stop();
- this.setState_(SpeechState.READY);
- }
- }
- };
-
- /**
- * Sets the NaCl architecture for the hotword module.
- *
- * @param {string} arch The architecture.
- */
- SpeechManager.prototype.setNaclArch = function(arch) {
- this.naclArch = arch;
- };
-
- /**
- * Called when the app-list bubble is shown.
- *
- * @param {boolean} hotwordEnabled Whether the hotword is enabled or not.
- */
- SpeechManager.prototype.onShown = function(hotwordEnabled) {
- this.setHotwordEnabled(hotwordEnabled);
-
- // No one sets the state if the content is initialized on shown but hotword
- // is not enabled. Sets the state in such case.
- if (!this.state && !hotwordEnabled)
- this.setState_(SpeechState.READY);
- };
-
- /**
- * Called when the app-list bubble is hidden.
- */
- SpeechManager.prototype.onHidden = function() {
- this.setHotwordEnabled(false);
-
- // SpeechRecognition is asynchronous.
- this.audioManager_.stop();
- if (this.state == SpeechState.RECOGNIZING ||
- this.state == SpeechState.IN_SPEECH) {
- this.setState_(SpeechState.STOPPING);
- this.speechRecognitionManager_.stop();
- } else {
- this.setState_(SpeechState.READY);
- }
- };
-
- /**
- * Toggles the current state of speech recognition.
- */
- SpeechManager.prototype.toggleSpeechRecognition = function() {
- if (this.state == SpeechState.NETWORK_ERROR) {
- if (this.errorTimeoutId_)
- window.clearTimeout(this.errorTimeoutId_);
- this.onSpeechRecognitionErrorTimeout_();
- } else if (this.state == SpeechState.RECOGNIZING ||
- this.state == SpeechState.IN_SPEECH) {
- this.audioManager_.stop();
- this.speechRecognitionManager_.stop();
- } else {
- if (this.pluginManager_)
- this.pluginManager_.stopRecognizer();
- if (this.audioManager_.state == speech.AudioState.STOPPED)
- this.audioManager_.start();
- this.speechRecognitionManager_.start();
- }
- };
-
- return {
- SpeechManager: SpeechManager
- };
-});
« no previous file with comments | « chrome/browser/resources/app_list/plugin_manager.js ('k') | chrome/browser/resources/app_list/speech_recognition_manager.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698