AudioPlayer (Swift) - 播放声音两次 - 有间隙

AudioPlayer (Swift) - play sound twice - with gap

我正在使用以下代码将声音文件播放两次。第二个声音紧随第一个

是否可以在它们之间留出时间间隔(1秒)?我试图找到阅读 Apple Docs

的解决方案
var letterSound: AVAudioPlayer!

...


     @IBAction func speakLetter(sender: AnyObject) {

            let soundFile: String  = "SoundFile" + String(letterNumber)

            let path = Bundle.main.path(forResource: soundFile, ofType:"mp3")!
            let url = URL(fileURLWithPath: path)

            do {
                let sound = try AVAudioPlayer(contentsOf: url)
                letterSound = sound
                letterSound.numberOfLoops = 1
                letterSound.play()

            } catch {
                // couldn't load file :(
            }

        }

一种选择是在音频文件末尾添加一些 'white space' 或静音。

如果你没有音频编辑器我推荐Audacity, it's free and there are lots of tutorials on how to add silence.


如果您想要更多基于代码的选项,您可以考虑使用 AVAudioPlayerDelegate didFinishPlaying 方法来检测第一次播放的结束,然后使用 play(atTime:) 触发下一个循环从现在开始 1 秒。

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
    player.play(atTime: player.deviceCurrentTime + 1.0)
}

此代码未经测试,我认为它可能会创建一个无限循环,因此您可能需要一些额外的逻辑来确保它只循环一次