 private let dequeuSpeechQueueInterval: TimeInterval = 0.25
 private let maxSpeechCountForRefresh = 30
 private let maxRecentSpeechTextsCount = 50
+private let maxPreloadAudioCount = 5
 
 // https://stackoverflow.com/a/38409026/13220031
 // See unicode list at https://0g0.org/ or https://0g0.org/unicode-list/

}

private extension Array where Element == SpeechManager.Speech {
    func firstAudioLoader(state: AudioLoader.LoadState) -> AudioLoader? {
        return map { $0.audioLoader }.filter { $0.state == state }.first
    }
}


            logPreloadStatus("Audio load is in progress for [\(firstLoading.text)].")
            return
        }
        if allSpeeches.loadedAudioLoadersCount > maxPreloadAudioCount {
            logPreloadStatus("Already preloaded enough audio.")
            return
        }
        if let firstNotLoaded = allSpeeches.firstAudioLoader(state: .notLoaded) {
            logPreloadStatus("Requesting load for [\(firstNotLoaded.text)].")
            firstNotLoaded.startLoad(
