Tag: javax.sound.sampled

Java语音服务器不工作

我正在尝试制作语音服务器,服务器正在抛出此错误“javax.sound.sampled.LineUnavailableException:行格式为PCM_SIGNED 8000.0 Hz,8位,单声道,1字节/帧,不支持。” 。 这是我的代码, 提前谢谢你 public class VoiceUser extends Thread { // CHAT USER private ObjectOutputStream clientOutput; public VoiceUser(Socket sv) { try { System.out.println(“VSTART”); clientOutput = new ObjectOutputStream(sv.getOutputStream()); outputArray.add(clientOutput); } catch (IOException e) { System.out.println(“Can’t create stable connection between server and client”); } } public void run() { try { AudioFormat af = new […]

剪辑有时不播放

我有一个Sound类,其中包含一个方法,当调用该方法时,使用Clip对象(在本例中为clip )播放声音。 public static void play() { clip.stop(); // The purpose of the first three lines clip.flush(); // is to restart the Clip object so it clip.setFramePosition(0); // can be played multiple times. clip.start(); } Clip对象的实例化发生在一个单独的静态方法中,该方法在此方法之前调用,这就是上述方法可以声明为静态的原因。 另一个实现KeyListener类包含以下代码: public void keyPressed(KeyEvent e) { Sound.play(); // Sound is the class that implements the previous method. } 因此,每按一次键,我的代码应播放与clip相关的声音。 […]

AudioInputStream不起作用

我每次用户按下按钮时都会尝试播放.wav声音,但会抛出exception: 线程“Thread-0”中的exceptionjava.lang.IllegalArgumentException:格式无效 at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142) 在org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99) 在org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283) 在org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402) 在org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453) 在Uber.play(Uber.java:534) 在优步$ 5.run(Uber.java:340) 在java.lang.Thread.run(Thread.java:724) 这是代码: //Play Audio File public void play(String file) throws LineUnavailableException, UnsupportedAudioFileException, IOException { AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(file)); Clip clip = AudioSystem.getClip(); clip.open(inputStream); clip.start(); }

如何计算java中音频信号的电平/幅度/ db?

我想在java中为麦克风创建一个音频电平表,以检查输入的大小。 它应该看起来像操作系统之一。 我不是在询问gui。 它只是计算出来的字节流中的音频电平 n = targetDataLine.read( tempBuffer , 0 , tempBuffer.length ); 所以我已经有了一些正在运行的东西,但它甚至都没有接近我操作系统的水平仪(窗口)它卡在中间。 我有0到100之间的值是好的,但是在中间音量,无论输入多么大,它都会在60左右。 这是我现在计算它的方式: amplitude = 0; for (int j = 0; j tempBuffer[j+1]) amplitude = amplitude + tempBuffer[j] – tempBuffer[j+1]; else amplitude = amplitude + tempBuffer[j + 1] – tempBuffer[j]; } amplitude = amplitude / tempBuffer.length * 2; 是否有更好/更精确的方法来计算音频电平来监控它? 或者我可能犯了一个重大错误? 那是我的Audioformat: public […]

如何使用Java Sound中的音频样本数据?

这个问题通常被问到是另一个问题的一部分,但事实certificate答案很长。 我决定在这里回答它,所以我可以在其他地方链接到它。 虽然我不知道Java此时可以为我们生成音频样本的方式,但如果将来发生变化,这可能是一个适合它的地方。 我知道JavaFX有这样的东西,例如AudioSpectrumListener ,但仍然不能直接访问样本。 我正在使用javax.sound.sampled进行播放和/或录制,但我想对音频做些什么。 也许我想在视觉上展示它或以某种方式处理它。 如何使用Java Sound访问音频样本数据? 也可以看看: Java声音教程 (官方) Java声音资源 (非官方)