Найти Ρ‚Π΅ΠΌΡƒ

πŸš€ ЗапускаСм Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΡƒ Π°ΡƒΠ΄ΠΈΠΎ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ! πŸš€


ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π΄Ρ€ΡƒΠ·ΡŒΡ! БСгодня я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ автоматичСской транскрибации Π°ΡƒΠ΄ΠΈΠΎΠ΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ»ΠΎΠ². Π­Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ мноТСство возмоТностСй для создания ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ΅Π΄ΠΈΠ° ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-Π±ΠΎΡ‚ΠΎΠ²!

### Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚?

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Python ΠΈ нСсколько ΠΌΠΎΡ‰Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ Ρ€Π΅Ρ‡ΠΈ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ. Π‘ΠΊΡ€ΠΈΠΏΡ‚ автоматичСски ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π°ΡƒΠ΄ΠΈΠΎ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ, Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π° части, транскрибируСт ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² тСкстовом Ρ„Π°ΠΉΠ»Π΅.

### Π§Ρ‚ΠΎ Π²Π°ΠΌ понадобится?

1. Python: Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСн Python вСрсии 3.7 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅.
2. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python: Нам понадобятся whisperx, pydub, numpy, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. УстановитС ΠΈΡ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ pip:

pip install whisperx pydub numpy

3. FFmpeg: Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°ΡƒΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. УстановитС Π΅Π³ΠΎ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ [сайта FFmpeg](https://ffmpeg.org/download.html) ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² вашСй ОБ.

### ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΈ запуск скрипта

1. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ скрипт Π½ΠΈΠΆΠ΅ Π² Ρ„Π°ΠΉΠ» transcribe.py Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅.
2. ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ ваш Π²ΠΈΠ΄Π΅ΠΎΡ„Π°ΠΉΠ» Π² Ρ‚Ρƒ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΡƒ, Π³Π΄Π΅ находится скрипт.
3. ЗапуститС скрипт, ΡƒΠΊΠ°Π·Π°Π² ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²ΠΈΠ΄Π΅ΠΎ:

python transcribe.py "path_to_your_video.mp4"

### Π‘Π°ΠΌ скрипт:

from pydub import AudioSegment
import whisperx
import tempfile
import shutil
import os
import numpy as np

def transcribe_video(input_video, fragment_duration_ms=60000, target_sample_rate=16000):
batch_size = 8
compute_type = "float32"
device = "cpu"

model = whisperx.load_model("small", device=device, compute_type=compute_type)

temp_dir = tempfile.mkdtemp()

try:
audio = AudioSegment.from_file(input_video, format="mp4")
if audio.frame_rate != target_sample_rate:
audio = audio.set_frame_rate(target_sample_rate)

samples = np.array(audio.get_array_of_samples())
fragment_length = len(samples)
num_fragments = max(1, fragment_length // (fragment_duration_ms * (target_sample_rate / 1000)))

full_text_content = []

for i in range(int(num_fragments)):
start = int(i * fragment_duration_ms * (target_sample_rate / 1000))
end = int(min((i + 1) * fragment_duration_ms * (target_sample_rate / 1000), fragment_length))
fragment_samples = samples[start:end]

fragment = AudioSegment(
fragment_samples.tobytes(),
frame_rate=target_sample_rate,
sample_width=audio.sample_width,
channels=audio.channels
)
fragment_file = os.path.join(temp_dir, f"fragment_{i}.wav")
fragment.export(fragment_file, format="wav")

fragment_audio = whisperx.load_audio(fragment_file)
result = model.transcribe(fragment_audio, batch_size=batch_size, language="ru")
model_a, metadata = whisperx.load_align_model(language_code=result["language"], device=device)
result = whisperx.align(result["segments"], model_a, metadata, fragment_audio, device, return_char_alignments=False)

segments = result["segments"]
text_content = ""
for segment in segments:
text = segment['text']
text_content += text[1:] if text[0] == ' ' else text
text_content += "\n"

full_text_content.append(text_content)

with open("transcription.txt", "w", encoding="utf-8") as file:
file.write("\n".join(full_text_content))

finally:
shutil.rmtree(temp_dir)

if __name__ == "__main__":
import sys
transcribe_video(sys.argv[1])

### БистСмныС трСбования

- ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма: Windows, macOS, Linux.
- ΠŸΠ°ΠΌΡΡ‚ΡŒ: РСкомСндуСтся ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 4 Π“Π‘ RAM для ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
- ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€: Π›ΡŽΠ±ΠΎΠΉ соврСмСнный CPU ΠΎΡ‚ Intel, AMD ΠΈΠ»ΠΈ ARM с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Python.

### Π’ΠΏΠ΅Ρ€Π΅Π΄ΠΈ большС!

Π­Ρ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΌΠΎΡ‘ΠΌ Π»Π΅Ρ‚Π½Π΅ΠΌ курсС ΠΏΠΎ созданию коммСрчСских Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-Π±ΠΎΡ‚ΠΎΠ²! πŸ€–βœ¨
2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹