質問編集履歴

1

質問を具体化

2017/11/28 09:46

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Android RecognitionServiceとRecognitionService.Callbackの関係
1
+ Android.speechパッケージの関係
test CHANGED
@@ -1,10 +1,42 @@
1
- # やりたいこと
1
+ # やりたいこと bufferReceivedを使いたい
2
2
 
3
- 音声データを保存しながら、音声認識しようと思い、RecognitionServiceを使いました。音声データを保存するには`RecognitionService.Callback`クラスの`bufferReceived`使えばそうです。
3
+ わかりずらい質問かもしれませんがよろしくお願いします。音声データを保存しながら、音声認識しようと思い、Android.speechパッケージのRecognitionServiceを使いました。調べてみたところ、`RecognitionListener`クラスの[onBufferReceived](https://developer.android.com/reference/android/speech/RecognitionListener.html#onBufferReceived(byte[]))か`RecognitionService.Callback`クラスの[bufferReceived](https://developer.android.com/reference/android/speech/RecognitionService.Callback.html#bufferReceived(byte[]))発見しました。早速、テスト動かしてみようとしたのですが`onBufferReceived`の方は機種依存で動かないことがあるそうです。自分のAndroid端末でも動きませんでした。その次に`bufferReceived`を試そうとしました。しかし、このメソッドの使い方が分かりません。リファレンスを読んでも分かりませんでした。自分が読んで理解したのが
4
4
 
5
- # 困っていること聞きたいこと
5
+ - `RecognitionListener`はインターフェースで`RecognitionService.Callback`はクラス
6
6
 
7
+ - `RecognitionService.Callback`は`RecognitionService`と何らかの関係がある。
8
+
9
+ - 何らかの関係として`onStartListening(Intent, Callback)`の`Callback`に`bufferReceived`を使うのだろうか。
10
+
11
+
12
+
13
+ # 疑問
14
+
15
+ ### その1
16
+
17
+ [RecognitionService.Callback](https://developer.android.com/reference/android/speech/RecognitionService.Callback.html)
18
+
19
+ > This class receives callbacks from the speech recognition service and forwards them to the user.
20
+
21
+
22
+
7
- `RecognitionService`での`bufferReceived`の取得し方が分かりません。(本当に取得できるのかも怪しいです)そもそも、Serviceとcallbackはどう関係しあっているのでしょうか?
23
+ [RecognitionService](https://developer.android.com/reference/android/speech/RecognitionService.html)
24
+
25
+ > This class provides a base class for recognition service implementations.
26
+
27
+
28
+
29
+
30
+
31
+ この2つのクラスの関係を教えてください。自分で考えた感じでは、`RecognitionService`を自作クラスに継承して、`SpeechRecognizer`,`RecognitionService.Callback`はimportし、`bufferReceived`を使う。あってますか?
32
+
33
+
34
+
35
+ ### その2
36
+
37
+ `bufferReceived`はどのように使うのでしょうか?返り値の型がvoidということは、音声データをマイクからストリーミング(AudioRecordクラスで行う)して取得したmybufferを`bufferReceived(mybuffer)`のように使うと、mybufferを音声認識してくれるということでしょうか?そうでないなら、このメソッドはいったい何に使うのでしょうか?
38
+
39
+
8
40
 
9
41
 
10
42