一般的に、AlexaにはAlexaのavs sdkを使用して、マイクの録音だけでなくオーディオファイルを解析する必要があります。Amazonのavs SDK for Alexaを使用してオーディオファイルを解析する
OSX 10.11.6を使用してください。
だから最初に私がhttps://developer.amazon.com/public/solutions/alexa/alexa-voice-service/docs/java-client-sample
からAlexa Voice Service Sample App
をダウンロードした後、私が設定され、実行companionService(nodejsを)してからJavaクライアントとそれが動作..私はマイクにものを言うと、アレクサが応答します。マイクだけではなく、コンピュータからサウンドを読み込んで再生する機能を追加したいと考えています。
最初にUIにボタンを追加するための関数を作成しました。 だから私はsamples/javaclient/src/main/java/com/amazon/alexa/avs/AVSApp.java
を編集しました。私はボタン「リスニングを開始」追加機能を複製して、それを修正:で...今
private AVSApp(DeviceConfig config) throws Exception {
...
addBrowseField();
...
}
OK:私はプライベートAVSApp機能で、この関数の実行を追加した後
private void addBrowseField() {
final RecordingRMSListener rmsListener = this;
browseButton = new JButton(BROWSE_LABEL);
browseButton.setEnabled(true);
browseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
controller.onUserActivity();
if (browseButton.getText().equals(BROWSE_LABEL)) { // if in idle mode
browseButton.setText(BROWSE_STOP_LABEL);
RequestListener requestListener = new RequestListener() {
@Override
public void onRequestSuccess() {
finishProcessing();
}
@Override
public void onRequestError(Throwable e) {
log.error("An error occured creating speech request", e);
JOptionPane.showMessageDialog(getContentPane(), e.getMessage(), "Error",
JOptionPane.ERROR_MESSAGE);
browseButton.doClick();
finishProcessing();
}
};
controller.startFileLoading("/Users/ufk/Desktop/eli3.raw", requestListener);
// controller.stopRecording(); /// stop the recording so the request can complete
} else {
browseButton.setText(BROWSE_LABEL);
controller.stopRecording();
}
}
});
getContentPane().add(browseButton);
}
私の新しい
addBrowseField()
関数私は
startFileRecording
というコントローラーで作成した新しい関数を呼び出しています。 私は
startFileLoading
に
startRecording
機能をコピーし、それを修正することにより
samples/javaclient/src/main/java/com/amazon/alexa/avs/AVSController.java
を修正:あなたが見ることができるよう
public void startFileLoading(String path,RequestListener requestListener) {
try {
InputStream in = (InputStream)new BufferedInputStream(new FileInputStream(new File(path)));
String dialogRequestId = dialogRequestIdAuthority.createNewDialogRequestId();
RequestBody body = RequestFactory.createSpeechRegonizerRecognizeRequest(dialogRequestId,
PROFILE, FORMAT, player.getPlaybackState(), player.getSpeechState(),
alertManager.getState(), player.getVolumeState());
dependentQueue.clear();
avsClient.sendEvent(body, in, requestListener, AUDIO_TYPE);
speechRequestAudioPlayerPauseController.startSpeechRequest();
} catch (Exception e) {
player.playMp3FromResource(ERROR_SOUND);
requestListener.onRequestError(e);
}
}
は今、私は、ファイルeli3.raw
を使用しています。私は自分自身のコマンドを言って記録(音声のみ)とffmpeg -i eli.m4a -f s16le -ac 1 -acodec pcm_s16le eli3.raw
とLPCMにそれを変換するので、私は実際にeli3.raw
オーディオファイルをロードし、新しく作成されたBrowse
ボタンをクリックして、数秒私はStop Browse
ボタンと何をクリックして、本当に起こります。
Javaエラーは発生しません。何も警告はありません。
私はおそらく何か間違っているので、すべてのAVS SDKの新しいです。ちょっと考えていない。