| 61 | } // namespace |
| 62 | |
| 63 | int main() { |
| 64 | try { |
| 65 | const auto root = std::filesystem::temp_directory_path() / "audio_cpp_audio_utility_api_test"; |
| 66 | std::filesystem::remove_all(root); |
| 67 | std::filesystem::create_directories(root); |
| 68 | const engine::audio::AudioUtilityPaths paths{repo_path("assets/framework/audio_utilities"), cuda_backend()}; |
| 69 | |
| 70 | const auto input48 = root / "input48.wav"; |
| 71 | engine::audio::write_pcm16_wav(input48, 48000, 1, tone(48000, 1920, 220.0f)); |
| 72 | const auto rnnoise_out = root / "rnnoise.wav"; |
| 73 | engine::audio::denoise_file(input48, rnnoise_out, "rnnoise", paths); |
| 74 | require_wav_shape(rnnoise_out, 48000); |
| 75 | |
| 76 | const auto dfn_out = root / "deepfilternet2.wav"; |
| 77 | engine::audio::denoise_file(input48, dfn_out, "deepfilternet2", paths); |
| 78 | require_wav_shape(dfn_out, 48000); |
| 79 | |
| 80 | const auto input16 = root / "input16.wav"; |
| 81 | engine::audio::write_pcm16_wav(input16, 16000, 1, tone(16000, 800, 330.0f)); |
| 82 | const auto zipenhancer_out = root / "zipenhancer.wav"; |
| 83 | engine::audio::denoise_file(input16, zipenhancer_out, "zipenhancer", paths); |
| 84 | require_wav_shape(zipenhancer_out, 16000); |
| 85 | |
| 86 | const auto flashsr_out = root / "flashsr.wav"; |
| 87 | engine::audio::super_resolve_file(input16, flashsr_out, "flashsr", paths); |
| 88 | require_wav_shape(flashsr_out, 48000); |
| 89 | |
| 90 | const auto input_dir = root / "batch_in"; |
| 91 | const auto output_dir = root / "batch_out"; |
| 92 | std::filesystem::create_directories(input_dir); |
| 93 | engine::audio::write_pcm16_wav(input_dir / "one.wav", 48000, 1, tone(48000, 1440, 200.0f)); |
| 94 | engine::audio::write_pcm16_wav(input_dir / "two.wav", 48000, 1, tone(48000, 1440, 300.0f)); |
| 95 | const auto rnnoise_batch = engine::audio::denoise_directory(input_dir, output_dir / "rnnoise", "rnnoise", paths); |
| 96 | require(rnnoise_batch.outputs.size() == 2, "RNNoise directory output count mismatch"); |
| 97 | for (const auto & output : rnnoise_batch.outputs) { |
| 98 | require_wav_shape(output, 48000); |
| 99 | } |
| 100 | |
| 101 | const auto zipenhancer_batch = engine::audio::denoise_directory(input_dir, output_dir / "zipenhancer", "zipenhancer", paths); |
| 102 | require(zipenhancer_batch.outputs.size() == 2, "ZipEnhancer directory output count mismatch"); |
| 103 | for (const auto & output : zipenhancer_batch.outputs) { |
| 104 | require_wav_shape(output, 16000); |
| 105 | } |
| 106 | |
| 107 | const auto flashsr_batch = engine::audio::super_resolve_directory(input_dir, output_dir / "flashsr", "flashsr", paths); |
| 108 | require(flashsr_batch.outputs.size() == 2, "FlashSR directory output count mismatch"); |
| 109 | for (const auto & output : flashsr_batch.outputs) { |
| 110 | require_wav_shape(output, 48000); |
| 111 | } |
| 112 | |
| 113 | std::cout << "audio_utility_api_test passed\n"; |
| 114 | } catch (const std::exception & ex) { |
| 115 | std::cerr << "audio_utility_api_test failed: " << ex.what() << "\n"; |
| 116 | return 1; |
| 117 | } |
| 118 | return 0; |
| 119 | } |
nothing calls this directly
no test coverage detected