# SPDX-License-Identifier: CECILL-2.1

module SpeechCorpora

using Fast
using HTTP
using JSON
using PortAudio
using WAV

export
    # ManifestItem
    Recording,
    Supervision,
    load,
    play,

    # Manifest interface
    writemanifest,
    readmanifest,

    # Corpora interface
    download,
    prepare,

    # Corpora
    MultilingualLibriSpeech,
    MiniLibriSpeech



const corporadir = Fast.CONFIG["resources"]["corpora"]

abstract type SpeechCorpus end
path(corpus::SpeechCorpus, dir) = joinpath(dir, corpus.lang, corpus.name)
Base.download(corpus::SpeechCorpus) = download(corpus, corporadir)
prepare(corpus::SpeechCorpus) = prepare(corpus, corporadir)

include("manifest_item.jl")
include("manifest_io.jl")
include("corpora/multilingual_librispeech.jl")
include("corpora/mini_librispeech.jl")

end