Просто еще один способ использовать только 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
Для открытия файла вам просто понадобится file ()
.
Для поиска местоположения вам не нужен audioop: вам просто нужно преобразовать секунды в байты и получить необходимые байты файла. Например, если ваш файл 16 кГц 16-битный моно, каждая секунда - это 32 000 байт данных. Таким образом, 10-я секунда занимает 320 КБ в файле. Просто найдите подходящее место в файле и затем прочтите соответствующее количество байтов.
И audioop не может помочь вам с самой сложной частью: а именно с воспроизведением звука. Правильный способ сделать это во многом зависит от вашей ОС.
РЕДАКТИРОВАТЬ: Извините, я только что заметил, что ваше имя пользователя - thelinuxer. Рассмотрим pyAO для воспроизведения звука из Python в Linux. Возможно, вам потребуется изменить формат сэмпла для воспроизведения звука - в этом вам поможет audioop (см. Ratecv, tomono / tostereo, lin2lin и bias)
Большое спасибо. Я смог сделать следующее:
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)