2016-07-30 11 views
6

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.

cevap

0

tamam .. ses dosyasının biçimi hatalıydı. Bu bayraklarla ffmpeg kullanarak: ffmpeg -i eli.m4a -acodec pcm_s16le -ac 1 -ar 16000 eli.wav sorunu çözdü.

İlgili konular