Повреждение фрагментов аудиобайт при потоковой передаче с помощью Django и Websockets
Я пытаюсь реализовать сервис потоковой транскрипции аудио с использованием django и websockets. Реализация работает, но фрагменты повреждаются через некоторое время, например, после десятого или одиннадцатого фрагмента транскрипции, при отладке я обнаружил, что расширение webm audio bytes отсутствует (что означает, что некоторые другие метаданные также могут отсутствовать в этих фрагментах, из-за чего я не могу транскрибировать эти фрагменты.
).class TranscriptConsumer(AsyncWebsocketConsumer):
"""
Server side implementation of the audio streaming service
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.audio_buffer = b'' # Variable to store accumulated audio data
Я использовал переменную audio_buffer для конкатенации всех кусков аудиобайтов, пытаясь предотвратить повреждение данных, поскольку до использования этой переменной для конкатенации кусков я столкнулся с повреждением аудиобайтов после первого куска. Для получения и конкатенации чанков
я использую следующееasync def receive(self, text_data=None, bytes_data=None):
if bytes_data:
# Combine incoming bytes_data with the accumulated audio_buffer
self.audio_buffer += bytes_data
# Check if the combined data is sufficient for processing
if len(self.audio_buffer) >= 10000:
await self.process_audio()
И ниже расшифровка фрагментов
# Split the combined data into chunks
max_chunk_size = 1024 * 1024 # 1MB chunk size
chunks = [self.audio_buffer[i:i + max_chunk_size] for i in range(0, len(self.audio_buffer), max_chunk_size)]
# Process chunks in parallel (using asyncio.gather for concurrency)
tasks = [self.transcribe_chunk(chunk, model) for chunk in chunks]
transcriptions = await asyncio.gather(*tasks)
когда чанк не поврежден, я получаю "Audio format Server Side: ['webm']", но когда он поврежден, я получаю "Audio format Server Side: None"