#python #struct #decode #wav #unpack
Вопрос:
def decode_wav(wave):
offset = 0
riff, size, fformat = struct.unpack('<4sI4s', wave[offset:offset 12])
offset = 12
# print("Riff: %s, Chunk Size: %i, format: %s" % (riff, size, fformat))
(omitted below, skip)
return np.array(list(zip(*data))).astype(np.float32) / np.math.pow(2, bps - 1), samplerate, channels
signal, sample_rate, channel_count = decode_wav(wave)
Следующая ошибка возникает при получении и декодировании файла wav в байтовом формате с сервера:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/grpc/_server.py", line 443, in _call_behavior
response_or_iterator = behavior(argument, context)
File "/ip_boundary/ip_bound_server.py", line 32, in GetBoundary
signal, sample_rate, channel_count = decode_wav(wave)
File "/ip_boundary/pause_times.py", line 16, in decode_wav
riff, size, fformat = struct.unpack('<4sI4s', wave[offset:offset 12])
struct.error: unpack requires a buffer of 12 bytes
Это нормально работало при локальном тестировании, но есть ли проблемы при отправке и получении на сервере?
Или, может быть, что-то не так с форматом файла wav?
В чем причина этого и как это исправить?
Комментарии:
1. Вы передаете что-то короче 12 байт как
wave
. Вы упомянули «отправка и получение на сервере» — вы уверены, что действительно получили весь файл, прежде чем вызывать эту функцию? Один вызов.recv()
не вернет какой-либо определенный объем данных, он просто выдаст вам то, что было получено в данный момент.