Ich möchte eine Lautstärke für Puffer mit Sprachdaten erhöhen. Der Punkt ist, ich benutze DirectSound und ich habe einen primären und einen sekundären Puffer - alle Ströme werden von Hand gemischt. In einem Sprachchat können alle Teilnehmer unabhängige Lautstärkepegel haben. Ich multipliziere jeden Datenstrom mit einem Wert (Verstärkung) und summiere ihn zu einem Puffer. Alles funktioniert gut, aber wenn ich versuche, Daten mit einem Wert größer als 1,0 f zu multiplizieren - höre ich etwas Clipping oder was?Ändern der Lautstärkeverstärkung am Audio-Sample-Puffer
Ich habe versucht, mit Audacity-Effekt-Kompressor, aber das hilft nicht, das seltsame Rauschen zu reduzieren.
Wahrscheinlich sollte ich Verstärkung auf eine andere Weise ändern? Oder verwenden Sie einfach einen anderen Post-Processing-Algorithmus?
UPDATE: Wow, ich habe gerade interessante Sache herausgefunden! Ich habe Audio ausgegeben, bevor ich die Lautstärke erhöht habe und direkt danach.
ist die pic
Sorry für die Qualität - ich denke, das ist, wie der Klang sollte erscheinen (ich habe rote Linie selbst gezeichnet). Sieht wirklich so aus, als würden Werte den Probendaten-Typ überschreiten. Aber ich kann nicht verstehen warum? Mein Sample-Puffer ist BYTE, aber ich greife nur über einen kurzen Zeiger darauf zu. Es ist signiert, aber Clipping passiert sogar, wenn * ptr etwa 15-20 Tausend ist.
Was ist "irgendein Ausschnitt oder was" - überschreiten Ihre Werte tatsächlich die Grenzen für den Beispieldatentyp? und was meinst du mit "versucht mit Audacity Effekt-Kompressor"? Ist es auf dem abgeschnittenen Ausgang oder auf dem Ausgang vor dem Clipping? – lijie
Das Beispiel ist 200ms Audio mit 22050Hz Abtastrate. 2 Bytes - kurz. Wenn ich dieses Beispiel mit 1.f multipliziere - das Originalvolumen - ist alles in Ordnung. Wenn ich mit einem Wert kleiner als 1 f multipliziere, wird die Lautstärke niedriger. Aber wenn ich es z. 1.3f - die Lautstärke wird höher, aber mit hässlichen Kratzern. Ich habe den DAC-Kompressor im gemischten Puffer (mit Clipping) verwendet. – Dalamber
Hier ist meine Antwort mit etwas Code - es ist aus meinem Kopf, also erwarte nicht, dass es so funktioniert wie es ist. –