Что содержит аудиокадр?

Я делаю некоторое исследование о том, как сравнивать звуковые файлы (волна). В основном я хочу сравнить сохраненные звуковые файлы (wav) со звуком от микрофона. Поэтому, в конце концов, я хотел бы предварительно сохранить некоторые собственные голосовые команды, а затем, когда я запускаю свое приложение, я хотел бы сравнить предварительно сохраненные файлы с входом от микрофона.

Моя мысль заключалась в том, чтобы придать некоторый запас при сравнении, потому что говорить что-то два раза подряд по-разному было бы трудно, я думаю.

Итак, после некоторого googling я вижу, что у python этот модуль называется wave и Wave_read. Этот объект имеет функцию с именем readframes (n):

Считывает и возвращает не более n кадров audio, в виде строки байтов.

Что содержат эти байты? Im думает о петлях через волновые файлы с одним фреймом во время сравнения их по кадру.

Ответ 1

Аудиокадр или образец содержат информацию о амплитуде (громкости) в этот конкретный момент времени. Для создания звука десятки тысяч кадров воспроизводятся последовательно для создания частот.

В случае аудиосигнала качества компакт-диска или несжатого звукового сигнала имеется около 44,100 кадров/сэмплов в секунду. Каждый из этих кадров содержит 16-битное разрешение, что позволяет достаточно точно представлять уровни звука. Кроме того, поскольку звук CD является стереофоническим, на самом деле в два раза больше информации, 16 бит для левого канала, 16 бит для правильного.

Когда вы используете звуковой модуль в python для получения фрейма, он будет возвращен в виде шестнадцатеричных символов:

  • Один символ для 8-битного монофонического сигнала.
  • Два символа для 8-битного стерео.
  • Два символа для 16-битного моно.
  • Четыре символа для 16-битного стерео.

Чтобы преобразовать и сравнить эти значения, вам нужно будет сначала использовать функции модуля волнового модуля python для проверки глубины бит и количества каналов. В противном случае вы будете сравнивать несоответствующие настройки качества.

Ответ 2

Простое сравнение байтов по байтам практически не имеет шансов на успешное совпадение даже при некотором допуске. Распознавание голосовых образов - очень сложная и тонкая проблема, которая все еще является предметом большого исследования.

Ответ 3

Первое, что вам нужно сделать, это преобразование Фурье для преобразования данных в его частоты. Однако он довольно сложный. Я бы не использовал здесь библиотеки распознавания речи, поскольку кажется, что вы не записываете голоса только. Затем вы можете попробовать разные сдвиги во времени (в случае, если звуки не точно выровнены) и используйте тот, который дает вам наилучшее сходство - где вам нужно определить функцию подобия. О, и вы должны нормализовать оба сигнала (ту же самую максимальную громкость).

Ответ 4

Я считаю, что принятое описание немного неверно.

A фрейм выглядит как шаг в графических форматах. Для чередующихся стерео @16 бит/выборки размер кадра 2*sizeof(short)= 4 байта. Для не чередующихся стерео @16 бит/выборка левого канала все один за другим, поэтому размер кадра равен sizeof(short).