Unverified Commit ecfed4d9 authored by Caroline Chen's avatar Caroline Chen Committed by GitHub
Browse files

Make sox selective (#1338)

parent 98d0d593
...@@ -5,13 +5,9 @@ get_property(TORCHAUDIO_THIRD_PARTIES GLOBAL PROPERTY TORCHAUDIO_THIRD_PARTIES) ...@@ -5,13 +5,9 @@ get_property(TORCHAUDIO_THIRD_PARTIES GLOBAL PROPERTY TORCHAUDIO_THIRD_PARTIES)
################################################################################ ################################################################################
set( set(
LIBTORCHAUDIO_SOURCES LIBTORCHAUDIO_SOURCES
sox/io.cpp
sox/utils.cpp
sox/effects.cpp
sox/effects_chain.cpp
sox/types.cpp
lfilter.cpp lfilter.cpp
overdrive.cpp overdrive.cpp
utils.cpp
) )
if(BUILD_TRANSDUCER) if(BUILD_TRANSDUCER)
...@@ -22,6 +18,18 @@ if(BUILD_KALDI) ...@@ -22,6 +18,18 @@ if(BUILD_KALDI)
list(APPEND LIBTORCHAUDIO_SOURCES kaldi.cpp) list(APPEND LIBTORCHAUDIO_SOURCES kaldi.cpp)
endif() endif()
if(BUILD_SOX)
set(
SOX_SOURCES
sox/io.cpp
sox/utils.cpp
sox/effects.cpp
sox/effects_chain.cpp
sox/types.cpp
)
list(APPEND LIBTORCHAUDIO_SOURCES ${SOX_SOURCES})
endif()
################################################################################ ################################################################################
# libtorchaudio.so # libtorchaudio.so
################################################################################ ################################################################################
...@@ -76,6 +84,10 @@ if (BUILD_TORCHAUDIO_PYTHON_EXTENSION) ...@@ -76,6 +84,10 @@ if (BUILD_TORCHAUDIO_PYTHON_EXTENSION)
_torchaudio PRIVATE TORCH_API_INCLUDE_EXTENSION_H _torchaudio PRIVATE TORCH_API_INCLUDE_EXTENSION_H
) )
if (BUILD_SOX)
target_compile_definitions(_torchaudio PRIVATE INCLUDE_SOX)
endif()
target_include_directories( target_include_directories(
_torchaudio _torchaudio
PRIVATE PRIVATE
......
#include <torch/extension.h> #include <torch/extension.h>
#ifdef INCLUDE_SOX
#include <torchaudio/csrc/sox/effects.h> #include <torchaudio/csrc/sox/effects.h>
#include <torchaudio/csrc/sox/io.h> #include <torchaudio/csrc/sox/io.h>
#endif
PYBIND11_MODULE(_torchaudio, m) { PYBIND11_MODULE(_torchaudio, m) {
#ifdef INCLUDE_SOX
m.def( m.def(
"get_info_fileobj", "get_info_fileobj",
&torchaudio::sox_io::get_info_fileobj, &torchaudio::sox_io::get_info_fileobj,
...@@ -19,4 +23,5 @@ PYBIND11_MODULE(_torchaudio, m) { ...@@ -19,4 +23,5 @@ PYBIND11_MODULE(_torchaudio, m) {
"apply_effects_fileobj", "apply_effects_fileobj",
&torchaudio::sox_effects::apply_effects_fileobj, &torchaudio::sox_effects::apply_effects_fileobj,
"Decode audio data from file-like obj and apply effects."); "Decode audio data from file-like obj and apply effects.");
#endif
} }
#include <torch/script.h>
namespace torchaudio {
namespace {
bool is_sox_available() {
#ifdef INCLUDE_SOX
return true;
#else
return false;
#endif
}
} // namespace
TORCH_LIBRARY_FRAGMENT(torchaudio, m) {
m.def("torchaudio::is_sox_available", &is_sox_available);
}
} // namespace torchaudio
...@@ -7,9 +7,7 @@ from typing import Optional, Tuple ...@@ -7,9 +7,7 @@ from typing import Optional, Tuple
import torch import torch
from torch import Tensor from torch import Tensor
from torchaudio._internal import ( from torchaudio._internal import module_utils as _mod_utils
module_utils as _mod_utils,
)
import torchaudio import torchaudio
__all__ = [ __all__ = [
...@@ -1000,7 +998,7 @@ def spectral_centroid( ...@@ -1000,7 +998,7 @@ def spectral_centroid(
return (freqs * specgram).sum(dim=freq_dim) / specgram.sum(dim=freq_dim) return (freqs * specgram).sum(dim=freq_dim) / specgram.sum(dim=freq_dim)
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def apply_codec( def apply_codec(
waveform: Tensor, waveform: Tensor,
sample_rate: int, sample_rate: int,
......
...@@ -8,7 +8,7 @@ from .sox_effects import ( ...@@ -8,7 +8,7 @@ from .sox_effects import (
) )
if _mod_utils.is_module_available('torchaudio._torchaudio'): if _mod_utils.is_sox_available():
import atexit import atexit
init_sox_effects() init_sox_effects()
atexit.register(shutdown_sox_effects) atexit.register(shutdown_sox_effects)
......
...@@ -8,7 +8,7 @@ from torchaudio._internal import module_utils as _mod_utils ...@@ -8,7 +8,7 @@ from torchaudio._internal import module_utils as _mod_utils
from torchaudio.utils.sox_utils import list_effects from torchaudio.utils.sox_utils import list_effects
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def init_sox_effects(): def init_sox_effects():
"""Initialize resources required to use sox effects. """Initialize resources required to use sox effects.
...@@ -23,7 +23,7 @@ def init_sox_effects(): ...@@ -23,7 +23,7 @@ def init_sox_effects():
torch.ops.torchaudio.sox_effects_initialize_sox_effects() torch.ops.torchaudio.sox_effects_initialize_sox_effects()
@_mod_utils.requires_module("torchaudio._torchaudio") @_mod_utils.requires_sox()
def shutdown_sox_effects(): def shutdown_sox_effects():
"""Clean up resources required to use sox effects. """Clean up resources required to use sox effects.
...@@ -37,7 +37,7 @@ def shutdown_sox_effects(): ...@@ -37,7 +37,7 @@ def shutdown_sox_effects():
torch.ops.torchaudio.sox_effects_shutdown_sox_effects() torch.ops.torchaudio.sox_effects_shutdown_sox_effects()
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def effect_names() -> List[str]: def effect_names() -> List[str]:
"""Gets list of valid sox effect names """Gets list of valid sox effect names
...@@ -51,7 +51,7 @@ def effect_names() -> List[str]: ...@@ -51,7 +51,7 @@ def effect_names() -> List[str]:
return list(list_effects().keys()) return list(list_effects().keys())
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def apply_effects_tensor( def apply_effects_tensor(
tensor: torch.Tensor, tensor: torch.Tensor,
sample_rate: int, sample_rate: int,
...@@ -152,7 +152,7 @@ def apply_effects_tensor( ...@@ -152,7 +152,7 @@ def apply_effects_tensor(
tensor, sample_rate, effects, channels_first) tensor, sample_rate, effects, channels_first)
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def apply_effects_file( def apply_effects_file(
path: str, path: str,
effects: List[List[str]], effects: List[List[str]],
......
from . import ( from . import (
sox_utils, sox_utils,
) )
from torchaudio._internal import module_utils as _mod_utils from torchaudio._internal import module_utils as _mod_utils
if _mod_utils.is_module_available('torchaudio._torchaudio'): if _mod_utils.is_sox_available():
sox_utils.set_verbosity(1) sox_utils.set_verbosity(1)
from typing import List, Dict from typing import List, Dict
import torch import torch
from torchaudio._internal import module_utils as _mod_utils
from torchaudio._internal import (
module_utils as _mod_utils,
)
@_mod_utils.requires_sox()
@_mod_utils.requires_module('torchaudio._torchaudio')
def set_seed(seed: int): def set_seed(seed: int):
"""Set libsox's PRNG """Set libsox's PRNG
...@@ -20,7 +17,7 @@ def set_seed(seed: int): ...@@ -20,7 +17,7 @@ def set_seed(seed: int):
torch.ops.torchaudio.sox_utils_set_seed(seed) torch.ops.torchaudio.sox_utils_set_seed(seed)
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def set_verbosity(verbosity: int): def set_verbosity(verbosity: int):
"""Set libsox's verbosity """Set libsox's verbosity
...@@ -38,7 +35,7 @@ def set_verbosity(verbosity: int): ...@@ -38,7 +35,7 @@ def set_verbosity(verbosity: int):
torch.ops.torchaudio.sox_utils_set_verbosity(verbosity) torch.ops.torchaudio.sox_utils_set_verbosity(verbosity)
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def set_buffer_size(buffer_size: int): def set_buffer_size(buffer_size: int):
"""Set buffer size for sox effect chain """Set buffer size for sox effect chain
...@@ -51,7 +48,7 @@ def set_buffer_size(buffer_size: int): ...@@ -51,7 +48,7 @@ def set_buffer_size(buffer_size: int):
torch.ops.torchaudio.sox_utils_set_buffer_size(buffer_size) torch.ops.torchaudio.sox_utils_set_buffer_size(buffer_size)
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def set_use_threads(use_threads: bool): def set_use_threads(use_threads: bool):
"""Set multithread option for sox effect chain """Set multithread option for sox effect chain
...@@ -65,7 +62,7 @@ def set_use_threads(use_threads: bool): ...@@ -65,7 +62,7 @@ def set_use_threads(use_threads: bool):
torch.ops.torchaudio.sox_utils_set_use_threads(use_threads) torch.ops.torchaudio.sox_utils_set_use_threads(use_threads)
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def list_effects() -> Dict[str, str]: def list_effects() -> Dict[str, str]:
"""List the available sox effect names """List the available sox effect names
...@@ -75,7 +72,7 @@ def list_effects() -> Dict[str, str]: ...@@ -75,7 +72,7 @@ def list_effects() -> Dict[str, str]:
return dict(torch.ops.torchaudio.sox_utils_list_effects()) return dict(torch.ops.torchaudio.sox_utils_list_effects())
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def list_read_formats() -> List[str]: def list_read_formats() -> List[str]:
"""List the supported audio formats for read """List the supported audio formats for read
...@@ -85,7 +82,7 @@ def list_read_formats() -> List[str]: ...@@ -85,7 +82,7 @@ def list_read_formats() -> List[str]:
return torch.ops.torchaudio.sox_utils_list_read_formats() return torch.ops.torchaudio.sox_utils_list_read_formats()
@_mod_utils.requires_module('torchaudio._torchaudio') @_mod_utils.requires_sox()
def list_write_formats() -> List[str]: def list_write_formats() -> List[str]:
"""List the supported audio formats for write """List the supported audio formats for write
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment