Description
tinytag is a library for reading music meta data of MP3, OGG, FLAC and Wave files with python
tinytag alternatives and similar packages
Based on the "Audio" category.
Alternatively, view tinytag alternatives based on common mentions on social networks and blogs.
-
SpeechRecognition
Speech recognition module for Python, supporting several engines and APIs, online and offline. -
pyAudioAnalysis
Python Audio Analysis Library: Feature Extraction, Classification, Segmentation and Applications -
Watson Developer Cloud Python SDK
Client library to use the IBM Watson services in Python and available in pip as watson-developer-cloud -
aeneas
aeneas is a Python/C library and a set of tools to automagically synchronize audio and text (aka forced alignment) -
speech-to-text-websockets-python
Python client that interacts with the IBM Watson Speech To Text service through its WebSockets interface -
ProMo
Prososdy Morph: A python library for manipulating pitch and duration in an algorithmic way, for resynthesizing speech. -
pysle
Python interface to ISLEX, for obtaining canonical phonetic and syllabic information of words.
Get performance insights in less than 4 minutes
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of tinytag or a related project?
README
tinytag
tinytag is a library for reading music meta data of MP3, OGG, OPUS, MP4, M4A, FLAC, WMA and Wave files with python
Install
pip install tinytag
Features:
- Read tags, length and cover images of audio files
- supported formats
- MP3 (ID3 v1, v1.1, v2.2, v2.3+)
- Wave/RIFF
- OGG
- OPUS
- FLAC
- WMA
- MP4/M4A/M4B
- pure python, no dependencies
- supports python 2.7 and 3.4 or higher
- high test coverage
- Just a few hundred lines of code (just include it in your project!)
tinytag only provides the minimum needed for reading MP3, OGG, OPUS, MP4, M4A, FLAC, WMA and Wave meta-data. It can determine track number, total tracks, title, artist, album, year, duration and more.
from tinytag import TinyTag
tag = TinyTag.get('/some/music.mp3')
print('This track is by %s.' % tag.artist)
print('It is %f seconds long.' % tag.duration)
Alternatively you can use tinytag directly on the command line:
$ python -m tinytag --format csv /some/music.mp3
> {"filename": "/some/music.mp3", "filesize": 30212227, "album": "Album", "albumartist": "Artist", "artist": "Artist", "audio_offset": null, "bitrate": 256, "channels": 2, "comment": null, "composer": null, "disc": "1", "disc_total": null, "duration": 10, "genre": null, "samplerate": 44100, "title": "Title", "track": "5", "track_total": null, "year": "2012"}
Check python -m tinytag --help
for all CLI options, for example other output formats`
List of possible attributes you can get with TinyTag:
tag.album # album as string
tag.albumartist # album artist as string
tag.artist # artist name as string
tag.audio_offset # number of bytes before audio data begins
tag.bitrate # bitrate in kBits/s
tag.comment # file comment as string
tag.composer # composer as string
tag.disc # disc number
tag.disc_total # the total number of discs
tag.duration # duration of the song in seconds
tag.filesize # file size in bytes
tag.genre # genre as string
tag.samplerate # samples per second
tag.title # title of the song
tag.track # track number as string
tag.track_total # total number of tracks as string
tag.year # year or data as string
Additionally you can also get cover images from ID3 tags:
tag = TinyTag.get('/some/music.mp3', image=True)
image_data = tag.get_image()
Changelog:
- 1.5.0 (2020-11-05):
- fixed data type to always return str for disc, disc_total, track, track_total #97 (thanks to kostalski)
- fixed package install being reported as UNKNOWN for some python/pip variations #90 (thanks to russpoutine)
- Added automatic detection for certain MP4 file headers
- 1.4.0 (2020-04-23):
- detecting file types based on their magic header bytes, #85
- fixed opus duration being wrong for files with lower sample rate #81
- implemented support for binary paths #72
- always cast mp3 bitrates to int, so that CBR and VBR output behaves the sam
- made str deterministic and use json as output format
- 1.3.0 (2020-03-09):
- added option to ignore encoding errors
ignore_errors
#73 - Improved text decoding for many malformed files
- added option to ignore encoding errors
- 1.2.2 (2019-04-13):
- Improved stability when reading corrupted mp3 files
- 1.2.1 (2019-04-13):
- fixed wav files not correctly reporting the number of channels #61
- 1.2.0 (2019-04-13):
- using setup.cfg instead of setup.py (thanks to scivision)
- added support for calling TinyTag.get with pathlib.Path (thanks to scivision)
- added appveyor windows test CI (thanks to scivision)
- using pytest instead of nosetest (thanks to scivision)
- 1.1.0 (2019-04-13):
- added new field "composer" (Thanks to Phil Borman)
- 1.0.1 (2019-04-13):
- fixed ID3 loading for files with corrupt header (thanks to Ian Homer)
- fixed parsing of duration in wav file (thanks to Ian Homer)
- 1.0.0 (2018-12-12):
- added comment field
- added wav-riff format support
- use MP4 parser for m4b files
- added simple cli tool
- fix parsing of FLAC files with ID3 header (thanks to minus7)
- added method
TinyTag.is_supported(filename)
- 0.19.0 (2018-02-11):
- fixed corrupted images for some mp3s (#45)
- 0.18.0 (2017-04-29):
- fixed wrong bitrate and crash when parsing xing header
- 0.17.0 (2016-10-02):
- supporting ID3v2.2 images
- 0.16.0 (2016-08-06):
- MP4 cover image support
- 0.15.2 (2016-08-06):
- fixed crash for malformed MP4 files (#34)
- 0.15.0 (2016-08-06):
- fixed decoding of UTF-16LE ID3v2 Tags, improved overall stability
- 0.14.0 (2016-06-05):
- MP4/M4A and Opus support