노래의 보컬이 아닌 부분 인 &의 분류에 대해 "스펙트럼 변화 감지"를 수행하는 방법을 알고 싶습니다. 스펙트로 그램에서 스펙트럼 변화를 찾아야합니다. MATLAB과 관련하여 이에 대한 정교한 정보가 있습니까?음악에서 노래하는 소리의 분리
답변
이것은 어렵습니다. 이 작업을 확실하게 수행 할 수 있다면 숙련 된 컴퓨터 과학자가 될 것입니다. 내가 읽은 가장 유망한 방법은 비교를 위해 음성 만 트랙을 생성하기 위해 가사를 사용했습니다. 다시 말하지만, 이것을 할 수 있고 그것에 관한 논문을 쓰면 컴퓨터 과학자들 사이에서 유명해질 것입니다. 또한 노래방 타이밍을 자동으로 생성하여 많은 돈을 벌 수 있습니다.
오디오와 별개의 신호를 분리하는 것은 매우 활발한 연구 분야이며 매우 어려운 문제입니다. 이것은 종종 문학에서 Blind Signal Separation라고합니다. (이전 링크에서 일부 MATLAB 데모 코드가있다. 물론
, 당신은 음악에 보컬이 있다는 것을 알고 있다면, 당신은 많은 vocal separation 알고리즘 중 하나를 사용할 수 있습니다. 다른 사람이 언급 한 것처럼, 해결
원시 스펙트럼 분석만을 사용하는이 문제는 엄청나게 어려운 문제이며, 좋은 해결책을 찾지 못할 가능성이 높습니다. 일부 믹스에서 일부 보컬과 약간의 크로스 오버 주파수를 추출 할 수 있습니다.
그러나 여기에서 작업하는 오디오 자료의 특성에 대해 더 구체적으로 설명 할 수 있다면 조금 더 많은 것을 얻을 수있을 것입니다.
최악의 경우, 일반 mp3의 일반 노래 (예 : 풀 밴드 + 보컬)가됩니다. 나는 이것이 당신이 아마도 당신의 질문의 성질을 보았을 때라고 생각합니다.
가장 좋은 경우에는 멀티 트랙 스튜디오 녹음에 액세스 할 수 있으며 적어도 믹스 다운과 악기 트랙이 있어야합니다.이 경우 믹스에서 보컬 주파수를 추출 할 수 있습니다. 트랙 중 하나에서 임펄스 응답을 생성하고이를 다른 트랙에 적용하여이 작업을 수행 할 수 있습니다.
중간 케이스에서는 음악의 매개 변수를 조정하는 알고리즘을 적용 할 수있는 간단한 음악을 다루고 있습니다. 예를 들어, 전자 음악을 다루는 경우, 트랙의 스테레오 너비를 이용하여 보컬 + 다른 팬 악기를 추출하기 위해 모든 모노 요소 (즉,베이스 라인 + 킥)를 제거한 다음 몇 가지 유형의 필터링 및 스펙트럼 분석을 수행합니다.
즉, 임의의 소스 자료에서 깨끗한 아카펠라 컷을 생성하기위한 다목적 알고리즘을 만들 계획이라면 여기에서 씹을 수있는 것보다 더 많이 물고있을 것입니다. 소스 자료를 구체적으로 제한 할 수있는 경우 해당 소스의 특성에 따라 원하는대로 여러 가지 알고리즘을 사용할 수 있습니다.
음악 블록이 깨끗한 a-capella 또는 기악 배경을 결정하려면 신호의 대역폭을 일반적인 사람 가수 대역폭과 비교하면됩니다. 또한 기본 주파수가 인간의 목소리에 대해서만 제한된 주파수 범위에있을 수 있는지 확인할 수 있습니다.
아직도 쉽지 않을 것입니다. 그러나 보청기는 항상이 작업을 수행하므로 명확하게 수행 할 수 있습니다. (일반적으로 노래가 아닌 말하기를 검색하지만)
처음에는 악기와 원본을 동기화하고 길이와 비트율이 같고 정확한 시간에 시작하고 끝나야합니다.
WAV
다음은 .. 약간의 선형 대수는 먼 길을 이동해야I = wavread(instrumental.wav);
N = wavread(normal.wav);
i = inv(I);
A = (N - i); // it could be A = (N * i) or A = (N + i) you'll have to play around
wavwrite(A, acapella.wav)
처럼 뭔가.
나는이 질문을 이해하지 못했다고 생각합니다. 그는 "스펙트럼 변화 감지"에 대해 묻고 있습니다. 두 wavs의 차이를 복용하면 그의 질문에 대답하지 않습니다. –