Downloading/converting to ogg/opus16 audio files

Continuing the discussion from Audio files from FCBH Bible Brain:

I’m still wondering if there is a way to download the opus16 audio files from FCBH. There is a way to download the .mp3 files in the linked thread, and a method described for how to USE the opus16 files in SAB (by adding “-opus16” to the Fileset ID). But is there a way to download those files from FCBH? Maybe @jbarndt can weigh in on that question?

But I also have some audio files that were produced locally. They are currently in .mp3 format, but I would love to convert them into .ogg format files at a lower bit rate to save myself some MBs in the audio folder or app, but basically keeping the same audio quality (or so the ads say…). Does anyone have any recommendations for what tool(s) to use to produce those .ogg files?

I’ve taken a look at Audacity, which can export .ogg files, but the only output control is a Quality slider that goes from 0 to 10. And I found that even using 0, the bit rate is still really high:
image
and is in fact the same for all the Quality levels I tried. (I assume lower quality in that case then just means more compression, taking more liberties with the data to get a smaller file, like .jpeg compression? It seems like reducing the bit rate is a lot easier way to make the file smaller…) I assume the FCBH -opus16 files have a bit rate of 16kbps, correct?

So how can I convert/produce those files? I’m not opposed to paying money for a tool, but an open source tool that I can freely encourage others to use would be preferable. Thanks for your input!

FYI - here’s a good description of the difference between sample-rate, bit-depth and bit-rate:

Poking around a bit on the Internet, I came across this audio converter which allows you to select output Audio bitrate for your .ogg export:
https://www.alternate-tools.com/pages/c_quickaudio.php?lang=ENG

Interestingly the bitrate selection drop-down only goes down to 32. If I manually make it 16, it doesn’t produce a valid output file. But if I leave it at 32, it produces a valid .ogg audio file, that is a very good representation of the 96kbps .mp3 source file. (The test audio is of Scripture being read slowly in a good studio environment.) Furthermore, the .ogg file produced is 1,096 KB, compared to the 3,352 KB source, so a very nice size savings. The Audacity .ogg output at quality level 0 was 1,562 KB.

I also discovered that VLC Media Player can do the conversion to .ogg, and you can modify the audio codec properties to reduce the bitrate down to 32. (If I make it 16, it refuses to produce the file in a similar way to the other program.) With a bitrate of 32, it produces an .ogg file of 1,137 KB.

Let’s compare these results, and a few others:
image

Note that all of the lower bitrate .ogg files I output are interpreted as 705kbps by Windows explorer. The .ogg file I exported at 96kbps is interpreted as 1141kbps by Windows explorer. I’m not sure what that is about…

So the Quick Audio output is the smallest, but VLC is a close second, and that app has a better reputation, so that might be the best choice so far.

This analysis provokes a couple of questions…
Why are the FCBH files said to be opus16, when a 16kbps output bitrate for .ogg doesn’t seem to be possible from these test cases? Would it be possible to share the process by which FCBH creates these opus16 files from the original 64kbps .mp3 files? Or at least the parameters used for the output?

We use a script with ffmpeg to convert the 64k MP3s into a webm file with opus16 encoding:

This script calls ffmpeg on the command line with certain options enabled. if you wanted to run this yourself on 64k MP3 audio file, here’s an example using Mattthew 1 of the KJV:

ffmpeg -y -i B01___01_Matthew_____ENGKJVN1DA.mp3 -map 0:a -c:a libopus -b:a 16k -vbr off -application voip B01___01_Matthew_____ENGKJVN1DA.webm

Thanks so much for sharing your process. I haven’t had a chance to test it out yet, but am eager to do so. Thanks for your collaboration.

I have now been able to test out the conversion process described above, and it seems to work very well. 64kbps mp3 files reduce to about 30% of their original size. Some 96kbps mp3 files that I had reduced to about 20% of their original size. Audio quality between the two formats is not really perceptibly different.

I have been using the ffmpeg program that gets installed with SAB in this location:
“C:\Program Files (x86)\SIL\Scripture App Builder\bin\ffmpeg”

For those who know their way around Python, here’s a script I use that will convert mp3 to webm in bulk.

import os
from pathlib import Path

#input folder path containing your mp3s
path = "C:/Users/example_path"
print(path)

filelist = []

# Finds all mp3s in folder given from path
for filepath in Path(path).glob('*.mp3'):
    filelist.append(str(filepath))

# Executes ffmpeg on each mp3 file in folder
for filepath in filelist:
    command = "ffmpeg -y -i "+filepath+" -map 0:a -c:a libopus -b:a 16k -vbr off -application voip "+ filepath.removesuffix(".mp3") + ".webm"
    print(command)
    os.system(command)

Make sure to check out:

There are some parameters suggested above that I have tested and found to be problematic for producing audio for apps. The command used by SAB for conversion seems to work well.