Python открытый необработанный файл аудиоданных

Просто еще один способ использовать только Bash.

string1="test toast"
string2="test test"
len=${#string1}

for ((i=0; i<len; i++)); do
   if [[ "${string1:i:1}" == "${string2:i:1}" ]]; then
      continue
   else
      echo "${string1:0:i}"                       
      i=len
   fi
done
7
задан thelinuxer 5 June 2009 в 16:05
поделиться

2 ответа

Для открытия файла вам просто понадобится file () . Для поиска местоположения вам не нужен audioop: вам просто нужно преобразовать секунды в байты и получить необходимые байты файла. Например, если ваш файл 16 кГц 16-битный моно, каждая секунда - это 32 000 байт данных. Таким образом, 10-я секунда занимает 320 КБ в файле. Просто найдите подходящее место в файле и затем прочтите соответствующее количество байтов.

И audioop не может помочь вам с самой сложной частью: а именно с воспроизведением звука. Правильный способ сделать это во многом зависит от вашей ОС.

РЕДАКТИРОВАТЬ: Извините, я только что заметил, что ваше имя пользователя - thelinuxer. Рассмотрим pyAO для воспроизведения звука из Python в Linux. Возможно, вам потребуется изменить формат сэмпла для воспроизведения звука - в этом вам поможет audioop (см. Ratecv, tomono / tostereo, lin2lin и bias)

8
ответ дан 6 December 2019 в 15:29
поделиться

Большое спасибо. Я смог сделать следующее:

def play_data(filename, first_sec, second_sec):
  import ao
  from ao import AudioDevice 
  dev = AudioDevice(2, bits=16, rate=16000,channels=1)
  f = open(filename, 'r')
  data_len = (second_sec-first_sec)*32000
  f.seek(32000*first_sec)
  data = f.read(data_len)
  dev.play(data)
  f.close()

play_data('AR001_3.adc', 2.5, 5)
4
ответ дан 6 December 2019 в 15:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: