Help

Difference between revisions of "Converting audios"

 
(3 intermediate revisions by the same user not shown)
Line 18: Line 18:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
$ mkdir -p ./new/                    # create folder, if not existing (-p)
 
$ mkdir -p ./new/                    # create folder, if not existing (-p)
$ file="./dir/cmn-0a0a8a8b.flac"     # path to .flac file into varible &quot;$file&quot;
+
$ file="./data/cmn-0a0a8a8b.flac"   # path to .flac file into varible &quot;$file&quot;
$ ffmpeg -i "$file"                 # print out metadata of $file, for some formats only
+
$ ffprobe -hide_banner "$file"       # print out metadata of $file, for some formats only
  
ffmpeg version 5.1.2-3ubuntu1 Copyright (c) 2000-2022 the FFmpeg developers
+
$ ffprobe -hide_banner ./data/cmn-0a0a8a8b.ogg
  built with gcc 12 (Ubuntu 12.2.0-14ubuntu2)
 
  configuration: --prefix=/usr --extra-version=3ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu
 
--arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b
 
--enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi
 
--enable-libglslang --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt
 
--enable-libopus --enable-libpulse --enable-librabbitmq --enable-librist --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr
 
--enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis
 
--enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2
 
--enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-sndio --enable-libjxl --enable-pocketsphinx --enable-librsvg
 
--enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-libplacebo
 
--enable-librav1e --enable-shared
 
  libavutil      57. 28.100 / 57. 28.100
 
  libavcodec    59. 37.100 / 59. 37.100
 
  libavformat    59. 27.100 / 59. 27.100
 
  libavdevice    59.  7.100 / 59.  7.100
 
  libavfilter    8. 44.100 /  8. 44.100
 
  libswscale      6.  7.100 /  6.  7.100
 
  libswresample  4.  7.100 /  4.  7.100
 
  libpostproc    56.  6.100 / 56.  6.100
 
 
Input #0, ogg, from './data/cmn-0a0a8a8b.ogg':
 
Input #0, ogg, from './data/cmn-0a0a8a8b.ogg':
 
   Duration: 00:00:01.25, start: 0.000000, bitrate: 99 kb/s
 
   Duration: 00:00:01.25, start: 0.000000, bitrate: 99 kb/s
Line 67: Line 48:
 
       SWAC_TECH_DATE  : 2009-07-08
 
       SWAC_TECH_DATE  : 2009-07-08
 
       SWAC_TECH_SOFT  : Shtooka Recorder/1.3
 
       SWAC_TECH_SOFT  : Shtooka Recorder/1.3
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Line 80: Line 60:
  
 
== Metadata-based format conversion ==
 
== Metadata-based format conversion ==
This example works on SWAC recorder audio files having the <code>SWAC_TEXT</code> metadata field. In this example, we assume a folder with file <code>audio-0a6f36g.flac</code> and metadata <code>SWAC_TEXT    : 很</code>.
+
This example works on SWAC recorder audio files available at https://packs.shtooka.net. Those files contain rich metadata, with a <code>SWAC_TEXT</code> metadata field. In this example, we assume a folder with file <code>audio-0a6f36g.flac</code> and metadata <code>SWAC_TEXT    : 很</code>.
  
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
for file in ./flac/*.flac
 
for file in ./flac/*.flac
 
do
 
do
   key=$(avconv -i "$file" 2>&1 | sed -ne 's/.*SWAC_TEXT *: //p')                # print metadata, assign SWAC_TEXT's value to variable.
+
   key=$(ffmpeg -i "$file" 2>&1 | sed -ne 's/.*SWAC_TEXT *: //p')                # print metadata, assign SWAC_TEXT's value to variable.
 
   lame --abr 24    -m m -h --resample 22.05 "$file" "./new-24k/cmn-$key.mp3";    # ex: cmn-很.mp3 (24k abr)
 
   lame --abr 24    -m m -h --resample 22.05 "$file" "./new-24k/cmn-$key.mp3";    # ex: cmn-很.mp3 (24k abr)
 
   lame --cbr -b 96 -m m -h --resample 22.05 "$file" "./new-96k/cmn-$key.mp3";    # ex: cmn-很.mp3 (96k cbr)
 
   lame --cbr -b 96 -m m -h --resample 22.05 "$file" "./new-96k/cmn-$key.mp3";    # ex: cmn-很.mp3 (96k cbr)

Latest revision as of 17:14, 4 January 2024

Converting audio files is a frequently needed task when serving audio files to target services and users.

How to convert large batch of audios ?

Dependencies

Warning : avconv have been removed from Ubuntu packages since 18.04. Use ffmpeg instead.
sudo apt-get install lame ffmpeg
man lame                           # then search for parameters via "/{param}". ex: /-m

Technolect

  • cbr: constant bit rate.
  • abr: average bit rate.
  • vbr: variable bit rate.

For more, see man lame.

Helpers

$ mkdir -p ./new/                    # create folder, if not existing (-p)
$ file="./data/cmn-0a0a8a8b.flac"    # path to .flac file into varible &quot;$file&quot;
$ ffprobe -hide_banner "$file"       # print out metadata of $file, for some formats only

$ ffprobe -hide_banner ./data/cmn-0a0a8a8b.ogg
Input #0, ogg, from './data/cmn-0a0a8a8b.ogg':
  Duration: 00:00:01.25, start: 0.000000, bitrate: 99 kb/s
  Stream #0:0: Audio: vorbis, 44100 Hz, mono, fltp, 80 kb/s
    Metadata:
      TITLE           : 高低
      LICENSE         : Creative Commons BY-SA 3.0 U.S
      COPYRIGHT       : (c) 2009 Yue Tan
      ARTIST          : Tan
      DATE            : 2009-07-08
      GENRE           : Speech
      SWAC_LANG       : cmn
      SWAC_TEXT       : 高低
      SWAC_ALPHAIDX   : gāodī
      SWAC_SPEAK_NAME : Tan
      SWAC_SPEAK_GENDER: F
      SWAC_SPEAK_BIRTH_YEAR: 1978
      SWAC_SPEAK_LANG : zho
      SWAC_SPEAK_LANG_REGION: Liaoning
      SWAC_SPEAK_LIV_COUNTRY: FR
      SWAC_SPEAK_LIV_TOWN: Caen
      SWAC_PRON_PHON  : gāodī
      SWAC_COLL_SECTION: HSK niveau IV
      SWAC_COLL_LICENSE: Creative Commons BY-SA 3.0 U.S
      SWAC_COLL_COPYRIGHT: (c) 2009 Yue Tan
      SWAC_TECH_DATE  : 2009-07-08
      SWAC_TECH_SOFT  : Shtooka Recorder/1.3

Simple batch format conversion

for file in ./flac/*.flac
do
  key=$(basename "$file" .flac).mp3                                 # name of the file minus .flac, plus .mp3 
  lame --abr 24    -m m -h --resample 22.05 "$file" "./new/$key";
done

Metadata-based format conversion

This example works on SWAC recorder audio files available at https://packs.shtooka.net. Those files contain rich metadata, with a SWAC_TEXT metadata field. In this example, we assume a folder with file audio-0a6f36g.flac and metadata SWAC_TEXT : 很.

for file in ./flac/*.flac
do
  key=$(ffmpeg -i "$file" 2>&1 | sed -ne 's/.*SWAC_TEXT *: //p')                 # print metadata, assign SWAC_TEXT's value to variable.
  lame --abr 24    -m m -h --resample 22.05 "$file" "./new-24k/cmn-$key.mp3";    # ex: cmn-很.mp3 (24k abr)
  lame --cbr -b 96 -m m -h --resample 22.05 "$file" "./new-96k/cmn-$key.mp3";    # ex: cmn-很.mp3 (96k cbr)
done

See also

Lingua Libre technical helps
Template {{Speakers category}} • {{Recommended lists}} • {{To iso 639-2}} • {{To iso 639-3}} • {{Userbox-records}} • {{Bot steps}}
Audio files How to create a frequency list?Convert files formatsDenoise files with SoXRename and mass rename
Bots Help:BotsLinguaLibre:BotHelp:Log in to Lingua Libre with PywikibotLingua Libre Bot (gh) • OlafbotPamputtBotDragons Bot (gh)
MediaWiki MediaWiki: Help:Documentation opérationelle MediawikiHelp:Database structureHelp:CSSHelp:RenameHelp:OAuthLinguaLibre:User rights (rate limit) • Module:Lingua Libre record & {{Lingua Libre record}}JS scripts: MediaWiki:Common.jsLastAudios.jsSoundLibrary.jsItemsSugar.jsLexemeQueriesGenerator.js (pad) • Sparql2data.js (pad) • LanguagesGallery.js (pad) • Gadgets: Gadget-LinguaImporter.jsGadget-Demo.jsGadget-RecentNonAudio.jsLiLiZip.js
Queries Help:APIsHelp:SPARQLSPARQL (intermediate) (stub) • SPARQL for lexemes (stub) • SPARQL for maintenanceLingualibre:Wikidata (stub) • Help:SPARQL (HAL)
Reuses Help:Download datasetsHelp:Embed audio in HTML
Unstable & tests Help:SPARQL/test
Categories Category:Technical reports