如何使用Java增加傳出wav音頻流的音量?我遇到了各種Java TTS引擎以及合成語音的輸出音量問題。是否有API調用或我可以用來增加音量的doo-hickey.jar?Java中的音量控制(增加或減少)
19
A
回答
34
後,可以設置與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
可以調整使用增益控制量,嘗試這樣的事情你如果你使用的是Java API的聲音開行
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)); }
}
相關問題
- 1. MPMusicPlayerController音量增加和減少動態
- 2. iPhone音量間歇性地/突然地增加或減少
- 3. 在C++中增加和減少增量控件的值WINAPI
- 4. 減少和增加浮動增量android
- 5. 在Java中的return語句中減少(或增加)運算符
- 6. 在NSString中增加或減少整數
- 7. 增減音量鍵
- 8. 在RecyclerView中增加和減少數量
- 9. 如何增加或減少Java中矩陣的大小?
- 10. 使用Saxon,增加或減少XSLT中的全局變量
- 11. 減少或增加機器人框架中的變量
- 12. 增加或減少手機中的數量表格
- 13. Android的CountDownTimer - 增加或減少計數
- 14. 邊界的增加或減少
- 15. 如何在cocos2dx中使用音量增大和減小控制
- 16. 增加或減少網站尺寸
- 17. 金額不增加或減少
- 18. Zend +/-按鈕來增加或減少值
- 19. 使用jquery增加或減少數值
- 20. 增加/減少大量整數
- 21. JavaScript setInterval增加和減少變量
- 22. 試圖增加/減少變量
- 23. 如果數量在magento中增加或減少,警報或命令或通知?
- 24. 更改增量減少框
- 25. 減少背景音樂的音量
- 26. 如何在java中錄製聲音時減少噪音?
- 27. ValueError:索引必須單調增加或減少:增加毫秒
- 28. 減少循環中遞增的變量
- 29. SoundEffect隨機減少音量
- 30. 如何從變量增加或減少,直到得到字符
Thanx!我會試試這個。對於我在兩端看問題的價值。我有一個iPhone客戶端攝取音頻流,只是通過在客戶端上使用不同的API,我獲得了不同的音量。所以我不認爲我的問題完全是服務器端。 – Cliff 2009-06-05 13:48:33
@ markusk如果問題是特定於音量的,應該使用「FloatControl.Type.VOLUME」? – 2011-08-02 17:39:47