releases/tests/Paca.Tests/Core/AudioVocalStemExtractorGateTests.cs

76 lines
2.5 KiB
C#

using System;
using Paca.Core;
using Xunit;
namespace Paca.Tests.Core;
public class AudioVocalStemExtractorGateTests
{
[Fact]
public void Gate317_AudioVocalStemExtractor_BuildsKaraokeVocalRemovalFilter()
{
var filter = AudioVocalStemExtractor.BuildFfmpegStemFilter(AudioStemMode.VocalRemovalKaraoke);
Assert.Contains("pan=stereo|c0=0.5*c0-0.5*c1|c1=0.5*c1-0.5*c0", filter);
}
[Fact]
public void Gate318_AudioVocalStemExtractor_BuildsSpeechVoiceEnhanceFilter()
{
var filter = AudioVocalStemExtractor.BuildFfmpegStemFilter(AudioStemMode.VoiceEnhanceSpeechOnly);
Assert.Contains("highpass=f=200", filter);
Assert.Contains("lowpass=f=3400", filter);
Assert.Contains("afftdn=nf=-25", filter);
}
[Fact]
public void Gate319_AudioVocalStemExtractor_BuildsBassBoostFilter()
{
var filter = AudioVocalStemExtractor.BuildFfmpegStemFilter(AudioStemMode.BassBoost);
Assert.Contains("bass=g=8:f=110:w=0.6", filter);
}
[Fact]
public void Gate320_AudioVocalStemExtractor_BuildsFullCommandLine_Correctly()
{
var cmd = AudioVocalStemExtractor.BuildStemCommandLine(
inputPath: "C:\\music\\song.mp3",
outputPath: "C:\\music\\song_karaoke.mp3",
mode: AudioStemMode.VocalRemovalKaraoke,
audioCodec: "libmp3lame"
);
Assert.Contains("-i \"C:\\music\\song.mp3\"", cmd);
Assert.Contains("-filter:a \"pan=stereo|c0=0.5*c0-0.5*c1|c1=0.5*c1-0.5*c0\"", cmd);
Assert.Contains("-c:a libmp3lame -b:a 320k", cmd);
Assert.EndsWith("\"C:\\music\\song_karaoke.mp3\" -y", cmd);
}
[Fact]
public void Gate321_AudioVocalStemExtractor_BuildsIsolatedVocalsAcapellaFilter()
{
var filter = AudioVocalStemExtractor.BuildFfmpegStemFilter(AudioStemMode.IsolatedVocalsAcapella);
Assert.Contains("0.5*c0+0.5*c1", filter);
Assert.Contains("bandpass=f=1200", filter);
}
[Fact]
public void Gate322_AudioVocalStemExtractor_BuildsNightModeDialogueNormalizationFilter()
{
var filter = AudioVocalStemExtractor.BuildFfmpegStemFilter(AudioStemMode.NightModeDialogueNormalization);
Assert.Contains("dynaudnorm=f=150", filter);
}
[Fact]
public void Gate323_AudioVocalStemExtractor_BuildsPodcastBroadcastSpeechFilter()
{
var filter = AudioVocalStemExtractor.BuildFfmpegStemFilter(AudioStemMode.PodcastBroadcastSpeech);
Assert.Contains("highpass=f=80", filter);
Assert.Contains("afftdn=nf=-20", filter);
}
}