Wie erhöhe ich die Lautstärke eines ausgehenden wav Audio-Streams mit Java? Ich habe Probleme mit verschiedenen Java TTS-Engines und dem Ausgabevolumen der synthetisierten Sprache. Gibt es einen API-Aufruf oder ein doo-hickey.jar, mit dem ich die Lautstärke erhöhen kann?Audiolautstärkeregler (erhöhen oder verringern) in Java
19
A
Antwort
34
geöffnet haben Falls Sie das Java Sound-API verwenden, können Sie die Lautstärke mit dem MASTER_GAIN Steuerung einstellen.
import javax.sound.sampled.*;
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(
new File("some_file.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
FloatControl gainControl =
(FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(-10.0f); // Reduce volume by 10 decibels.
clip.start();
9
Sie Lautstärke kann eine GainControl verwenden, so etwas wie dies versuchen, nachdem Sie die Linie
FloatControl volume= (FloatControl) line.getControl(FloatControl.Type.MASTER_GAIN);
1
public final class VolumeControl
{
private VolumeControl(){}
private static LinkedList<Line> speakers = new LinkedList<Line>();
private final static void findSpeakers()
{
Mixer.Info[] mixers = AudioSystem.getMixerInfo();
for (Mixer.Info mixerInfo : mixers)
{
if(!mixerInfo.getName().equals("Java Sound Audio Engine")) continue;
Mixer mixer = AudioSystem.getMixer(mixerInfo);
Line.Info[] lines = mixer.getSourceLineInfo();
for (Line.Info info : lines)
{
try
{
Line line = mixer.getLine(info);
speakers.add(line);
}
catch (LineUnavailableException e) { e.printStackTrace(); }
catch (IllegalArgumentException iaEx) { }
}
}
}
static
{
findSpeakers();
}
public static void setVolume(float level)
{
System.out.println("setting volume to "+level);
for(Line line : speakers)
{
try
{
line.open();
FloatControl control = (FloatControl)line.getControl(FloatControl.Type.MASTER_GAIN);
control.setValue(limit(control,level));
}
catch (LineUnavailableException e) { continue; }
catch(java.lang.IllegalArgumentException e) { continue; }
}
}
private static float limit(FloatControl control,float level)
{ return Math.min(control.getMaximum(), Math.max(control.getMinimum(), level)); }
}
+0
Das Einstellen der Lautstärke von Lautsprechern und einer bestimmten Spur sind zwei völlig verschiedene Dinge. –
Verwandte Themen
- 1. Python für Schleife erhöhen oder verringern
- 2. Erhöhen oder verringern Web-Mitarbeiter die Sicherheit?
- 3. SeekBar langsam erhöhen/verringern
- 4. Wie kann ich einen Feldpreis in SQL erhöhen oder verringern?
- 5. WooCommerce Eingabefeld - Erhöhen/Verringern Feldschaltfläche
- 6. Werte im Laufe der Zeit erhöhen oder verringern
- 7. erhöhen oder die Listenelemente Breite verringern gemäß der Bedingung
- 8. Erhöhen/Verringern der Lautstärke mit FFmpeg
- 9. JS erhöhen/verringern mehrere Eingabe-Nummer Variablen
- 10. Helligkeit des Bildes mit UISlider erhöhen/verringern?
- 11. Wert bis Limit erhöhen dann Schleife verringern
- 12. erhöhen und verringern Wert mit einem Optionsfeld
- 13. So erhöhen/verringern Sie die Schriftgröße in Dojo DataGrid
- 14. Wie zu erhöhen und zu verringern Volumen in Android
- 15. Erhöhen und Verringern einer Menge in einem RecyclerView
- 16. Erhöhen und verringern Zeilenwert um 1 in MySQL
- 17. Wie kann man den Bild-Alpha-Wert mit Animation in ios sdk erhöhen oder verringern?
- 18. Wie können wir die Größe von div auf BTN Klick in asp.net erhöhen oder verringern?
- 19. Warenkorb Artikel Anzahl erhöhen/verringern & zum Warenkorb hinzufügen
- 20. erhöhen/verringern Sie den Wert eines Feldes mit Jquery
- 21. vb wie btn Textbox Wert für erhöhen und verringern?
- 22. Erhöhen und verringern Sie die Werte für Eingaben mit jquery
- 23. Maximale Stackgröße zur Laufzeit in Java verringern
- 24. Tiefes neuronales Netzwerk sollte verdeckte Knoten erhöhen, verringern oder gleich bleiben
- 25. Swift Compile Times - Soll das `final`-Schlüsselwort die Kompilierzeit erhöhen oder verringern?
- 26. So fügen Sie eine Schaltfläche zum Erhöhen und Verringern in das Mengenfeld hinzu
- 27. Ist Java automatisch Heap erhöhen "transparent" oder es kostet?
- 28. Angular2 - Anzeige HTML-Inhalt auf (klicken Sie auf) Ereignis (in den Warenkorb erhöhen/verringern)
- 29. Wie oder -abnahme Höhe eines div mit jquery zu erhöhen
- 30. Gibt es Vorschläge zum Verringern der CPU-Auslastung in Java?
Thanx! Ich werde es versuchen. Für was es wert ist, betrachte ich das Problem an beiden Enden. Ich habe einen iPhone-Client, der den Audio-Stream aufnimmt, und durch die Verwendung einer anderen API auf dem Client erhalte ich ein anderes Volumen. Ich glaube also nicht, dass mein Problem ausschließlich auf der Serverseite liegt. – Cliff
@ markusk Wenn die Frage für das Volumen spezifisch ist, sollte 'FloatControl.Type.VOLUME' verwendet werden? –
Nur für den Rekord: der Lautstärkeregler hat eine Ausnahme (nicht unterstützt), während die Master-Gain-Kontrolle nicht (auf einer "SourceDataLine"). – RedGreasel