我正在使用AVCaptureSession使用AVCaptureVideoDataOutput和AVCaptureAudioDataOutput将视频和音频录制到示例缓冲区中。
iPhone(4 和 4S)的默认音频采样率为 44100Hz。我想将其设置为 48000Hz,但是 AVCaptureSession 似乎没有任何音频采样率设置。
我曾尝试使用AVAudioSession来更改硬件采样率(使用 setPreferredHardwareSampleRate),但尽管它报告硬件采样率已更改(激活会话后),但这不会影响我在 AVCaptureAudioDataOutput 的示例委托中获得的实际采样率。
有没有办法从 AVCaptureSession 本身设置音频采样率?
假设我有两个相同采样率的音频段,它们是从 Pydub 中的 .wav 文件导入的,并假设我知道哪个更短。现在假设我想将较长的音频文件分成两段,以便第一段与较短的音频文件具有完全相同的长度(下降到完全相同的样本数!)并将这两个段中的每一个分配给新的音频段. 我怎样才能在 Pydub 中做到这一点? 如果我不能使用 Pydub 达到这种精度水平,你能给我一个同样有效的替代方案吗?
我可以设置我想要的任何采样率吗?有什么限制?
硬件采样率如何?一旦确定,单位之间传递的内部采样率有什么限制?
我猜测实际的硬件速率可能必须是44.1KHz的一些位移,并且任何内部采样率必须是该原始值的向下位移(例如22.1KHz,11.05KHz).这很接近吗?
据我了解,
1.我从音频会话中设置硬件采样率.
2. 系统会将采样率设置为尽可能接近我指定的采样率.
3.然后我查询音频会话以查找我设置的相同属性,这将为我提供它正在使用的实际采样率
在音频单元级别,特别是RemoteIO单元,文档说明单元连接到硬件的两个点(即麦克风(输入)总线的输入范围和扬声器(输出)总线的输出范围) ,可以检索采样率但不 设置.
但是,我尝试在构建远程I/O单元时访问此值,并返回零.我想也许我需要启动该单元才能从其连接中获取有意义的数据(启动它的行为可能会创建连接).所以这里的解决方案似乎是从音频会话中获取采样率并使用它,如上所述.
需要标签:音频单元
我一直在搞乱Android API的AudioRecord功能,并发现了一些奇怪的行为.
背景信息:我的手机是HTC Incredible我使用Eclipse插件进行Android开发与模拟器.目标平台或操作系统是2.2 ...因为它是我的手机使用的.
一些代码:
bufferSize = AudioRecord.getMinBufferSize(FREQUENCY, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, FREQUENCY, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
Run Code Online (Sandbox Code Playgroud)
这是我用来设置AudioRecord API的代码.现在,对于模拟器,它将FREQUENCY设置为8000以使其工作.回来的缓冲区大小为640.对于手机,我使用44100.这里的一个问题是看起来波形的PCM数据似乎是8位有符号波.我得到的值从-127到128.我认为价值AudioFormat.ENCODING_PCM_16BIT会产生不同的东西.
我用线程处理音频,
public void run() {
while(isRecording) {
audioRecord.startRecording();
byte[] data = new byte[bufferSize];
audioRecord.read(data, 0, bufferSize);
listener.setData(data);
handleData(data);
}
audioRecord.release();
}
Run Code Online (Sandbox Code Playgroud)
我有一种方法可以使用a以图形方式实时显示相应的波形SurfaceView.MIC似乎有很多噪音.我也从模拟器和手机中得到了这个噪音.我是否需要通过某种过滤器运行数据?我想用这些数据计算一些有趣的FFT和东西只是为了解决这个问题.但我需要以某种方式减少噪音.
有没有其他人经历过这一点.有没有人有办法解决吗?
我很感激你的时间和回应,谢谢,dk
什么是用于音频数据采样率转换的优秀Delphi库?我不介意付钱买东西.
我需要实时上采样和下载示例音频.我理解这个理论,但不想写我自己的惯例.
编辑:Mac支持的东西的奖励积分.
我正在使用带有数据采集工具箱的 32 位 Matlab 中的 DataQ 采集设备。
有时,当我将采样率设置为 300 时,它会告诉我:
警告:此硬件无法支持请求的 SampleRate 值 300。采样率已设置为 1000"
但是,如果我将 SampleRate 设置为 1000,它有时会将其设置回 300,并显示相同的错误消息。
此外,如果我设置程序,以便在错误显示并且设备开始记录后它返回 SampleRate,这始终是我设置的任何值,而不是程序声称将其更改为的值。
任何人都知道我如何找出实际采样率或防止它重置我的采样率?我需要知道每秒有多少样本以进行进一步计算。
我开发了一个带有实时视频流的iOS应用程序.我将音频采样率固定为8k.音频在iPhone6设备上运行良好,但是当我在6s和6s中流式传输视频时,音频部分无效.我该如何解决这个问题?我尝试在不同的博客中发现,在iPhone 6s中,采样率锁定在48k.我该如何手动下采样?因为我用于直播的图书馆只能用于8k.请帮我解决这些问题
我已经完成了这个简单的程序。它所做的只是同时记录和回放缓冲区。如果采样率为 44100 hz,一切正常,但如果我将采样率更改为 16000 或 8000,它根本不会产生任何声音,或者可能是一些听不见的白噪声。为什么会发生这种情况?
如何以不同的采样率进行录制?
以下代码我试过:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var engine = AVAudioEngine()
let player = AVAudioPlayerNode()
let audioSession = AVAudioSession.sharedInstance()
let newSrc:UnsafeMutablePointer<Float>! = nil
override func viewDidLoad() {
super.viewDidLoad()
let audioSession = AVAudioSession.sharedInstance()
print(audioSession.sampleRate) // here it prints 44100 hz. because it still using the internal mic.
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .allowBluetooth)
try audioSession.setMode(AVAudioSessionModeDefault)
try audioSession.setActive(true)
} catch {
}
print(audioSession.sampleRate) // here it will print 16000 hz if my bluetooth …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个项目,我尝试在树莓派上使用 Deepspeech,同时使用麦克风音频,但我不断收到无效采样率错误。使用 pyAudio 创建一个流,它使用模型想要的采样率,即 16000,但我使用的麦克风的采样率为 44100。运行 python 脚本时,不会进行速率转换,并且麦克风采样率和预期模型的采样率会产生无效采样率错误。
pyaudio 列出的麦克风信息如下:
{'index': 1, 'structVersion': 2, 'name': 'Logitech USB Microphone: Audio (hw:1,0)', 'hostApi': 0, 'maxInputChannels': 1, 'maxOutputChannels': 0, 'defaultLowInputLatency': 0.008684807256235827, 'defaultLowOutputLatency': -1.0, 'defaultHighInputLatency': 0.034829931972789115, 'defaultHighOutputLatency': -1.0, 'defaultSampleRate': 44100.0}
Run Code Online (Sandbox Code Playgroud)
我尝试的第一件事是将 pyAudio 流采样率设置为 44100 并将其输入模型。但经过测试,我发现当模型得到的速率与要求的 16000 不同时,该模型就无法正常工作。
我一直在尝试找到一种方法让麦克风的变化率达到16000,或者至少在python脚本中使用时将其变化率转换为16000,但没有成功。
我尝试的最新方法是更改 .asoundrc 文件以找到更改速率的方法,但我不知道是否可以在该文件中将麦克风的速率更改为 16000。该文件当前的样子如下:
pcm.!default {
type asymd
playback.pcm
{
type plug
slave.pcm "dmix"
}
capture.pcm
{
type plug
slave.pcm "usb"
}
}
ctl.!default {
type hw
card 0
}
pcm.usb {
type hw
card 1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试查找通过麦克风录制音频时所有 Android 和 iOS 设备支持的采样率。
在 Android 上,文档明确指出 44,1 kHz 是目前保证在所有设备上工作的唯一值(链接)。
但是,我找不到任何有关 iOS 的信息。我找不到任何适用于所有设备的具体价值。据我了解,较新的 iPhone 目前默认使用 48 kHz。我可以按照 Stack Overflow 问题链接中的建议重新采样音频。
是否有任何值可以保证所有 iOS 设备都支持?
sample-rate ×10
ios ×5
audio ×4
python ×2
android ×1
audiorecord ×1
audiounit ×1
avfoundation ×1
core-audio ×1
delphi ×1
iphone ×1
linux ×1
matlab ×1
microphone ×1
pcm ×1
pyaudio ×1
pydub ×1
python-3.x ×1
sample ×1
swift ×1