2016-05-14 2 views
1

Я пытаюсь создать приложение, которое позволит пользователю загружать аудиофайл, созданный речью Googles, в текст на сервер. Мне удалось получить URI для аудиофайла, но как мне получить доступ к нему или преобразовать его в формат для прослушивания? Я попытался воспроизвести его, но ничего до сих пор. Это то, что у меня есть.Android save Speech to Text audio

Моя речь в текст

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode){ 
     case REQ_CODE_SPEECH_INPUT: { 
      Bundle bundle = data.getExtras(); 
      if(resultCode==RESULT_OK && null!= data){ 
       ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
       vtt.setText(result.get(0)); 
       Uri audioUri = data.getData(); 
       uri.setText(String.valueOf(audioUri)); 
       audioPath = uri.getText().toString(); 

      } 
      break; 

     } 
    } 
} 

Когда я пытался играть переменный аудиотракт. Ничего не вышло. Как преобразовать его в формат для прослушивания?

Пример URI, который я получил

content://com.google.android.googlequicksearchbox.AudioProvider/NoteToSelfOriginalAudio1.amr 

Спасибо за вашу помощь

я нашел где-то, что я должен использовать распознаватель контента и сделать что-то с InputStream, но я не уверен, что.

+1

Возможный дубликат [запись/сохранить аудио с умыслом распознавания голоса] (http://stackoverflow.com/questions/23047433/record- сохранить аудио-из-распознавания голоса, намерения) –

ответ

0

Мне удалось решить вопрос.

Проще всего было бы использовать функции из Apache Commons IO

audioPath = uri.getText().toString(); 
       finalPath = combinedPath.replaceAll(" ",""); 
       Log.d("Filepath",combinedPath.replaceAll(" ","")); 
       ContentResolver contentResolver = getContentResolver(); 
       try{ 
        InputStream filestream = contentResolver.openInputStream(audioUri); 
        File targetFIle = new File(finalPath); 
        FileUtils.copyInputStreamToFile(filestream,targetFIle); 
       }catch (IOException e){ 
        e.toString(); 
       }