C# 如何将.wav格式的声音相互附加

C# 如何将.wav格式的声音相互附加,c#,java,.net,audio-streaming,soundplayer,C#,Java,.net,Audio Streaming,Soundplayer,我正在通过阅读一些书籍和观看一些教程来自学C#。因此,我决定同时做一个小项目,以获得更多的经验并强化我的知识。我正在尝试用格鲁吉亚语(我的语言)创建一个文本到语音的程序。我用java编写了相同的程序,但想用C#来传输,但我不明白如何将不同的声音附加在一起。例如,当我的程序想说一个单词“general”时,它会将单词分成这样的部分“ge”-第一个“ne”-第二个“ra”-第二个“l”-第二个(这些第一和第二部分的意思是该部分在单词的第一部分,我这样做是因为ge-first和ge-second有不同

我正在通过阅读一些书籍和观看一些教程来自学C#。因此,我决定同时做一个小项目,以获得更多的经验并强化我的知识。我正在尝试用格鲁吉亚语(我的语言)创建一个文本到语音的程序。我用java编写了相同的程序,但想用C#来传输,但我不明白如何将不同的声音附加在一起。例如,当我的程序想说一个单词“general”时,它会将单词分成这样的部分“ge”-第一个“ne”-第二个“ra”-第二个“l”-第二个(这些第一和第二部分的意思是该部分在单词的第一部分,我这样做是因为ge-first和ge-second有不同的语调)因此,我以.wav格式录制了这些部分,并希望程序附加它们并创建一个单词。我在MSDN.COM上查找类并找到SoundPlayer,但我不知道如何将wav格式的声音相互附加。我想将一个声音添加到另一个声音并播放一个新的声音,例如,我的声音上写着“aaa”另一个说“bbbb”,我想得到一个声音,说“aaabbb”

为了划分单词,我创建了一个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;
}
public ArrayList divide(字符串s)//დაყოფა და arraylist-ში გადანაწილება
{
ArrayList a=新的ArrayList();
int i=0;
而(i
我在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;
 }
public AudioInputStream find(字符串s)抛出不支持的DaudioFileException、IOException{
返回AudioSystem.getAudioInputStream(
新文件(“C:/Users/Vato/Desktop/programming/sintezotori/alphabet/”+s+“.wav”);
}
public AudioInputStream append(AudioInputStream main,字符串s)引发UnsupportedAudioFileException,IOException{
返回新的音频输入流(
新SequenceInputStream(主,查找),
main.getFormat(),
main.getFrameLength()+查找.getFrameLength());
}
私有字符串;
公共程序(){
试一试{
AudioInputStream main=AudioSystem.getAudioInputStream(新文件(“C:/Users/Vato/Desktop/programming/sintezatori/alphabet/blank.wav”);
ArrayList aa=除数;
for(int ii=0;ii但无法确定要做什么,请帮助我:)

我应该使用什么方法以及如何使用?

这里有一些很好的帮助链接:

也许是这样: