录音机不需要未压缩的线性PCM音频.压缩AMR
会很好.用于录制音频的iPhone框架非常简单,但我找到的用于设置音频格式(来自Apple)的唯一示例使用LinearPCM.我已经尝试了各种其他值的组合,但似乎无法获得任何工作.
有人有任何实际记录的代码AMR
吗?
编辑: AMR格式是设置数据类型的选项之一,但其他选项(数据包大小,帧大小等)似乎不匹配,无论我将它们设置为什么.
编辑:这是我对PCM版本的看法:
/*
If we want to use AMR instead of PCM:
AMR Format:
Sampling Frequency: 8 kHz/13-bit (160 samples for 20 ms frames), filtered to 200-3400 Hz
eight source codecs : 12.2, 1.2, 7.95, 7.40, 6.70, 5.90, 5.15, 4.75 kbit/s
generated frame length: 244, 204, 159, 148, 134, 118, 103, 95 bits per frame
*/
format->mFormatID = kAudioFormatLinearPCM;
format->mSampleRate = 8000.0; //8 kHz
format->mFramesPerPacket = 1; //1 frame per packet
format->mChannelsPerFrame …
Run Code Online (Sandbox Code Playgroud) 我想用Java应用程序录制语音; 我想这基本上是一个将在客户端运行的applet.但我不知道该怎么做......任何想法?另外,我想播放录制的声音.
我听说过Java Speech API.有什么想法可以提供帮助吗?
我正在尝试运行Android 2.2模拟器附带的Speech Recorder.问题是我点击"录制"按钮的那一刻:
它中止了一条错误消息"应用程序语音记录器(进程com.android.speechrecorder)意外停止.请再试一次."
问题是再次尝试并没有帮助.
现在,我搜索了StackOverflow,我梳理了整个互联网,我找到了许多相同问题的报告,没有任何可行的解决方案.
我的结论是,由于一些奇怪的原因,Android模拟器能够使用Windows音频设备进行输出,但不能用于输入.
这是为什么?
我知道其他虚拟化软件(例如VMWare)使用主机音频设备的输出和输入部分都没有问题.
此外,如果Speech Recorder从未为任何人的模拟器工作,为什么要把它放在那里?
当然这对某人有用.有没有办法让Speech Recorder为我工作?
我使用的是32位Windows XP,我的AVD是用SD卡定义的(启动时安装).
更新:我按照@Klaus的建议尝试查看是否抛出任何异常.我这样做只需在命令行输入ddms.bat即可启动独立版本的DDMS(底部有一个logcat显示).果然,点击"录制"按钮后我收到以下异常:
03-29 14:16:58.195: ERROR/AudioRecord(303): Could not get audio input for record source 1
03-29 14:16:58.195: ERROR/srec_jni(303): initCheck error -22
03-29 14:16:58.205: DEBUG/SpeechRecorderActivity(303): run audio capture thread
03-29 14:16:58.205: WARN/dalvikvm(303): threadid=8: thread exiting with uncaught exception (group=0x4001d800)
03-29 14:16:58.215: ERROR/AndroidRuntime(303): FATAL EXCEPTION: Thread-9
03-29 14:16:58.215: ERROR/AndroidRuntime(303): java.lang.NullPointerException
03-29 14:16:58.215: ERROR/AndroidRuntime(303): at com.android.speechrecorder.SpeechRecorderActivity$4.run(SpeechRecorderActivity.java:192)
03-29 14:16:58.285: WARN/ActivityManager(59): Force finishing activity com.android.speechrecorder/.SpeechRecorderActivity
03-29 14:16:58.904: DEBUG/dalvikvm(59): GC_FOR_MALLOC …
Run Code Online (Sandbox Code Playgroud) 我在网上搜索过这个,但我仍然有点困惑(因为我相信如果他们想到这样的话,其他人就会这样).我想在序言中说这不是为了家庭作业和/或利润.
我想创建一个应用程序,可以在准备爆米花时听你的微波炉.当弹出片之间有一定的时间间隔(比如5-6秒)时,它会发出警报.再一次,这只是一个让我忙碌的项目 - 不是为了课堂.
无论哪种方式,我都在努力弄清楚如何实时分析音频输入.也就是说,我需要一种方法来记录发生"弹出"的时间.所以你们不认为我没有对此事进行任何研究,我已经检查了这个问题,并广泛搜索了AudioRecord功能列表.
我想我可能不得不对其中一个版本的read()做一些事情,然后每两秒左右将录制的音频与录制的"pop"音频进行比较(即如果是70%或更多的话) byte [] audioData数组与弹出声音相同,然后记录时间).任何有Android音频输入经验的人都可以告诉我,我是否至少在正确的轨道上?这不是我想要你为我编码任何东西的问题,而是一个关于我是否在正确的轨道上的问题,如果不是,我应该朝哪个方向前进.
我正在实施录音.它与caf
&wave
格式工作正常.但问题是文件太大.
那么,任何人都可以帮助我录制音频,其格式也会在窗口和文件大小上播放.
我试过的代码如下:
dirPaths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString *soundFilePath = [docsDir
stringByAppendingPathComponent:@"sound.wave"];
NSLog(@"%@",soundFilePath);
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:16],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:8000.0], AVSampleRateKey,
[NSNumber numberWithInt:8], AVLinearPCMBitDepthKey,
nil];
NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc]
initWithURL:soundFileURL
settings:recordSettings
error:&error];
if (error)
{
NSLog(@"error: %@", [error localizedDescription]);
} else {
[audioRecorder prepareToRecord];
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过服务器传输音频.我已经设置了所有内容,并且它可以正常录制和播放静态音频,但是当我尝试流式传输音频时,播放方面会有延迟.
我做了谷歌搜索,但找不到正确的方法.我正在使用AudioRecord和Audiotrack Android媒体API来发送和接收音频数据.谁能告诉我如何处理这种延迟?
我在GOOGLE GROUP上添加了我的代码以获得清晰的图片.
我试过这种方式,将5块音频数据保存在一个缓冲区中,该缓冲区通过服务器并在填充5块数据时播放并再次获取下5块音频数据并填充它直到1024字节数据(它写入录音带和播放方法被称为).这也有延迟,任何其他解决方案?
android audio-recording audio-streaming audio-player android-mediaplayer
我需要一个创建一个Android应用程序,用于录制语音,同时显示语音(声音)级别的可视化.
我已经创建了一个录音应用程序,但我无法添加声级可视化.我该怎么做?
请有人帮我提供建议或示例教程链接或代码.
Givent一个audio.wav录音,在开始和结束时都保持沉默至少1秒......
如何用SOX去噪?
我正在尝试在app引擎网站上使用recorderjs,用户上传短音频录音(比如说,长达1到12秒).我注意到我上传的WAV文件比我预期的要大得多.例如,我刚刚创建了一个持续大约9秒的记录,上传的blob是1736769字节,大于1.5兆字节.
题:
如何修改recorderjs代码(或我自己的代码 - 也许我正在使用recorderjs),以便我的音频blob具有较低的比特率?我希望10秒钟的录音能够安全地低于1 MB.
我的猜测是我需要在这里修改encodeWAV函数,或者可能是exportWAV,但我不确定如何.在exportWAV中删除交错缓冲区的每个其他元素是否有意义?有更聪明的方法吗?导出的WAV的比特率如何取决于我的计算机的属性(例如我的声卡的采样率)?
如果它可能有用,我可以在我自己的代码上添加一些细节.
编辑:如果您想查看实际示例,请安装Google Chrome测试版并尝试此页面.在我的电脑上,5-10秒长的录音超过1 MB.
非常感谢,
阿德里安
audio-recording ×10
android ×4
audio ×4
ios ×3
core-audio ×2
iphone ×2
java ×2
objective-c ×2
amr ×1
applet ×1
audio-player ×1
html5 ×1
microphone ×1
recorder.js ×1
sox ×1
wav ×1
xcode ×1