我正在通過閱讀一些書籍和看一些教程來自學C#。所以,我決定同時做一個小型項目,以獲得更多的經驗,並鞏固我的知識。我正嘗試在格魯吉亞語(我的語言)中創建一個語音轉換程序,但是我無法理解如何在不同的聲音之間添加不同的聲音。例如,當我的程序想要說「語言」時,它會將單詞分成「la」,「n」,「gu」,「a」,「ge」,所以我記錄了這些部分並且想要附加它們並創建一個單詞。我在MSDN.COM上找到了一些類,發現了SoundPlayer,但是,我無法弄清楚如何附加WAV格式的聲音。我想添加一個聲音到另一個,並播放一個新的,例如我有聲音說「aaa」,另一個說「bbbb」我想得到一個聲音,說「aaabbbb」。如何在C中添加聲音#
要劃分單詞我創建一個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上製作了這個程序,並且想在C#上做同樣的事情,所以這是我在java上的代碼。 這就是我以後如何追加聲音,把它們放入數組列表中。
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;
}
我應該從這些http://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspx使用哪種方法或類?我怎樣才能在C#中做同樣的事情?
我創建了一個新的問題,使人們瞭解我真正想要的。對不起這個不好的問題,我想刪除它,但不能。如果你想更好地看到這個問題只是去這個鏈接http://stackoverflow.com/questions/11501160/how-to-append-wav-format-sounds-to-each-other-in-c-sharp 。謝謝:) – vato 2012-07-16 09:10:57