diff options
author | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-14 16:59:58 +0000 |
---|---|---|
committer | satish@chromium.org <satish@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-14 16:59:58 +0000 |
commit | 9598dce7a441e64828958482b4f9fa23d95c674e (patch) | |
tree | 6a24c1d64e54424f3c2d817aedc12c758c0166c3 /content/browser | |
parent | 184808f27fbc5cf8dc4a9c637d644bda31c6cfe8 (diff) | |
download | chromium_src-9598dce7a441e64828958482b4f9fa23d95c674e.zip chromium_src-9598dce7a441e64828958482b4f9fa23d95c674e.tar.gz chromium_src-9598dce7a441e64828958482b4f9fa23d95c674e.tar.bz2 |
A small set of related fixes:
- Tell speech recognition server to return errors as part of the JSON response and not HTTP error codes (xjerr=1 url param)
- Don't treat an empty response as a parse failure, instead bubble it up to the recognizer which already shows a proper 'speech not recognized' message
- Fix a constant's value which was wrong (should've been 30.0, not 60.0)
- Change mic image to blue when recording.
BUG=none
TEST=unit_tests --gtest_filter=SpeechRecognitionRequestTest.*
Review URL: http://codereview.chromium.org/6682029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78043 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser')
4 files changed, 10 insertions, 9 deletions
diff --git a/content/browser/speech/speech_recognition_request.cc b/content/browser/speech/speech_recognition_request.cc index fa6324f..d0869f3 100644 --- a/content/browser/speech/speech_recognition_request.cc +++ b/content/browser/speech/speech_recognition_request.cc @@ -19,7 +19,7 @@ namespace { const char* const kDefaultSpeechRecognitionUrl = - "https://www.google.com/speech-api/v1/recognize?client=chromium&"; + "https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&"; const char* const kHypothesesString = "hypotheses"; const char* const kUtteranceString = "utterance"; const char* const kConfidenceString = "confidence"; @@ -62,10 +62,6 @@ bool ParseServerResponse(const std::string& response_body, return false; } const ListValue* hypotheses_list = static_cast<ListValue*>(hypotheses_value); - if (hypotheses_list->GetSize() == 0) { - VLOG(1) << "ParseServerResponse: hypotheses list is empty."; - return false; - } size_t index = 0; for (; index < hypotheses_list->GetSize(); ++index) { diff --git a/content/browser/speech/speech_recognition_request_unittest.cc b/content/browser/speech/speech_recognition_request_unittest.cc index e789ef7..865f099 100644 --- a/content/browser/speech/speech_recognition_request_unittest.cc +++ b/content/browser/speech/speech_recognition_request_unittest.cc @@ -81,6 +81,11 @@ TEST_F(SpeechRecognitionRequestTest, BasicTest) { EXPECT_EQ(ASCIIToUTF16("123456"), result_[1].utterance); EXPECT_EQ(0.5, result_[1].confidence); + // Zero results. + CreateAndTestRequest(true, "{\"hypotheses\":[]}"); + EXPECT_FALSE(error_); + EXPECT_EQ(0U, result_.size()); + // Http failure case. CreateAndTestRequest(false, ""); EXPECT_TRUE(error_); diff --git a/content/browser/speech/speech_recognizer.cc b/content/browser/speech/speech_recognizer.cc index 3b9201a..953dfb14 100644 --- a/content/browser/speech/speech_recognizer.cc +++ b/content/browser/speech/speech_recognizer.cc @@ -24,7 +24,7 @@ const float kDownSmoothingFactor = 0.7f; const float kAudioMeterMaxDb = 90.31f; // This value corresponds to RMS dB for int16 with 6 most-significant-bits = 0. // Values lower than this will display as empty level-meter. -const float kAudioMeterMinDb = 60.21f; +const float kAudioMeterMinDb = 30.0f; const float kAudioMeterDbRange = kAudioMeterMaxDb - kAudioMeterMinDb; // Maximum level to draw to display unclipped meter. (1.0f displays clipping.) diff --git a/content/browser/speech/speech_recognizer_unittest.cc b/content/browser/speech/speech_recognizer_unittest.cc index f3c9cee..738eaf9 100644 --- a/content/browser/speech/speech_recognizer_unittest.cc +++ b/content/browser/speech/speech_recognizer_unittest.cc @@ -366,14 +366,14 @@ TEST_F(SpeechRecognizerTest, SetInputVolumeCallback) { controller->event_handler()->OnData(controller, &audio_packet_[0], audio_packet_.size()); MessageLoop::current()->RunAllPending(); - EXPECT_FLOAT_EQ(0.51877826f, volume_); + EXPECT_FLOAT_EQ(0.74939233f, volume_); FillPacketWithTestWaveform(); controller->event_handler()->OnData(controller, &audio_packet_[0], audio_packet_.size()); MessageLoop::current()->RunAllPending(); - EXPECT_FLOAT_EQ(0.81907868f, volume_); - EXPECT_FLOAT_EQ(0.52143687f, noise_volume_); + EXPECT_FLOAT_EQ(0.89926866f, volume_); + EXPECT_FLOAT_EQ(0.75071919f, noise_volume_); EXPECT_EQ(SpeechRecognizer::RECOGNIZER_NO_ERROR, error_); EXPECT_FALSE(recording_complete_); |