#![allow(unused_imports)]
pub mod datasets;
pub mod transforms;
pub mod types;
pub use datasets::{AudioFolder, LibriSpeech};
pub use transforms::{AudioToTensor, TensorToAudio};
pub use types::AudioData;
pub use transforms::transforms::*;
#[cfg(test)]
mod tests {
use super::*;
use crate::transforms::Transform;
#[test]
fn test_audio_data_creation() {
let samples = vec![0.1, -0.2, 0.3, -0.4];
let audio = AudioData::new(samples.clone(), 44100, 1);
assert_eq!(audio.samples, samples);
assert_eq!(audio.sample_rate, 44100);
assert_eq!(audio.channels, 1);
assert_eq!(audio.len(), 4);
assert!(!audio.is_empty());
}
#[test]
fn test_audio_data_duration() {
let samples = vec![0.0; 44100]; let audio = AudioData::new(samples, 44100, 1);
assert_eq!(audio.duration(), 1.0);
}
#[test]
fn test_audio_to_tensor_mono() {
let samples = vec![0.1, -0.2, 0.3, -0.4];
let audio = AudioData::new(samples, 44100, 1);
let transform = AudioToTensor;
let result = transform.transform(audio);
assert!(result.is_ok());
let tensor = result.unwrap();
let shape = tensor.shape();
assert_eq!(shape.dims(), &[1, 4]); }
#[test]
fn test_audio_to_tensor_stereo() {
let samples = vec![0.1, 0.2, -0.3, -0.4];
let audio = AudioData::new(samples, 44100, 2);
let transform = AudioToTensor;
let result = transform.transform(audio);
assert!(result.is_ok());
let tensor = result.unwrap();
let shape = tensor.shape();
assert_eq!(shape.dims(), &[2, 2]); }
#[test]
fn test_tensor_to_audio_mono() {
use torsh_core::device::DeviceType;
use torsh_tensor::Tensor;
let data = vec![0.1, -0.2, 0.3, -0.4];
let tensor = Tensor::from_data(data.clone(), vec![1, 4], DeviceType::Cpu).unwrap();
let transform = TensorToAudio::new(44100);
let result = transform.transform(tensor);
assert!(result.is_ok());
let audio = result.unwrap();
assert_eq!(audio.samples, data);
assert_eq!(audio.sample_rate, 44100);
assert_eq!(audio.channels, 1);
}
#[test]
fn test_tensor_to_audio_stereo() {
use torsh_core::device::DeviceType;
use torsh_tensor::Tensor;
let data = vec![0.1, -0.2, 0.3, -0.4];
let tensor = Tensor::from_data(data, vec![2, 2], DeviceType::Cpu).unwrap();
let transform = TensorToAudio::new(44100);
let result = transform.transform(tensor);
assert!(result.is_ok());
let audio = result.unwrap();
assert_eq!(audio.samples, vec![0.1, 0.3, -0.2, -0.4]);
assert_eq!(audio.sample_rate, 44100);
assert_eq!(audio.channels, 2);
}
}