Test HTOA peak value against 0 (integer comparison)
Now whipper uses the absolute value of SoX's peak level as internal peak value. Fixes #143.
This commit is contained in:
@@ -12,17 +12,20 @@ def peak_level(track_path):
|
||||
|
||||
:param track_path: full path to audio track.
|
||||
:type track_path: str
|
||||
:returns: track peak level from sox ('maximum amplitude') or None on error.
|
||||
:rtype: float or None
|
||||
:returns: track peak absolute value from sox or None on error.
|
||||
:rtype: int or None
|
||||
"""
|
||||
if not os.path.exists(track_path):
|
||||
logger.warning("SoX peak detection failed: file not found")
|
||||
return None
|
||||
sox = Popen([SOX, track_path, "-n", "stat"], stderr=PIPE)
|
||||
sox = Popen([SOX, track_path, "-n", "stats", "-b", "16"], stderr=PIPE)
|
||||
out, err = sox.communicate()
|
||||
if sox.returncode:
|
||||
logger.warning("SoX peak detection failed: " + str(sox.returncode))
|
||||
return None
|
||||
# relevant captured line looks like:
|
||||
# Maximum amplitude: 0.123456
|
||||
return float(err.splitlines()[3].split()[2])
|
||||
# relevant captured lines looks like this:
|
||||
# Min level -26215
|
||||
# Max level 26215
|
||||
min_level = int(err.splitlines()[2].split()[2])
|
||||
max_level = int(err.splitlines()[3].split()[2])
|
||||
return max(abs(min_level), abs(max_level))
|
||||
|
||||
Reference in New Issue
Block a user