I was trying to generate a signature from an audio file on-disk. Loading the files work, however generating signatures from them don't seem to work.
Here's the code I'm using to generate the signature:
func signature(from asset: AVAudioFile) -> SHSignature? {
let format = asset.processingFormat
let frameCount = AVAudioFrameCount(asset.length)
guard let buffer = AVAudioPCMBuffer(pcmFormat: format, frameCapacity: frameCount) else { return nil }
let generator = SHSignatureGenerator()
do {
try asset.read(into: buffer)
let sampleRate = asset.processingFormat.sampleRate
try generator.append(buffer, at: AVAudioTime(sampleTime: .zero, atRate: sampleRate))
return generator.signature()
} catch {
print(error)
return nil
}
}
There are no errors being thrown in the code, but when I try to use the signatures in an SHSession, the audio is not being recognised. However, using the Shazam library works.
I have tried searching ways to do this, however the only examples I've seen are for generating signatures from live audio input. Is there something I'm missing from the code above?