Genel olarak, yalnızca mikrofon kaydını değil, ses dosyalarını ayrıştırmak için amazon'un avs sdk'sini Alexa'ya kullanmak istiyorum. OSX 10.11.6 kullanarakAmazon'un avs SDK'sini Alexa'yı ayrıştırmak için Ses dosyalarını
.
Bu nedenle ilk önce Sonra yapılandırılmış ve companionService (nodejs) ve daha sonra java istemcisi infaz ve ben mikrofona bir şeyler söylemek ve Alexa yanıt .. çalışır
https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/docs/java-client-sample den Alexa Voice Service Sample App
indirilen. şimdi ses yüklemek ve sadece mikrofon yerine bilgisayardan oynatmak için bir yetenek eklemek istiyorum.
Bu yüzden önce UI'ye bir düğme eklemek için bir işlev oluşturdum. böylece samples/javaclient/src/main/java/com/amazon/alexa/avs/AVSApp.java
düzenledim. Ben düğmesi "Başlat Dinleme" ekler işlevi çoğaltılamaz ve onu modifiye: in ... şimdi
private AVSApp(DeviceConfig config) throws Exception {
...
addBrowseField();
...
}
ok: Ben özel AVSApp fonksiyonunda bu işlevin yürütülmesi eklendi Sonra
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);
}
yeni
addBrowseField()
işlevim,
startFileRecording
adlı denetleyicide oluşturduğum yeni bir işlevi çağırıyorum. yüzden
startFileLoading
için
startRecording
fonksiyonunu kopyalayarak ve değiştirerek
samples/javaclient/src/main/java/com/amazon/alexa/avs/AVSController.java
modifiye:
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);
}
}
Şimdi gördüğünüz gibi, dosyayı eli3.raw
kullanın. Kendimi bir komut (sadece ses) diyerek kaydedildi ve Ben aslında eli3.raw
ses dosyası yükleyen yeni oluşturulan Browse
butonuna tıklayın ffmpeg -i eli.m4a -f s16le -ac 1 -acodec pcm_s16le eli3.raw
ile LPCM onu dönüştürülür ve birkaç saniye ben Stop Browse
butonuna tıklayın ve hiçbir şey gerçekten olmuyor .
Hiçbir java hatası alıyorum, hiçbir uyarı yok.
Tüm avs sdk için oldukça yeniyim, bu yüzden muhtemelen yanlış bir şey yapıyorum .. sadece ne olduğunu bilmiyorum.