From e9efcca6bad53c54f34172db18d61454e1f425c7 Mon Sep 17 00:00:00 2001 From: Sanchit Date: Thu, 18 Feb 2021 00:04:05 -0600 Subject: [PATCH 01/11] Added GSM info test & moved get_encoding() to types.cpp --- .../backend/sox_io/info_test.py | 18 ++++++++- torchaudio/csrc/CMakeLists.txt | 2 +- torchaudio/csrc/sox/io.cpp | 37 +------------------ torchaudio/csrc/sox/types.cpp | 33 +++++++++++++++++ torchaudio/csrc/sox/types.h | 3 ++ 5 files changed, 55 insertions(+), 38 deletions(-) diff --git a/test/torchaudio_unittest/backend/sox_io/info_test.py b/test/torchaudio_unittest/backend/sox_io/info_test.py index a2a93648a1..043135e68e 100644 --- a/test/torchaudio_unittest/backend/sox_io/info_test.py +++ b/test/torchaudio_unittest/backend/sox_io/info_test.py @@ -205,7 +205,7 @@ def test_ulaw(self): assert info.encoding == "ULAW" def test_alaw(self): - """`sox_io_backend.info` can check ulaw file correctly""" + """`sox_io_backend.info` can check alaw file correctly""" duration = 1 num_channels = 1 sample_rate = 8000 @@ -221,6 +221,22 @@ def test_alaw(self): assert info.bits_per_sample == 8 assert info.encoding == "ALAW" + def test_gsm(self): + """`sox_io_backend.info` can check gsm file correctly""" + duration = 1 + num_channels = 1 + sample_rate = 8000 + path = self.get_temp_path('data.wav') + sox_utils.gen_audio_file( + path, sample_rate=sample_rate, num_channels=num_channels, + bit_depth=16, encoding='gsm', + duration=duration) + info = sox_io_backend.info(path) + assert info.sample_rate == sample_rate + assert info.num_frames == sample_rate * duration + assert info.num_channels == num_channels + assert info.bits_per_sample == 0 + assert info.encoding == "GSM" @skipIfNoExtension class TestInfoOpus(PytorchTestCase): diff --git a/torchaudio/csrc/CMakeLists.txt b/torchaudio/csrc/CMakeLists.txt index 1bab67be5a..7ed980b85a 100644 --- a/torchaudio/csrc/CMakeLists.txt +++ b/torchaudio/csrc/CMakeLists.txt @@ -5,11 +5,11 @@ get_property(TORCHAUDIO_THIRD_PARTIES GLOBAL PROPERTY TORCHAUDIO_THIRD_PARTIES) ################################################################################ set( LIBTORCHAUDIO_SOURCES + sox/types.cpp sox/io.cpp sox/utils.cpp sox/effects.cpp sox/effects_chain.cpp - sox/types.cpp lfilter.cpp ) diff --git a/torchaudio/csrc/sox/io.cpp b/torchaudio/csrc/sox/io.cpp index 8bc520feba..eda8cebf42 100644 --- a/torchaudio/csrc/sox/io.cpp +++ b/torchaudio/csrc/sox/io.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include @@ -10,41 +10,6 @@ using namespace torchaudio::sox_utils; namespace torchaudio { namespace sox_io { -namespace { - -std::string get_encoding(sox_encoding_t encoding) { - switch (encoding) { - case SOX_ENCODING_UNKNOWN: - return "UNKNOWN"; - case SOX_ENCODING_SIGN2: - return "PCM_S"; - case SOX_ENCODING_UNSIGNED: - return "PCM_U"; - case SOX_ENCODING_FLOAT: - return "PCM_F"; - case SOX_ENCODING_FLAC: - return "FLAC"; - case SOX_ENCODING_ULAW: - return "ULAW"; - case SOX_ENCODING_ALAW: - return "ALAW"; - case SOX_ENCODING_MP3: - return "MP3"; - case SOX_ENCODING_VORBIS: - return "VORBIS"; - case SOX_ENCODING_AMR_WB: - return "AMR_WB"; - case SOX_ENCODING_AMR_NB: - return "AMR_NB"; - case SOX_ENCODING_OPUS: - return "OPUS"; - default: - return "UNKNOWN"; - } -} - -} // namespace - std::tuple get_info_file( const std::string& path, c10::optional& format) { diff --git a/torchaudio/csrc/sox/types.cpp b/torchaudio/csrc/sox/types.cpp index 59e9d320c4..a320571f37 100644 --- a/torchaudio/csrc/sox/types.cpp +++ b/torchaudio/csrc/sox/types.cpp @@ -100,5 +100,38 @@ BitDepth get_bit_depth_from_option(const c10::optional& bit_depth) { } } +std::string get_encoding(sox_encoding_t encoding) { + switch (encoding) { + case SOX_ENCODING_UNKNOWN: + return "UNKNOWN"; + case SOX_ENCODING_SIGN2: + return "PCM_S"; + case SOX_ENCODING_UNSIGNED: + return "PCM_U"; + case SOX_ENCODING_FLOAT: + return "PCM_F"; + case SOX_ENCODING_FLAC: + return "FLAC"; + case SOX_ENCODING_ULAW: + return "ULAW"; + case SOX_ENCODING_ALAW: + return "ALAW"; + case SOX_ENCODING_MP3: + return "MP3"; + case SOX_ENCODING_VORBIS: + return "VORBIS"; + case SOX_ENCODING_AMR_WB: + return "AMR_WB"; + case SOX_ENCODING_AMR_NB: + return "AMR_NB"; + case SOX_ENCODING_OPUS: + return "OPUS"; + case SOX_ENCODING_GSM: + return "GSM"; + default: + return "UNKNOWN"; + } +} + } // namespace sox_utils } // namespace torchaudio diff --git a/torchaudio/csrc/sox/types.h b/torchaudio/csrc/sox/types.h index f3a337407c..adc181ce53 100644 --- a/torchaudio/csrc/sox/types.h +++ b/torchaudio/csrc/sox/types.h @@ -2,6 +2,7 @@ #define TORCHAUDIO_SOX_TYPES_H #include +#include namespace torchaudio { namespace sox_utils { @@ -50,6 +51,8 @@ enum class BitDepth : unsigned { BitDepth get_bit_depth_from_option(const c10::optional& bit_depth); +std::string get_encoding(sox_encoding_t encoding); + } // namespace sox_utils } // namespace torchaudio From 0c32b32ba26155e9bd187f875de5587c6c3d6a6f Mon Sep 17 00:00:00 2001 From: Sanchit Date: Thu, 18 Feb 2021 00:25:42 -0600 Subject: [PATCH 02/11] Fix style --- torchaudio/csrc/sox/io.cpp | 2 +- torchaudio/csrc/sox/types.cpp | 2 +- torchaudio/csrc/sox/types.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/torchaudio/csrc/sox/io.cpp b/torchaudio/csrc/sox/io.cpp index eda8cebf42..49050178e0 100644 --- a/torchaudio/csrc/sox/io.cpp +++ b/torchaudio/csrc/sox/io.cpp @@ -1,8 +1,8 @@ -#include #include #include #include #include +#include using namespace torch::indexing; using namespace torchaudio::sox_utils; diff --git a/torchaudio/csrc/sox/types.cpp b/torchaudio/csrc/sox/types.cpp index a320571f37..d70fe218f0 100644 --- a/torchaudio/csrc/sox/types.cpp +++ b/torchaudio/csrc/sox/types.cpp @@ -127,7 +127,7 @@ std::string get_encoding(sox_encoding_t encoding) { case SOX_ENCODING_OPUS: return "OPUS"; case SOX_ENCODING_GSM: - return "GSM"; + return "GSM"; default: return "UNKNOWN"; } diff --git a/torchaudio/csrc/sox/types.h b/torchaudio/csrc/sox/types.h index adc181ce53..b13510cde1 100644 --- a/torchaudio/csrc/sox/types.h +++ b/torchaudio/csrc/sox/types.h @@ -1,8 +1,8 @@ #ifndef TORCHAUDIO_SOX_TYPES_H #define TORCHAUDIO_SOX_TYPES_H -#include #include +#include namespace torchaudio { namespace sox_utils { From 11f934ff24808dd4f0fcd745c505d795fec684e0 Mon Sep 17 00:00:00 2001 From: Sanchit Date: Thu, 18 Feb 2021 00:30:42 -0600 Subject: [PATCH 03/11] Fix style again --- torchaudio/csrc/sox/io.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchaudio/csrc/sox/io.cpp b/torchaudio/csrc/sox/io.cpp index 49050178e0..729c64666c 100644 --- a/torchaudio/csrc/sox/io.cpp +++ b/torchaudio/csrc/sox/io.cpp @@ -1,8 +1,8 @@ #include #include #include -#include #include +#include using namespace torch::indexing; using namespace torchaudio::sox_utils; From e247347ee7198233a9ba810f8a18c9dfc20ca100 Mon Sep 17 00:00:00 2001 From: Sanchit Date: Thu, 18 Feb 2021 00:35:57 -0600 Subject: [PATCH 04/11] Fix style yet again --- test/torchaudio_unittest/backend/sox_io/info_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/torchaudio_unittest/backend/sox_io/info_test.py b/test/torchaudio_unittest/backend/sox_io/info_test.py index 043135e68e..269558365a 100644 --- a/test/torchaudio_unittest/backend/sox_io/info_test.py +++ b/test/torchaudio_unittest/backend/sox_io/info_test.py @@ -238,6 +238,7 @@ def test_gsm(self): assert info.bits_per_sample == 0 assert info.encoding == "GSM" + @skipIfNoExtension class TestInfoOpus(PytorchTestCase): @parameterized.expand(list(itertools.product( From 388019dc8a498b483d41056bbb489aa58d3fd2aa Mon Sep 17 00:00:00 2001 From: SJ <76181208+imaginary-person@users.noreply.github.com> Date: Thu, 18 Feb 2021 12:02:24 -0600 Subject: [PATCH 05/11] Rollback CMakeList for csrc --- torchaudio/csrc/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/torchaudio/csrc/CMakeLists.txt b/torchaudio/csrc/CMakeLists.txt index 7ed980b85a..1bab67be5a 100644 --- a/torchaudio/csrc/CMakeLists.txt +++ b/torchaudio/csrc/CMakeLists.txt @@ -5,11 +5,11 @@ get_property(TORCHAUDIO_THIRD_PARTIES GLOBAL PROPERTY TORCHAUDIO_THIRD_PARTIES) ################################################################################ set( LIBTORCHAUDIO_SOURCES - sox/types.cpp sox/io.cpp sox/utils.cpp sox/effects.cpp sox/effects_chain.cpp + sox/types.cpp lfilter.cpp ) From e9e08907db7dcc95dbbed6d5cdd79d501b1cd88d Mon Sep 17 00:00:00 2001 From: SJ <76181208+imaginary-person@users.noreply.github.com> Date: Thu, 18 Feb 2021 21:51:31 -0600 Subject: [PATCH 06/11] Add comment to trigger CI --- test/torchaudio_unittest/backend/sox_io/info_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/torchaudio_unittest/backend/sox_io/info_test.py b/test/torchaudio_unittest/backend/sox_io/info_test.py index 269558365a..645107c010 100644 --- a/test/torchaudio_unittest/backend/sox_io/info_test.py +++ b/test/torchaudio_unittest/backend/sox_io/info_test.py @@ -235,6 +235,7 @@ def test_gsm(self): assert info.sample_rate == sample_rate assert info.num_frames == sample_rate * duration assert info.num_channels == num_channels + # The 0 is not a typo assert info.bits_per_sample == 0 assert info.encoding == "GSM" From 801c6bef4963587d6fb4a0773f4e726730fd7798 Mon Sep 17 00:00:00 2001 From: SJ <76181208+imaginary-person@users.noreply.github.com> Date: Thu, 18 Feb 2021 22:45:16 -0600 Subject: [PATCH 07/11] Remove comment to trigger CI --- test/torchaudio_unittest/backend/sox_io/info_test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/torchaudio_unittest/backend/sox_io/info_test.py b/test/torchaudio_unittest/backend/sox_io/info_test.py index 645107c010..269558365a 100644 --- a/test/torchaudio_unittest/backend/sox_io/info_test.py +++ b/test/torchaudio_unittest/backend/sox_io/info_test.py @@ -235,7 +235,6 @@ def test_gsm(self): assert info.sample_rate == sample_rate assert info.num_frames == sample_rate * duration assert info.num_channels == num_channels - # The 0 is not a typo assert info.bits_per_sample == 0 assert info.encoding == "GSM" From 4d7d423674ebc990d988626e618e68f0133aacd5 Mon Sep 17 00:00:00 2001 From: SJ <76181208+imaginary-person@users.noreply.github.com> Date: Fri, 19 Feb 2021 12:54:51 -0600 Subject: [PATCH 08/11] Fix style --- test/torchaudio_unittest/backend/sox_io/info_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/torchaudio_unittest/backend/sox_io/info_test.py b/test/torchaudio_unittest/backend/sox_io/info_test.py index 0c9c6b75b8..73c1e4b646 100644 --- a/test/torchaudio_unittest/backend/sox_io/info_test.py +++ b/test/torchaudio_unittest/backend/sox_io/info_test.py @@ -232,7 +232,7 @@ def test_gsm(self): duration=duration, bit_depth=16) info = sox_io_backend.info(path) assert info.sample_rate == sample_rate - #TODO: need to confirm if this field should have a 0 value for GSM + # TODO: need to confirm if this field should have a 0 value for GSM assert info.num_frames == 0 assert info.num_channels == num_channels assert info.bits_per_sample == 0 From 9bafd0b7add46651d7c05687184f0b3168fdcd1c Mon Sep 17 00:00:00 2001 From: SJ <76181208+imaginary-person@users.noreply.github.com> Date: Fri, 19 Feb 2021 15:00:20 -0600 Subject: [PATCH 09/11] GSM supports up to 16 channels Test GSM for up to 16 channels --- test/torchaudio_unittest/backend/sox_io/info_test.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test/torchaudio_unittest/backend/sox_io/info_test.py b/test/torchaudio_unittest/backend/sox_io/info_test.py index 73c1e4b646..396d47b479 100644 --- a/test/torchaudio_unittest/backend/sox_io/info_test.py +++ b/test/torchaudio_unittest/backend/sox_io/info_test.py @@ -221,20 +221,23 @@ def test_alaw(self): assert info.bits_per_sample == 8 assert info.encoding == "ALAW" - def test_gsm(self): + @parameterized.expand(list(itertools.product( + list(range(1, 17)), + )),) + def test_gsm(self, num_channels): """`sox_io_backend.info` can check gsm file correctly""" duration = 1 - num_channels = 1 sample_rate = 8000 path = self.get_temp_path('data.gsm') sox_utils.gen_audio_file( path, sample_rate=sample_rate, num_channels=num_channels, - duration=duration, bit_depth=16) + duration=duration) info = sox_io_backend.info(path) assert info.sample_rate == sample_rate # TODO: need to confirm if this field should have a 0 value for GSM assert info.num_frames == 0 - assert info.num_channels == num_channels + # num_channels is being returned as 1 even if they are 16 + assert info.num_channels == 1 assert info.bits_per_sample == 0 assert info.encoding == "GSM" From 3896019ca48a82c31b6739fa1534a490e6dbcf75 Mon Sep 17 00:00:00 2001 From: SJ <76181208+imaginary-person@users.noreply.github.com> Date: Fri, 19 Feb 2021 15:51:25 -0600 Subject: [PATCH 10/11] Remove check from num_frames from GSM Remove check from num_frames from GSM --- test/torchaudio_unittest/backend/sox_io/info_test.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/test/torchaudio_unittest/backend/sox_io/info_test.py b/test/torchaudio_unittest/backend/sox_io/info_test.py index 396d47b479..b60d5f8827 100644 --- a/test/torchaudio_unittest/backend/sox_io/info_test.py +++ b/test/torchaudio_unittest/backend/sox_io/info_test.py @@ -221,12 +221,10 @@ def test_alaw(self): assert info.bits_per_sample == 8 assert info.encoding == "ALAW" - @parameterized.expand(list(itertools.product( - list(range(1, 17)), - )),) def test_gsm(self, num_channels): """`sox_io_backend.info` can check gsm file correctly""" duration = 1 + num_channels = 1 sample_rate = 8000 path = self.get_temp_path('data.gsm') sox_utils.gen_audio_file( @@ -234,10 +232,7 @@ def test_gsm(self, num_channels): duration=duration) info = sox_io_backend.info(path) assert info.sample_rate == sample_rate - # TODO: need to confirm if this field should have a 0 value for GSM - assert info.num_frames == 0 - # num_channels is being returned as 1 even if they are 16 - assert info.num_channels == 1 + assert info.num_channels == num_channels assert info.bits_per_sample == 0 assert info.encoding == "GSM" From d1c98192356b6fd82ecb7ed10ac2d06f12805cf5 Mon Sep 17 00:00:00 2001 From: SJ <76181208+imaginary-person@users.noreply.github.com> Date: Fri, 19 Feb 2021 18:19:05 -0600 Subject: [PATCH 11/11] Edit typo Edit typo --- test/torchaudio_unittest/backend/sox_io/info_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/torchaudio_unittest/backend/sox_io/info_test.py b/test/torchaudio_unittest/backend/sox_io/info_test.py index b60d5f8827..7acea7345c 100644 --- a/test/torchaudio_unittest/backend/sox_io/info_test.py +++ b/test/torchaudio_unittest/backend/sox_io/info_test.py @@ -221,7 +221,7 @@ def test_alaw(self): assert info.bits_per_sample == 8 assert info.encoding == "ALAW" - def test_gsm(self, num_channels): + def test_gsm(self): """`sox_io_backend.info` can check gsm file correctly""" duration = 1 num_channels = 1