웹사이트 검색

Whisper 및 Sleeter AI 도구를 사용하여 가라오케 비디오를 만드는 방법


소개

AI 도구는 이미지, 오디오 또는 비디오를 조작하여 새로운 결과를 생성하는 데 유용합니다. 최근까지 이미지나 오디오를 자동으로 편집하는 것은 상당한 시간과 컴퓨팅 성능을 사용하지 않고는 구현하기 어려웠으며, 그때조차도 소리에서 특정 주파수를 제거하거나 이미지의 색상 팔레트를 변경하기 위해 턴키 필터를 실행하는 것만 가능한 경우가 많았습니다. AI 모델과 엄청난 양의 교육 데이터를 사용하는 새로운 접근 방식은 훨씬 더 정교한 필터링 및 변환 기술을 실행할 수 있습니다.

Whisper는 오디오 분석 및 조작을 위해 설계된 오픈 소스 AI 도구입니다. 둘 다 사전 훈련된 자체 언어 모델과 함께 개발 및 출시되었으므로 추가 구성 없이 MP3 또는 AAC 오디오 파일과 같은 자체 제공된 입력에서 직접 실행할 수 있습니다. Sleeter는 음악의 기악 트랙에서 보컬 트랙을 분리하는 데 사용됩니다. Whisper는 음성 언어 자막을 생성하는 데 사용됩니다. 둘 다 개별적으로 많은 용도가 있으며 함께 사용하면 특별한 용도가 있습니다. 일반 오디오 파일에서 가라오케 트랙을 생성하는 데 사용할 수 있습니다. 이 자습서에서는 Whisper와 Sleeter를 함께 사용하여 자신만의 노래방을 선택하거나 다른 애플리케이션 스택에 통합합니다.

전제 조건

이러한 도구는 대부분의 플랫폼에서 사용할 수 있습니다. 이 튜토리얼은 이 튜토리얼의 스왑 활성화 가이드에 따라 Ubuntu 22.04 서버에 대한 설치 지침을 제공합니다.

Sleeter와 Whisper는 모두 Python 라이브러리이며 Python 패키지 관리자인 pip와 Python을 설치해야 합니다. Ubuntu에서는 Ubuntu 22.04 서버에 Python 3를 설치하고 프로그래밍 환경을 설정하는 방법의 1단계를 참조할 수 있습니다.

또한 Sleeter와 Whisper는 선택적으로 GPU에서 최대 10-20배 더 빠르게 실행할 수 있는 기계 학습 라이브러리를 사용합니다. GPU가 감지되지 않으면 자동으로 CPU에서 실행됩니다. GPU 지원 구성은 이 튜토리얼의 범위를 벗어나지만 GPU 지원 환경에 PyTorch를 설치한 후에 작동해야 합니다.

1단계 - Sleeter, Whisper 및 기타 도구 설치

먼저 Python의 패키지 관리자인 pip를 사용하여 이 프로젝트에 사용할 도구를 설치해야 합니다. sleeter 외에도 YouTube 비디오를 로컬로 다운로드하는 데 사용할 수 있는 스크립트인 youtube-dl도 설치해야 하며 샘플 비디오를 검색하는 데 사용할 수 있습니다. pip install로 설치하십시오:

  1. sudo pip install spleeter youtube-dl

Whisper를 직접 설치하는 대신 pip를 사용하여 Github에서 직접 yt-whisper라는 다른 라이브러리를 설치할 수 있습니다. yt-whisper는 Whisper 자체를 종속 항목으로 포함하므로 설치 후 일반 whisper 명령에 액세스할 수 있지만 이렇게 하면 yt-whisper 스크립트를 사용하면 YouTube에서 동영상을 한 번에 다운로드하고 자막 처리할 수 있습니다. pip installgit+를 앞에 붙여 Python 리포지토리에 대한 Github 링크를 구문 분석할 수 있습니다.

  1. sudo pip install git+https://github.com/m1guelpf/yt-whisper.git

마지막으로 추가 오디오 및 비디오 조작을 위해 ffmpeg가 설치되어 있는지 확인해야 합니다. ffmpeg는 오디오 및 비디오 파일을 조작, 병합 및 재인코딩하기 위한 범용 도구입니다. Ubuntu에서는 apt update를 실행한 다음 apt install을 실행하여 시스템 패키지 관리자를 사용하여 설치할 수 있습니다.

  1. sudo apt update
  2. sudo apt install ffmpeg

이제 필요한 도구가 설치되었으므로 다음 단계에서 샘플 오디오 및 비디오를 얻습니다.

2단계 – 비디오에서 오디오 다운로드 및 분리

1단계에서 설치한 youtube-dl은 YouTube에서 로컬 환경으로 동영상을 다운로드하기 위한 도구입니다. 잠재적으로 저작권이 있는 자료를 문맥에 관계없이 사용할 때는 주의를 기울여야 하지만, 이는 여러 상황에서 특히 동영상에 대해 추가 처리를 실행하거나 소스 자료로 사용해야 하는 경우에 유용할 수 있습니다.

youtube-dl을 사용하여 이 자습서에 사용할 비디오를 다운로드합니다. 이 샘플 링크는 "Lie 2 You\라는 공개 도메인 노래에 대한 것이지만 다른 것을 사용할 수 있습니다.

  1. youtube-dl https://www.youtube.com/watch?v=dA2Iv9evEK4&list=PLzCxunOM5WFJxaj103IzbkAvGigpclBjt

youtube-dl은 일부 메타데이터와 함께 노래를 다운로드하고 단일 .webm 비디오 파일로 병합합니다. mpv와 같은 로컬 미디어 플레이어에서 이 비디오를 재생할 수 있지만 환경에 따라 다릅니다.

참고: YouTube에서 youtube-dl 사용을 명시적으로 지원하지 않기 때문에 때때로 다운로드 속도가 느려질 수 있습니다.

다음으로 방금 다운로드한 비디오에서 오디오 트랙을 분리합니다. 이것은 ffmpeg가 뛰어난 작업입니다. 다음 ffmpeg 명령을 사용하여 오디오를 audio.mp3라는 새 파일로 출력할 수 있습니다.

  1. ffmpeg -i "Lie 2 You (ft. Dylan Emmet) – Leonell Cassio (No Copyright Music)-dA2Iv9evEK4.webm" -c:a libmp3lame -qscale:a 1 audio.mp3

이것은 ffmpeg 명령 구문의 예입니다. 간단히 말해서:

  • -i /path/to/input은 입력 파일의 경로입니다. 이 경우에는 방금 다운로드한 .webm 비디오입니다.
  • -c:a libmp3lame은 인코딩할 오디오 코덱을 지정합니다. 모든 오디오 및 비디오는 어떻게든 인코딩해야 하며 libmp3lame은 가장 일반적인 mp3 인코더입니다.
  • qscale:a 1은 출력 mp3의 비트 전송률을 지정하며, 이 경우 약 220kbps의 가변 비트 전송률에 해당합니다. ffmpeg 설명서에서 다른 옵션을 검토할 수 있습니다.
  • audio.mp3는 다른 플래그 없이 명령 끝에 표시되는 출력 파일의 이름입니다.

이 명령을 실행한 후 FFmpeg는 audio.mp3라는 새 파일을 생성합니다.

참고: 공식 문서에서 ffmpeg 옵션에 대해 자세히 알아볼 수 있습니다.

다음 단계에서는 Sleeter를 사용하여 새 audio.mp3 파일에서 악기 트랙을 분리합니다.

3단계 – Spliter를 사용하여 보컬 트랙 분리

이제 독립형 오디오 파일이 있으므로 spliter를 사용하여 보컬 트랙을 분리할 준비가 되었습니다. Sleeter에는 피아노, 기타, 드럼, 베이스 트랙 등을 훨씬 더 정교하게 분리할 수 있는 sleeter separate 명령과 함께 사용할 수 있는 여러 모델이 포함되어 있지만 지금은 기본값을 사용합니다. 2stems 모델. audio.mp3에서 sleeter separate를 실행하고 -o 출력 디렉토리에 대한 경로도 제공합니다.

  1. spleeter separate -p spleeter:2stems -o output audio.mp3

GPU 없이 Sleeter를 실행하는 경우 이 명령을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 그러면 vocals.wavaccompaniment.wav라는 두 개의 파일이 포함된 output이라는 새 디렉토리가 생성됩니다. 이들은 분리된 보컬 및 기악 트랙입니다. 오류가 발생하거나 Sleeter 출력을 추가로 사용자 정의해야 하는 경우 설명서를 참조하십시오.

MPV 또는 다른 오디오 플레이어에서 이러한 파일을 들어볼 수 있습니다. sleeter가 원시 WAV 출력으로 직접 디코딩하기 때문에 지금은 상대적으로 파일 크기가 더 크지만 다음 단계에서는 다시 단일 비디오로 인코딩합니다.

4단계 – Whisper를 사용하여 캡션 생성

이제 악기 오디오 트랙이 있으므로 원본 비디오에서 캡션을 생성하기만 하면 됩니다. 다운로드한 .webm 동영상에서 직접 whisper를 실행할 수 있지만 원본 YouTube 동영상에서 yt_whisper 명령을 실행하는 것이 더 빠릅니다. 링크:

  1. yt_whisper https://www.youtube.com/watch?v=dA2Iv9evEK4&list=PLzCxunOM5WFJxaj103IzbkAvGigpclBjt

Whisper 설명서를 검토하면 이 모델이 메모리 요구 사항, 성능 및 정확도 사이에서 적절한 절충안을 제공한다고 제안합니다. 다른 입력 소스에서 또는 다른 매개변수를 사용하여 whisper를 단독으로 실행해야 하는 경우 이러한 사전 설정을 참조 프레임으로 사용할 수 있습니다.

GPU 없이 Whisper를 실행하는 경우 이 명령을 완료하는 데 몇 분 정도 걸릴 수 있습니다. 이렇게 하면 .vtt 형식의 비디오 캡션 파일이 생성됩니다. head 또는 텍스트 편집기를 사용하여 캡션을 검사하여 노래 가사와 일치하는지 확인할 수 있습니다.

  1. head -20 Lie_2_You__ft__Dylan_Emmet____Leonell_Cassio__No_Copyright_Music.vtt
Output
WEBVTT 00:00.000 --> 00:07.000 I need feeling you on me And I guess in a way you do 00:07.000 --> 00:19.000 All my breath on revelin' emotions I need some space to think this through 00:19.000 --> 00:29.000 Call me all night long Try to give you hints in a hard to see 00:29.000 --> 00:39.000 Right on the line, no Losing it on you is the last thing I need 00:39.000 --> 00:49.000 If I'm honest, I'll just make you cry And I don't wanna fight with you 00:49.000 --> 00:57.000 I would rather lie to you But if I'm honest, now's not the right time

이제 별도의 오디오 트랙과 캡션 파일이 있습니다. 마지막 단계에서는 ffmpeg를 사용하여 모두 다시 조립합니다.

5단계 – 캡션이 있는 오디오 및 비디오 트랙 병합

마지막으로 출력을 1) 원본 배경 비디오, 2) Sleeter를 사용하여 생성한 분리된 악기 트랙, 3) Whisper를 사용하여 생성한 캡션이 포함된 최종 비디오로 결합할 때입니다. 이는 약간 더 복잡한 단일 ffmpeg 명령으로 수행할 수 있습니다.

  1. ffmpeg -i "Lie 2 You (ft. Dylan Emmet) – Leonell Cassio (No Copyright Music)-dA2Iv9evEK4.webm" -i output/audio/accompaniment.wav -i "Lie_2_You__ft__Dylan_Emmet____Leonell_Cassio__No_Copyright_Music.vtt" -map 0:v -map 1:a -map 2 -metadata:s:s:0 language=eng -c:v copy -c:a aac -c:s mov_text final.mp4

이전 ffmpeg 명령과 달리 이 명령은 .webm 비디오, .wav 오디오 및 .vtt 캡션. 여러 map 인수를 사용하여 첫 번째(또는 0부터 세어 0번째) 입력을 비디오 트랙에 매핑한 다음 오디오에 매핑하고 마지막 입력을 자막 메타데이터에 매핑합니다. -map 0:v -map 1:a -map 2 -metadata:s:s:0 언어=eng. 다음으로 각 트랙에 사용되는 코덱을 지정합니다.

  • c:v 복사는 원본 비디오 소스를 보존하고 다시 인코딩하지 않음을 의미합니다. 이렇게 하면 원본 소스가 호환되는 형식인 한 일반적으로 시간을 절약하고 비디오 품질을 보존할 수 있습니다(비디오 인코딩은 일반적으로 ffmpeg를 가장 CPU 집약적으로 사용함). youtube-dl은 스트리밍 비디오, 독립 실행형 .mp4 파일, Blu Ray 디스크 등에 사용할 수 있는 일반적인 H264 형식을 사용하도록 거의 항상 기본 설정됩니다. 이것을 변경할 필요가 없습니다.\n
  • c:a aac는 오디오를 AAC 형식으로 다시 인코딩한다는 의미입니다. AAC는 대부분의 .mp4 비디오에 대한 기본값이며 거의 모든 환경에서 지원되며 파일 크기와 오디오 품질 간의 적절한 균형을 제공합니다.\n
  • c:s mov_text는 인코딩하는 자막 형식을 지정합니다. 자막이 vtt 형식이더라도 mov_text는 비디오 자체에 삽입할 수 있는 일반적인 자막 형식입니다.\n

참고: 시청자가 다음에 오는 대사를 예상할 수 있도록 자막을 몇 초 정도 상쇄할 수도 있습니다. ffmpeg 명령에 -itsoffset -2를 추가하면 됩니다.

마지막으로 출력 형식인 final.mp4를 제공합니다. 실제로 이 파일 이름 이외의 .mp4 출력을 지정하지 않았다는 점에 유의하십시오. ffmpeg는 제공한 출력 경로를 기반으로 출력 형식을 자동으로 유추합니다. 오디오 및 비디오 파일로 작업할 때 사용하는 코덱은 일반적으로 콘텐츠의 컨테이너 역할을 하는 파일 형식 자체보다 더 중요합니다. 중요한 차이점은 비디오 플레이어가 어떤 종류의 파일을 읽을 수 있을 것으로 예상하는지에 있습니다. H264 비디오와 AAC 오디오가 포함된 .mp4 파일은 이 글을 쓰는 시점에서 가장 일반적으로 사용되는 미디어 파일이며, 다운로드할 필요 없이 브라우저에서 직접 재생하는 것을 포함하여 거의 모든 환경에서 재생됩니다. 파일을 만들거나 스트리밍 서버를 구성하고 자막을 포함할 수 있으므로 매우 안전한 대상입니다. .mkv는 더 많은 기능을 지원하는 또 다른 인기 있는 컨테이너 형식이지만 널리 배포되지는 않습니다.

이제 final.mp4 비디오를 다운로드하거나 공유하거나 노래방의 밤을 위해 벽에 투사할 수 있습니다. 공연에 행운을 빕니다!

이제 네 가지 도구를 사용하는 종단 간 가라오케 비디오 솔루션이 있습니다. 이들은 독립 실행형 스크립트로 결합하거나 다른 애플리케이션에 통합하거나 필요에 따라 대화식으로 실행할 수 있습니다.

결론

이 자습서에서는 두 가지 기계 학습 도구를 사용하여 소스 비디오에서 분리된 보컬 트랙과 캡션 세트를 만든 다음 다시 결합했습니다. 이것은 기존 오디오 소스에서 노래방 비디오를 만드는 데 고유하게 유용하지만 다른 많은 작업에도 적용할 수 있습니다.

다음으로 비디오 스트리밍 서버를 구성하거나 다른 AI 또는 기계 학습 라이브러리를 실험할 수 있습니다.