快速增加录制的音频文件的音量

Que*_*Del 7 audio file swift

我正在迅速开发应用程序。我希望能够增加录制文件的数量。有没有一种方法可以直接在应用程序内部执行?我在这里找到了Audiokit 以及这个问题,但并没有太大帮助。

谢谢!

jak*_*ake 6

带有AudioKit

选项A: 您是否只想导入文件,然后播放比导入的文件大声的声音?您可以使用AKBooster

import AudioKit

do {
    let file = try AKAudioFile(readFileName: "yourfile.wav")
    let player = try AKAudioPlayer(file: file)
    // Define your gain below. >1 means amplifying it to be louder
    let booster = AKBooster(player, gain: 1.3)
    AudioKit.output = booster
    try AudioKit.start()
    // And then to play your file:
    player.play()
} catch {
    // Log your error
}

Run Code Online (Sandbox Code Playgroud)

只需设置gain的值booster,使之更响亮。


选项B:您还可以尝试对音频文件进行归一化,这实际上会在记录中应用多个常数(相对于记录中的最高信号电平),以便达到您定义的新目标最大值。在这里,我将其设置为-4dB。

let url = Bundle.main.url(forResource: "sound", withExtension: "wav")
if let file = try? AKAudioFile(forReading: url) {
    // Set the new max level (in dB) for the gain here.
    if let normalizedFile = try? file.normalized(newMaxLevel: -4) {
        print(normalizedFile.maxLevel)
        // Play your normalizedFile...
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法将所有内容的幅度增加到dB的水平-因此它不会影响文件的动态(SNR),并且只会增加达到新最大值所需的数量(因此您可以放心地将其应用于您所有的文件都是统一的)。


带有AVAudioPlayer

选项A:如果您想调节/控制音量,AVAudioPlayer有一个volume成员,但是文档说:

音频播放器的播放音量,线性范围为0.0到1.0。

1.0原始文件的卷和默认文件的卷在哪里。因此,您只能通过它使其更安静。如果您有兴趣,请使用以下代码:

let soundFileURL = Bundle.main.url(forResource: "sound", withExtension: "mp3")!
let audioPlayer = try? AVAudioPlayer(contentsOf: soundFileURL, fileTypeHint: AVFileType.mp3.rawValue)
audioPlayer?.play()
// Only play once
audioPlayer?.numberOfLoops = 0
// Set the volume of playback here.
audioPlayer?.volume = 1.0
Run Code Online (Sandbox Code Playgroud)

选项B:如果您的声音文件太安静,则可能是电话听筒传出的声音。在这种情况下,您可以尝试覆盖输出端口以使用扬声器:

do {
    try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSession.PortOverride.speaker)
} catch let error {
    print("Override failed: \(error)")
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用以下代码对此进行永久设置(但我不能保证您的应用会进入AppStore):

try? audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, with: AVAudioSessionCategoryOptions.defaultToSpeaker)
Run Code Online (Sandbox Code Playgroud)

选项C:如果选项B不能满足您的要求,那么您可能对“如何使AVAudioPlayer比赛变得更响亮” 并不满意。您最好自己使用一些外部软件编辑源文件 -我可以推荐Audacity作为这样做的好选择。


选项D:我只听说过的最后一个选项。您也可以查看MPVolumeView,它具有用于控制系统输出和音量的UI。我对它不太熟悉-此时可能正在接近传统。