76 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|