gpt4 book ai didi

ios - 如何在 Swift 中以 wav 格式录制音频?

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:01 25 4
gpt4 key购买 nike

我到处都在搜索这个,但找不到合适的方法。我已经成功地以 .wav 格式录制,但问题是,当我尝试从录制的 .wav 文件中读取原始数据时,一些 block 在错误的位置/根本不存在。

我的录音代码:

    func startRecording(){

let audioSession = AVAudioSession.sharedInstance()

try! audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try! audioSession.setActive(true)
audioSession.requestRecordPermission({(allowed: Bool) -> Void in print("Accepted")} )


let settings: [String : AnyObject] = [
AVFormatIDKey:Int(kAudioFormatLinearPCM),
AVSampleRateKey:44100.0,
AVNumberOfChannelsKey:1,
AVLinearPCMBitDepthKey:8,
AVLinearPCMIsFloatKey:false,
AVLinearPCMIsBigEndianKey:false,
AVEncoderAudioQualityKey:AVAudioQuality.Max.rawValue
]

let date = NSDate()

let df = NSDateFormatter()
df.dateFormat = "yyyy-MM-dd-HH:mm:ss"

let dfString = df.stringFromDate(date)

let fullPath = documentsPath.stringByAppendingString("/\(dfString).wav")

recorder = try! AVAudioRecorder(URL: NSURL(string: fullPath)!, settings: settings)
recorder.delegate = self
recorder.prepareToRecord()
recorder.record()

}

当我打印出录音机音频文件的数据时,我得到奇怪的数字,其中应该写入 'd' 'a' 't' 'a',后面是零。然后,在数据中间,它出现了。

没有 64617461 ('d' 'a' 't' 'a') block - 它应该代替 464c4c52

64617461 ('d' 'a' 't' 'a') 在很多零之后的随机点 no 64617461 ('d' 'a' 't' 'a') enter image description here

有没有更好的方法来录制wav文件?我不确定为什么会这样,所以任何帮助将不胜感激。我是否应该以其他格式录制然后将其转换为原始格式?

感谢并抱歉提供了这么多图片。

最佳答案

我认为只有 fmt block 可以保证排在第一位。在 data block 之前有其他 block 似乎没问题,所以跳过非 data block 。

来自 http://soundfile.sapp.org/doc/WaveFormat/

A RIFF file starts out with a file header followed by a sequence of data chunks.

你需要更新你的解析器:)

关于ios - 如何在 Swift 中以 wav 格式录制音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34275577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com