vosk аудио в текст
Мощный инструмент для конвертами аудио в текст с открытым доступомУстановка Vosk
Установите Python: Если у вас еще не установлен Python, скачайте и установите его с официального сайта Python. Vosk работает на Python, поэтому он необходим для его использования.
Установите Vosk через pip:
Откройте терминал и выполните следующую команду для установки Vosk:
pip install vosk
Скачайте модели для нужного языка:
https://alphacephei.com/vosk/models
https://github.com/alphacep/vosk-api
Перейдите на страницу моделей Vosk и скачайте модель для нужного вам языка. Эти модели необходимы для распознавания речи.
Используйте Vosk в своих скриптах: После установки вы можете использовать Vosk в своих Python скриптах для распознавания речи. Примеры использования и документацию можно найти на GitHub странице Vosk.
пример скрипта
from vosk import Model, KaldiRecognizer
import sys
import os
import wave
import subprocess
# Function to convert M4A to WAV
def convert_m4a_to_wav(input_m4a, output_wav):
subprocess.run(['ffmpeg', '-i', input_m4a, '-ac', '1', '-ar', '16000', '-vn', output_wav], check=True)
# Path to the audio file
audio_file = "/Users/wl/Desktop/видео с семинара/аудио.m4a"
wav_file = "/Users/wl/Desktop/видео с семинара/аудио.wav"
# Convert M4A to WAV
convert_m4a_to_wav(audio_file, wav_file)
# Check if the model directory exists
model_dir = "model" # Change to "model-small" for the small model
if not os.path.exists(model_dir):
print(f"Model directory '{model_dir}' not found. Please download and unpack the model.")
exit(1)
# Open the WAV file
wf = wave.open(wav_file, "rb")
if wf.getnchannels() != 1 or wf.getsampwidth() != 2 or wf.getcomptype() != "NONE":
print("Audio file must be WAV format mono PCM.")
exit(1)
# Load the model
model = Model(model_dir)
rec = KaldiRecognizer(model, wf.getframerate())
# Process the audio file
while True:
data = wf.readframes(4000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
print(rec.Result())
else:
print(rec.PartialResult())
# Final result
print(rec.FinalResult())
Вариант #2
from vosk import Model, KaldiRecognizer
import sys
import os
import wave
import subprocess
# Function to convert M4A to WAV
def convert_m4a_to_wav(input_m4a, output_wav):
subprocess.run(['ffmpeg', '-i', input_m4a, '-ac', '1', '-ar', '16000', '-vn', output_wav], check=True)
# Path to the audio file
audio_file = "/Users/wl/Desktop/видео с семинара/аудио.m4a"
wav_file = "/Users/wl/Desktop/видео с семинара/аудио.wav"
# Convert M4A to WAV
convert_m4a_to_wav(audio_file, wav_file)
# Check if the model directory exists
model_dir = "/Users/wl/VOSK_models/vosk-model-small-ru-0.22"
if not os.path.exists(model_dir):
print(f"Model directory '{model_dir}' not found. Please download and unpack the model.")
exit(1)
# Open the WAV file
wf = wave.open(wav_file, "rb")
if wf.getnchannels() != 1 or wf.getsampwidth() != 2 or wf.getcomptype() != "NONE":
print("Audio file must be WAV format mono PCM.")
exit(1)
# Load the model
model = Model(model_dir)
rec = KaldiRecognizer(model, wf.getframerate())
# File to save the results
result_file = "/Users/wl/Desktop/видео с семинара/результат.txt"
# Process the audio file and write results to the file
with open(result_file, "w") as file:
while True:
data = wf.readframes(4000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
result = rec.Result()
print(result)
file.write(result + "\n")
else:
print(rec.PartialResult())
# Final result
final_result = rec.FinalResult()
print(final_result)
file.write(final_result + "\n")
print(f"Results written to {result_file}")
Вариант #3 без конвертации
from vosk import Model, KaldiRecognizer
import sys
import os
import wave
# Путь к готовому WAV-файлу
wav_file = "/Users/wl/Desktop/видео с семинара/аудио.wav"
# Проверяем, существует ли директория модели
model_dir = "/Users/wl/VOSK_models/vosk-model-small-ru-0.22"
if not os.path.exists(model_dir):
print(f"Model directory '{model_dir}' not found. Please download and unpack the model.")
exit(1)
# Открываем WAV файл
wf = wave.open(wav_file, "rb")
if wf.getnchannels() != 1 or wf.getsampwidth() != 2 or wf.getcomptype() != "NONE":
print("Audio file must be WAV format mono PCM.")
exit(1)
# Загружаем модель
model = Model(model_dir)
rec = KaldiRecognizer(model, wf.getframerate())
# Обрабатываем аудиофайл
while True:
data = wf.readframes(4000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
print(rec.Result())
else:
print(rec.PartialResult())
# Конечный результат
print(rec.FinalResult())
В этом скрипте:
- Удалена функция convert_m4a_to_wav и её вызов, так как она больше не нужна.
- Путь к аудиофайлу (wav_file) указывает напрямую на ваш WAV-файл.
Убедитесь, что параметры вашего WAV-файла соответствуют требованиям Vosk (моно, 16 бит PCM, частота дискретизации 16000 Гц). Если ваш файл уже в этом формате, скрипт будет работать корректно.