Ich versuche, einen Audio-Stream von einer Text-zu-Sprache-Schnittstelle (MaryTTS) zu erhalten und streamen Sie in einer SIP-RTP-Sitzung (mit Peers).Konvertieren eines Audiostreams in PCM
Peers will ein SoundSource
Audio-Stream, der eine Schnittstelle als
public interface SoundSource {
byte[] readData();
}
MaryTTS und synthetisiert ein String
zu einem AudioInputStream
definiert ist. Ich habe versucht, einfach den Strom zu lesen und es heraus zu Peers Pufferung SoundSource
, in den Linien der
MaryInterface tts = new LocalMaryInterface();
AudioInputStream audio = tts.generateAudio("This is a test.");
SoundSource soundSource = new SoundSource() {
@Override
public byte[] readData() {
try {
byte[] buffer = new byte[1024];
audio.read(buffer);
return buffer;
} catch (IOException e) {
return null;
}
}
};
// issue call with soundSource using Peers
das Telefon klingelt Implementierung und ich höre einen langsamen, niedrig, laut Ton anstelle der synthetisierten Sprache. Ich denke, es hat etwas mit dem Audioformat der SIP-RTP-Sitzung erwartet, da Peers Dokumentation wird
mit folgendem Format sein muss ausgewertete Audio sein könnteDie Schallquelle: 16 Bit signed, Mono-Kanal, lineare PCM 8 kHz, kleiner Endianer.
Wie kann ich konvertieren/die AudioInputStream
lesen diese Anforderungen zu erfüllen?