如何追加的.wav格式的声音彼此(How to append .wav format sounds

2019-09-19 13:15发布

我对自己通过阅读一些书籍和看一些教程,学习C#。 所以,我决定在同一时间做一个小项目,以获得更多的经验和强化我的知识。 我试图创建一个格鲁吉亚文本到语音程序(我的语言)。 我已经做了在Java中相同的程序,但要在C#中转移,但我无法理解如何不同的声音附加到每个other.For例如,当我的程序想要说的一句话“一般”它共分字像这样的“GE”负一“呢” - 第二“RA” - 第二“L” - 第二(这些第一和第二部分意味着部分是关于这个词的第一部分,我这样做是因为GE-第一和GE - 第二有不同的语调)所以,我有记录以.wav格式的这些部分,并希望该计划追加它们,并创建一个字。 我找了班级上MSDN.COM,发现声音播放,但我无法弄清楚如何WAV格式的声音附加到每个-等。 我想一个声音添加到另一个玩一个新的,比如我有声音说:“AAA”,另一个说“BBBB”我希望得到一个声音,说:“aaabbbb”。

来划分的话,我创建一个ArrayList和使用该代码。

public ArrayList divide(String s)  //დაყოფა და arraylist-ში გადანაწილება
{
    ArrayList a = new ArrayList();
    int i = 0;
    while (i < s.Length)
    {
        if (s[i] == ',' || s[i] == ' ' || s[i] == '.')
        {
            a.Add(s.Substring(i, i + 1));
            i++;
            continue;
        }
        if (consonant(s[i]) && (i + 1) != s.Length && sonant(s[i + 1]))
        {
            if (isFirstSonant(s, i))
                a.Add(s.Substring(i, i + 2) + "_FIRST");
            else
                a.Add(s.Substring(i, i + 2) + "_SECOND");
            i += 2;
            continue;
        }
        if (sonant(s[i]) && ((i + 1) < s.Length && sonant(s[i]) || i == (s.Length - 1)))
        {
            if (isFirstSonant(s, i))
                a.Add(s.Substring(i, i + 1) + "_FIRST");
            else
                a.Add(s.Substring(i, i + 1) + "_SECOND");
            i++;
            continue;
        }
        if (consonant(s[i]) && ((i + 1) < s.Length && consonant(s[i]) || i == (s.Length - 1)))
        {
            a.Add(s.Substring(i, i + 1) + "_SECOND");
            i++;
            continue;
        }
    }
    return a;
}

我用同样的代码在我的Java程序(Java语法,当然),但试图与.wav文件的工作,我不知道使用哪种方法,以及如何坚持这些声音时,我抓住了问题。 这是我做这件事是Java的。

public AudioInputStream find(String s) throws UnsupportedAudioFileException, IOException {
         return AudioSystem.getAudioInputStream(
           new File("C:/Users/Vato/Desktop/Programing/sintezatori/alphabet/"+s+".wav"));
 }
 public AudioInputStream append(AudioInputStream main, String s) throws UnsupportedAudioFileException, IOException {
     return new AudioInputStream(
             new SequenceInputStream(main, find(s)),     
             main.getFormat(), 
             main.getFrameLength() + find(s).getFrameLength());
 }
 private String s;
 public void Process() {
    try {
        AudioInputStream main = AudioSystem.getAudioInputStream(new File("C:/Users/Vato/Desktop/Programing/sintezatori/alphabet/blank.wav"));
        ArrayList<String> aa = divide(s);
        for(int ii=0;ii<aa.size();ii++) {
            main=append(main, aa.get(ii));
            System.out.println(aa.get(ii));
        }
        AudioSystem.write(main, AudioFileFormat.Type.WAVE, new File("C:/Users/Vato/Desktop/Programing/sintezatori/alphabet/result.wav"));
        result=main;
        AudioInputStream result1 = AudioSystem.getAudioInputStream(new File("C:/Users/Vato/Desktop/Programing/sintezatori/alphabet/result.wav")); 
        DataLine.Info info =
            new DataLine.Info(Clip.class,
                    result1.getFormat());
        Clip clip = (Clip) AudioSystem.getLine(info);
        clip.open(result1);
        clip.start();
        } catch (Exception e) {
          e.printStackTrace();
        }
   }
 private AudioInputStream result;
 public AudioInputStream getResult() {
     return result;
 }

现在我想要做的C#几乎同样的事情。 我看着这个页面http://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspx但想不出做什么,所以请帮助我,我应该用什么:)和方法怎么样?

Answer 1:

这里有很大的联系,以帮助:

  • 拼接波文件使用C#2005
  • C#WAV文件类,音频混合,以及一些轻音频处理

也许这样的: 合并WAV文件在C#



文章来源: How to append .wav format sounds to each other