Java 合並.wav 文件


package org.lib.speech.test;
import java.io.*;
import java.util.*;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
//生成的新.wav路徑
File fileOut = new File("E:/java/apache-tomcat-7.0.77/webapps/JavaWeb/music/1.wav");
        List<String> listArr = new ArrayList<String>();
        listArr.add("E:/java/apache-tomcat-7.0.77/webapps/data/jyutping-wong-44100-v7/aak6.wav");
        listArr.add("E:/java/apache-tomcat-7.0.77/webapps/data/jyutping-wong-44100-v7/1.wav");
        listArr.add("E:/java/apache-tomcat-7.0.77/webapps/data/jyutping-wong-44100-v7/ang1.wav");
//如果這個語音大於 2 個
if (listArr.size() >= 2){
   AudioInputStream audio1 = AudioSystem.getAudioInputStream(new File(dir+listArr.get(0)));
   AudioInputStream audio2 = AudioSystem.getAudioInputStream(new File(dir+listArr.get(1)));
   AudioInputStream audioBuild = new AudioInputStream(
         new SequenceInputStream(audio1, audio2),
         audio1.getFormat(),
         audio1.getFrameLength() +
               audio2.getFrameLength()
   );
   AudioInputStream audio3;
   //大於兩個時繼續合並
   for(int i = 2; i<listArr.size();i++){
      audio3 = AudioSystem.getAudioInputStream(new File(dir+listArr.get(i)));
      audioBuild = new AudioInputStream(
            new SequenceInputStream(audioBuild, audio3),
            audioBuild.getFormat(), audioBuild.getFrameLength() +
            audio3.getFrameLength()
      );
   }
   //生成語音
   AudioSystem.write(audioBuild, AudioFileFormat.Type.WAVE, fileOut );

} else {
   //TODO::否則只有一個,直接返回語音路徑
 
}

注意 , 生成的語音要 比特率 一致,否則聲音會很難聽,如果要改為一直,則可以用百度音樂右上角工具來改變

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM