Tag: 录音

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 […]

在语音呼叫期间,从麦克风录制的音频被静音

我正在尝试构建从麦克风录制音频的应用程序,以便以后处理。 一切都运行得很好,除了以下问题:在语音呼叫(进出)期间,录制的文件没有音频数据,它只包含NULL。 我使用的是AudioRecorder和MediaRecorder,两者都有同样的问题。 问题是,这是正常的API行为还是我遗漏了什么? 这里有一些额外的信息:Permissions: SDK:minSdkVersion =“9”targetSdkVersion =“15” 我正在使用Jelly Bean在Nexus S上测试我的应用程序。 提前致谢! PS如果有人需要更具体的细节,请告诉我。 编辑 好的,所有答案都表明这是一种正常的行为,但我仍然感到困惑,因为我可以找到许多使用麦克风录制语音通话的应用程序。 录制语音通话不是我的意图,但我认为即使在语音通话期间我也可以使用麦克风。 有什么建议么? 编辑 我刚刚测试了Galaxy S Gingerbread上的应用程序,它确实有效! 现在我真的很困惑,开始明白“分割”这个词是什么意思……

android audioRecord-应用变化的增益

我想将增益应用到我的录音(PCM 16bit)。 为此,我有以下代码: for (int i=0; i<buffer.length/2; i++) { // 16bit sample size short curSample = getShort(buffer[i*2], buffer[i*2+1]); if(rGain != 1){ //apply gain curSample *= rGain; //convert back from short sample that was "gained" to byte data byte[] a = getByteFromShort(curSample); buffer[i*2] = a[0]; buffer[i*2 + 1] = a[1]; } 如果像这样应用(将每个样本乘以分数),我会在播放时停止播放(听起来像老式对讲机)。 是否有一些公式可以改变每个样本的增益因子? 我假设样本范围有一些maxValue和minValue(我猜[-32768,+ 32767])并且在某些公式中使用这些值我可以获得应用于当前样本的变化增益因子。 //编辑:已添加 […]

如何在Java中对多声道声音输入进行采样

我意识到这可能是相对利基,但也许这就是为什么这是好的问题无论如何。 我正在寻找一个硬件多输入录音控制台(例如Alesis IO 26)来接收Adat lightpipe 8声道输入来进行信号处理。 由于我还没有获得该设备并且需要弄清楚这是否可行(预算问题),我想问一下是否有人有任何经验来获取Java中的所有这8个数据输入? 我已经看过很多使用Javax.sound.sampled库录制声音的例子,但是我找不到任何超过2的多声道信息。我感兴趣的是将8个声道单独作为单声道源采样到对它们执行一些简单的DSP。 硬件设备会被视为一个混音器吗? 8个通道表示为8行? 我希望我的术语合适。 如果有人可以向我指出任何相关信息,我将不胜感激。 谢谢!

在Android中从麦克风录制wav文件 – 问题

我需要能够在Android中使用麦克风创建WAV文件。 目前,我遇到了很多麻烦。 到目前为止,这是我的情况。 我正在使用micDroid项目代码的一部分进行记录: //read thread int sampleRate = 44100; int bufferSize = AudioRecord.getMinBufferSize(sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT); AudioRecord ar = new AudioRecord(AudioSource.MIC,sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT,bufferSize); short[] buffer = new short[bufferSize]; ar.startRecording(); while(isRunning){ try{ int numSamples = ar.read(buffer, 0, buffer.length); queue.put(new Sample(buffer, numSamples)); } catch (InterruptedException e){ e.printStackTrace(); } } //write thread int sampleRate = 44100; WaveWriter writer = new WaveWriter(“/sdcard”,”recOut.wav”,sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT); try […]

内部录音程序

注意:这不是使用麦克风的东西。 我想内部录制音频。 我想用C#或Java编写一个程序来记录发送到计算机中扬声器的音频数据。 最终产品将允许用户点击“记录”按钮,此时正在播放的任何内容都将在内部记录,直到用户点击“停止”按钮,此时收集的所有数据将保存到音频文件中,如wav,mp3等 我有一台MacBook Pro可以并行运行Windows 7。 我可以访问多台PC,因此我也可以在纯Windows平台上工作。 理想情况下,无论什么平台都没关系。 我不知道从哪里开始 – 我用音乐做过的最多就是用Java播放.wav文件。 如果有人对这两种语言都有任何建议,参考,建议,技术偏好,我很乐意在这里!

直播音频流java

我正在实现从MIC到另一台PC上的java服务器的实时流媒体。 但我只听到白噪声。 我已经附加了客户端和服务器程序 Client: import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.TargetDataLine; public class Mic { public byte[] buffer; private int port; static AudioInputStream ais; public static void main(String[] args) { TargetDataLine line; DatagramPacket dgp; AudioFormat.Encoding encoding = AudioFormat.Encoding.PCM_SIGNED; […]

Java – 从混音器录制

我有一个问题与我之前的问题有关。 我想从混音器(扬声器)录制音频,我正在使用javax.sound。 我必须设置audioFormat,我不知道在那里键入什么:/使用类ListMixer(我在这里找到 – > http://forums.oracle.com/forums/thread.jspa?threadID=2198477&tstart=2 ) ,我写这样的东西: http : //forums.oracle.com/forums/thread.jspa?threadID = 21848477&tstart = 2但我没有任何关于采样率的信息(未知采样率)。 程序抛出此exception: java.lang.IllegalArgumentException:Line unsupported:interface TargetDataLine支持格式PCM_UNSIGNED 44100.0 Hz,8位,单声道,4字节/帧, 码: package sound; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.sound.sampled.*; public class AudioCapture02 extends JFrame{ boolean stopCapture = false; ByteArrayOutputStream byteArrayOutputStream; AudioFormat audioFormat; TargetDataLine targetDataLine; AudioInputStream audioInputStream; SourceDataLine sourceDataLine; public AudioCapture02(){//constructor […]

如何暂停/恢复使用mediarecorder创建的录音?

我正试图在来电暂停录音并稍后继续录音。 我正在使用andriod mediarecorder并尝试在MPEG4录制。 我尝试暂停/恢复重置/停止录制并使用setOutputFile(fd)启动它, fd是已停止/暂停的音频文件的文件描述符,希望它会附加但我没有运气。 有没有办法实现这个或附加两个录音或我应该放弃mediarecorder 。 码: private MediaRecorder media_recorder; private String file_path = null; public void startRecording(path) { file_path = path media_recorder= new MediaRecorder(); media_recorder.setAudioSource(MediaRecorder.AudioSource.MIC); media_recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); media_recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); media_recorder.setOputputFile(path); media_recorder.prepare(); } public void pauseRecording() { media_recorder.stop(); media_recorder.setAudioSource(MediaRecorder.AudioSource.MIC); media_recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); media_recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); FileOutputStream paused_file = new FileOutputStream(file_path); media_recorder.setOutputFile(paused_file.getFD()); } public void resumeRecording() { media_recorder.prepare(); media_recorder.start(); } pauseRecording()停止录制但是恢复失败,消息start […]

如何在16khz 16bit mono little-endian中转换或录制.wav文件?

我只是在java中实现sphinx4语音识别。我需要的是如何录制声音或将任何声音.wave文件转换为16khz 16bit mono little-endian文件。 我已经搜索了很多这个..但是我没有具体的指导..希望任何人从堆栈溢出家庭可以帮助我或给我一个适当的指导。 1)。 我只需要在wave文件中用16khz 16bit单声道小端文件格式或2)录制音频。 我需要使用java中16khz 16bit单声道小端格式的任何采样率转换预先录制的文件。 我需要实现上述function之一..所以任何人都可以帮我解决这个问题…提前感谢 我用第一个选项创建了带有上述配置的wav文件,并在android中使用了以下代码。 package com.varma.samples.audiorecorder; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.annotation.SuppressLint; import android.app.Activity; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.Button; public class RecorderActivity extends Activity { private static final int RECORDER_BPP =16; private […]