Jak zwiększyć głośność wychodzącego strumienia audio wav za pomocą Java? Mam problemy z różnymi silnikami Java TTS i głośnością wyjściową syntezatora mowy. Czy istnieje wywołanie API lub doo-hickey.jar, którego mogę użyć do podkręcenia woluminu?Regulacja głośności dźwięku (zwiększanie lub zmniejszanie) w Javie
19
A
Odpowiedz
34
Jeśli używasz API Java dźwiękowe, można ustawić poziom głośności za pomocą regulatora MASTER_GAIN.
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
można regulować głośność za pomocą gaincontrol, spróbuj coś takiego po otwarciu linia
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
Regulacja głośności w głośnikach i na jednej ścieżce to dwie zupełnie różne rzeczy. –
Powiązane problemy
- 1. Regulacja głośności w aplikacji Android
- 2. regulacja głośności mikrofonu z javascript
- 3. Zwiększenie głośności nagranego dźwięku
- 4. Regulacja głośności midi Java nie zadziała
- 5. Zwiększanie (lub zmniejszanie) pamięci dostępnej dla procesów R
- 6. Dynamicznie zwiększanie/zmniejszanie prędkości wideo w aplikacji formularzy systemu Windows
- 7. Generator dźwięku sinusoidalnego w Javie
- 8. Zmniejszanie początku() iteratora, a następnie zwiększanie go ponownie
- 9. Zwiększanie i zmniejszanie wartości wejściowych przy użyciu jquery
- 10. iOS: Dostęp do urządzenia sprzętowego regulatora głośności dźwięku
- 11. Jak naśladować naciśnięcie klawiszy mediów w Javie?
- 12. Poziom głośności iPoda wpływa na poziom głośności aplikacji
- 13. Jak utworzyć formularz z ramką, ale bez paska tytułu? (jak regulacja głośności w systemie Windows 7)
- 14. Regulacja dla LSTM w tensorflow
- 15. Zmniejszanie pętli
- 16. Zwiększanie obciążenia i zmniejszanie wydajności podczas zastępowania DBCP do puli JDBC Tomcat
- 17. Zanikanie/zanikanie dźwięku
- 18. Programowe zmniejszanie rozmiaru pliku JPEG
- 19. Blok Bundle Regulacja przepływu
- 20. Zmniejszanie rozmiaru obiektów cPickle
- 21. Zmniejszanie/usuwanie obcinania w SoX podczas konwersji częstotliwości próbkowania
- 22. funkcji Zwiększanie w tablicy
- 23. Zwiększanie zmiennej w foldLeft
- 24. Regulacja kolorystyka trybie powłoki
- 25. Zmniejszanie rozmiaru Texture2D w XNA
- 26. iOS5 OpenAL wyciszenie i regulatory głośności
- 27. MPMoviePlayerController odmawia odtwarzania dźwięku przez głośnik w iOS4
- 28. Android MediaRouter głośności wydarzenia
- 29. jQuery Regulacja wysokości ekranu rozdzielczości
- 30. odtwarzania dźwięków niezależnie od poziomu głośności urządzenia
Niż! Spróbuję tego. O ile warto, patrzę na problem na obu końcach. Mam klienta iPhone'a zajmującego się strumieniem audio i po prostu używając innego API na kliencie, otrzymuję inny wolumin. Więc nie sądzę, że mój problem jest całkowicie po stronie serwera. – Cliff
@ markusk Jeśli pytanie dotyczy objętości, należy użyć 'FloatControl.Type.VOLUME'? –
Tylko dla rekordu: kontrola głośności rzuciła wyjątek (nie jest obsługiwany), podczas gdy kontrola wzmocnienia nadrzędnego nie miała (na 'SourceDataLine'). – RedGreasel