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

Side by Side Diff: chrome/browser/speech/speech_recognizer.cc

Issue 3595018: Language tag for speech. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: rebase. Created 10 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/speech/speech_recognizer.h" 5 #include "chrome/browser/speech/speech_recognizer.h"
6 6
7 #include "base/ref_counted.h" 7 #include "base/ref_counted.h"
8 #include "base/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "chrome/browser/browser_thread.h" 10 #include "chrome/browser/browser_thread.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 int frame_length = speex_bits_write(&bits_, encoded_frame_data_ + 1, 102 int frame_length = speex_bits_write(&bits_, encoded_frame_data_ + 1,
103 kMaxSpeexFrameLength); 103 kMaxSpeexFrameLength);
104 encoded_frame_data_[0] = static_cast<char>(frame_length); 104 encoded_frame_data_[0] = static_cast<char>(frame_length);
105 encoded_frames->push_back(new string(encoded_frame_data_, 105 encoded_frames->push_back(new string(encoded_frame_data_,
106 frame_length + 1)); 106 frame_length + 1));
107 } 107 }
108 } 108 }
109 109
110 SpeechRecognizer::SpeechRecognizer(Delegate* delegate, 110 SpeechRecognizer::SpeechRecognizer(Delegate* delegate,
111 int caller_id, 111 int caller_id,
112 const std::string& language,
112 const std::string& grammar) 113 const std::string& grammar)
113 : delegate_(delegate), 114 : delegate_(delegate),
114 caller_id_(caller_id), 115 caller_id_(caller_id),
116 language_(language),
115 grammar_(grammar), 117 grammar_(grammar),
116 encoder_(new SpeexEncoder()), 118 encoder_(new SpeexEncoder()),
117 endpointer_(kAudioSampleRate), 119 endpointer_(kAudioSampleRate),
118 num_samples_recorded_(0), 120 num_samples_recorded_(0),
119 audio_level_(0.0f) { 121 audio_level_(0.0f) {
120 endpointer_.set_speech_input_complete_silence_length( 122 endpointer_.set_speech_input_complete_silence_length(
121 base::Time::kMicrosecondsPerSecond / 2); 123 base::Time::kMicrosecondsPerSecond / 2);
122 endpointer_.set_long_speech_input_complete_silence_length( 124 endpointer_.set_long_speech_input_complete_silence_length(
123 base::Time::kMicrosecondsPerSecond); 125 base::Time::kMicrosecondsPerSecond);
124 endpointer_.set_long_speech_length(3 * base::Time::kMicrosecondsPerSecond); 126 endpointer_.set_long_speech_length(3 * base::Time::kMicrosecondsPerSecond);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 for (AudioBufferQueue::iterator it = audio_buffers_.begin(); 205 for (AudioBufferQueue::iterator it = audio_buffers_.begin();
204 it != audio_buffers_.end(); it++) { 206 it != audio_buffers_.end(); it++) {
205 audio_buffer_length += (*it)->length(); 207 audio_buffer_length += (*it)->length();
206 } 208 }
207 string data; 209 string data;
208 data.reserve(audio_buffer_length); 210 data.reserve(audio_buffer_length);
209 for (AudioBufferQueue::iterator it = audio_buffers_.begin(); 211 for (AudioBufferQueue::iterator it = audio_buffers_.begin();
210 it != audio_buffers_.end(); it++) { 212 it != audio_buffers_.end(); it++) {
211 data.append(*(*it)); 213 data.append(*(*it));
212 } 214 }
215
213 DCHECK(!request_.get()); 216 DCHECK(!request_.get());
214 request_.reset(new SpeechRecognitionRequest( 217 request_.reset(new SpeechRecognitionRequest(
215 Profile::GetDefaultRequestContext(), this)); 218 Profile::GetDefaultRequestContext(), this));
216 request_->Send(grammar_, kContentTypeSpeex, data); 219 request_->Send(language_, grammar_, kContentTypeSpeex, data);
217 ReleaseAudioBuffers(); // No need to keep the audio anymore. 220 ReleaseAudioBuffers(); // No need to keep the audio anymore.
218 } 221 }
219 222
220 void SpeechRecognizer::ReleaseAudioBuffers() { 223 void SpeechRecognizer::ReleaseAudioBuffers() {
221 for (AudioBufferQueue::iterator it = audio_buffers_.begin(); 224 for (AudioBufferQueue::iterator it = audio_buffers_.begin();
222 it != audio_buffers_.end(); it++) 225 it != audio_buffers_.end(); it++)
223 delete *it; 226 delete *it;
224 audio_buffers_.clear(); 227 audio_buffers_.clear();
225 } 228 }
226 229
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 332
330 void SpeechRecognizer::InformErrorAndCancelRecognition(ErrorCode error) { 333 void SpeechRecognizer::InformErrorAndCancelRecognition(ErrorCode error) {
331 CancelRecognition(); 334 CancelRecognition();
332 335
333 // Guard against the delegate freeing us until we finish our job. 336 // Guard against the delegate freeing us until we finish our job.
334 scoped_refptr<SpeechRecognizer> me(this); 337 scoped_refptr<SpeechRecognizer> me(this);
335 delegate_->OnRecognizerError(caller_id_, error); 338 delegate_->OnRecognizerError(caller_id_, error);
336 } 339 }
337 340
338 } // namespace speech_input 341 } // namespace speech_input
OLDNEW
« no previous file with comments | « chrome/browser/speech/speech_recognizer.h ('k') | chrome/browser/speech/speech_recognizer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698