2017-11-14 1 views
2

사용자가 입력하는 텍스트를들을 수있는 웹 페이지를 만들려고합니다. 또한 .wav 형식으로 미디어를 다운로드하는 기능을 제공하려고합니다.AWS Polly에서 제공하는 ogg 스트림을 wav 파일에 저장합니다.

AmazonPollyClient에서 AudioStream을 얻을 수 있지만 스트림을 .wav 파일로 저장할 수 없습니다. 여기

내가 ...

public void convertToWav(SynthesizeSpeechResult result, File convertedFile) throws IOException { 

    try (AudioInputStream sias = AudioSystem.getAudioInputStream(result.getAudioStream())){ 

     AudioFormat newFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 8000f, 16, 1, 2, 8000f, false); 
     AudioInputStream convert1AIS = AudioSystem.getAudioInputStream(newFormat, sias); 

     AudioSystem.write(convert1AIS, AudioFileFormat.Type.WAVE, convertedFile); 

     convert1AIS.close(); 
    } catch (UnsupportedAudioFileException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    System.gc(); 
} 

을 시도하고 무엇을하지만 매번 나는 IOException

java.io.IOException: mark/reset not supported 
    at java.io.InputStream.reset(InputStream.java:348) 
    at com.amazonaws.internal.SdkFilterInputStream.reset(SdkFilterInputStream.java:112) 
    at com.amazonaws.event.ProgressInputStream.reset(ProgressInputStream.java:168) 
    at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:139) 
    at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1113) 

P.S을 던졌습니다 getAudioInputStream() 전화 : 나는 BufferedInputStream()result.getAudioStream() 포장 노력했다. 더 쇼 없다!

도움이 될 것입니다.

답변

0

마지막으로, 나는 InputStreampolly-aws-sdk

public static boolean getWavFile(String filePath, InputStream audioStream) throws IOException { 

    boolean result = false; 
    try { 

     byte[] decodedData = IOUtils.toByteArray(audioStream); 

     System.out.println(">>Decoded Data" + Arrays.toString(decodedData)); 
     File outFile = new File(filePath); 
     AudioFormat format = new AudioFormat(8000, 16, 1, true, false); 
     AudioSystem.write(new AudioInputStream(new ByteArrayInputStream(
       decodedData), format, decodedData.length), AudioFileFormat.Type.WAVE, outFile); 
     result = true; 
     return result; 
    } catch (IOException ex) { 
     System.out.println("<<getWavFile - impl" + ex); 
     return result; 

    } 
} 
가 제공하는 저장하는 방법을 알아 낸
관련 문제