You can just write as a regular dataset, as if you were doing no streaming:

in split_generators you download_and_extract the metadata file and all the audio files;
in generate_examples you open your metadata file and iterate on each line to get your examples. And for each example you open the associated audio file from one of the extracted zip directory.

In streaming mode, all the download and extract stuff in split_generators is done virtually, when the dataset script is loaded. This is only when you iterate on the loaded dataset that generate_examples is called. In generate_examples, it is when open is called that the file starts to be downloaded and extracted.
Feel free to ping me if you have questions or if I can help you with the script