Я использую Whisper для расшифровки автоматических отправлений из SDR. Проблема в том, что из-за тонов и глубины в начале сообщений Whisper пропускает начало стенограммы. Он содержит ключевые сведения, такие как тип инцидента. Я не могу просто каждый раз начинать аудиозапись с двух секунд, потому что длина тона может варьироваться в зависимости от количества отделов, отправляемых на вызов.
Я пробовал различные размеры луча, но с ограниченным успехом. Возможно, есть другая утилита, которую я могу использовать для обнаружения тонов. У меня закончились идеи!
Вы можете послушать образец аудио здесь.
# Acquire global whisper lock (prevent concurrent model use)
global whisper_lock
if "whisper_lock" not in globals():
whisper_lock = threading.Lock()
# Ensure your model pipeline exists (uncomment if you need lazy-load)
# if getattr(constants, "batchedWisper", None) is None:
# from html_api_server import get_whisper_model
# constants.batchedWisper = get_whisper_model()
with whisper_lock:
if getattr(constants, "batchedWisper", None) is None:
try:
from constants import whisperManager
whisperManager.loadWhisperModel()
except Exception as e:
return f"[Transcription failed for {call_id}: Whisper model unavailable: {e}]", False, work_path
pipeline = getattr(constants, "batchedWisper", None)
if pipeline is None:
return f"[Transcription failed for {call_id}: Whisper pipeline not initialized]", False, work_path
try:
# ENABLE TEMPERATURE SAMPLING FALLBACKS FOR WHISPER TRANSCRIPTION QUALITY
# Faster-Whisper batched pipeline assumed pre-loaded as constants.batchedWisper
beam_size = getattr(constants, "WHISPER_BEAM_SIZE", 1) or 1
temperature_values = getattr(constants, "WHISPER_TEMPERATURES", (0.0, 0.2, 0.4, 0.6))
if isinstance(temperature_values, tuple) and len(temperature_values) == 1:
temperature_setting = temperature_values[0]
else:
temperature_setting = temperature_values
vad_filter_enabled = getattr(constants, "WHISPER_VAD_FILTER", True)
segments, info = pipeline.transcribe(
work_path,
batch_size=16,
vad_filter=vad_filter_enabled,
condition_on_previous_text=False,
beam_size=beam_size,
language="en",
temperature=temperature_setting
)
transcript = " ".join(seg.text for seg in segments) if segments else ""
except Exception as e:
return f"[Transcription failed for {call_id}: {e}]", False, work_path
return transcript or "[Empty transcript]", True, work_path
Подробнее здесь: https://stackoverflow.com/questions/798 ... fire-tones
Шепот Игнорировать звуки огня ⇐ Python
Программы на Python
1765820645
Anonymous
Я использую Whisper для расшифровки автоматических отправлений из SDR. Проблема в том, что из-за тонов и глубины в начале сообщений Whisper пропускает начало стенограммы. Он содержит ключевые сведения, такие как тип инцидента. Я не могу просто каждый раз начинать аудиозапись с двух секунд, потому что длина тона может варьироваться в зависимости от количества отделов, отправляемых на вызов.
Я пробовал различные размеры луча, но с ограниченным успехом. Возможно, есть другая утилита, которую я могу использовать для обнаружения тонов. У меня закончились идеи!
Вы можете послушать образец аудио здесь.
# Acquire global whisper lock (prevent concurrent model use)
global whisper_lock
if "whisper_lock" not in globals():
whisper_lock = threading.Lock()
# Ensure your model pipeline exists (uncomment if you need lazy-load)
# if getattr(constants, "batchedWisper", None) is None:
# from html_api_server import get_whisper_model
# constants.batchedWisper = get_whisper_model()
with whisper_lock:
if getattr(constants, "batchedWisper", None) is None:
try:
from constants import whisperManager
whisperManager.loadWhisperModel()
except Exception as e:
return f"[Transcription failed for {call_id}: Whisper model unavailable: {e}]", False, work_path
pipeline = getattr(constants, "batchedWisper", None)
if pipeline is None:
return f"[Transcription failed for {call_id}: Whisper pipeline not initialized]", False, work_path
try:
# ENABLE TEMPERATURE SAMPLING FALLBACKS FOR WHISPER TRANSCRIPTION QUALITY
# Faster-Whisper batched pipeline assumed pre-loaded as constants.batchedWisper
beam_size = getattr(constants, "WHISPER_BEAM_SIZE", 1) or 1
temperature_values = getattr(constants, "WHISPER_TEMPERATURES", (0.0, 0.2, 0.4, 0.6))
if isinstance(temperature_values, tuple) and len(temperature_values) == 1:
temperature_setting = temperature_values[0]
else:
temperature_setting = temperature_values
vad_filter_enabled = getattr(constants, "WHISPER_VAD_FILTER", True)
segments, info = pipeline.transcribe(
work_path,
batch_size=16,
vad_filter=vad_filter_enabled,
condition_on_previous_text=False,
beam_size=beam_size,
language="en",
temperature=temperature_setting
)
transcript = " ".join(seg.text for seg in segments) if segments else ""
except Exception as e:
return f"[Transcription failed for {call_id}: {e}]", False, work_path
return transcript or "[Empty transcript]", True, work_path
Подробнее здесь: [url]https://stackoverflow.com/questions/79847899/whisper-ignore-fire-tones[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия