
- •Выполнение работы:
- •Листинг 1. Код генерации звукового сигнала и запись в файл.
- •Листинг 2. Код визуализации звукового сигнала из файла
- •Листинг 3. Код построения амплитудного спектра сигнала
- •Листинг 4. Код построения спектрограммы сигнала.
- •Дополнительное задание:
- •Выводы:
- •Список использованных источников
Листинг 4. Код построения спектрограммы сигнала.
g_std = 0.2*Fd # кол-во точек в окне
# симметричное Гауссовское окно:
window = gaussian(round(2*g_std), std=g_std, sym=True)
SFT = ShortTimeFFT(window, hop=round(0.1*Fd), fs=Fd, scale_to='magnitude')
Sx = SFT.stft(input_signal[0,:]) # краткоременное преобразование Фурье
print(sys.getsizeof(Sx) / (2**30) , 'Гб') # используемая память в Гб
# построение графика спектрограммы:
fig1, ax1 = plt.subplots(figsize=(6, 4))
t_lo, t_hi = SFT.extent(N)[:2] # time range of plot
ax1.set_title(rf"STFT ({SFT.m_num*SFT.T:g}$\,s$ Gauss window,"+ rf"$\sigma_t={g_std*SFT.T}\,$s)")
ax1.set(xlabel=f"Time $t$ in seconds ({SFT.p_num(N)} slices,"+ rf"$\Delta t = {SFT.delta_t:g}\,$s)",
ylabel=f"Freq. $f$ in Hz ({SFT.f_pts} bins, "+ rf"$\Delta f = {SFT.delta_f:g}\,$Hz)",
xlim=(t_lo, t_hi))
epss=np.max(abs(Sx))*1e-6 # для масштаба
im1 = ax1.imshow(20*np.log10(abs(Sx+epss),origin='lower', aspect='auto', extent=SFT.extent(N), cmap='viridis')
fig1.colorbar(im1, label="Magnitude $|S_x(t, f)|$")
ax1.semilogy()
ax1.set_xlim([0, T])
ax1.set_ylim([10, Fd/2])
ax1.grid(which='major', color='#bbbbbb', linewidth=0.5)
ax1.grid(which='minor', color='#999999', linestyle=':',linewidth=0.5)
ax1.minorticks_on()
plt.show()
Рисунок 6 — Спектрограмма сигнала
Дополнительное задание:
Из сети Интернет [2] взят моно аудиофайл формата .mp3. При использовании ранее написанного кода выполнена визуализация звукового сигнала. Отображение в общем виде представлено на Рисунке 7.
Видно, что после резкого нарастания вначале громкость звучания постепенно снижается, пока амплитуда к 1 секунде не достигает значения 0.2, после чего начинается поведение подобное синусоидальной форме: с постепенным нарастанием до 1.3 секунды и затуханием к концу файла. Подробнее этот фрагмент рассмотрен на Рисунке 8.
Рисунок 7 — Визуализация выбранного сигнала (общий вид)
Рисунок 8 — Визуализация выбранного сигнала (фрагмент с 1 по 1.6)
Построен график амплитудного спектра данного сигнала (Рисунок 9). На нем видно скачкообразное увеличение громкости вплоть до 50 дБ, по мере увеличения частоты от 10 до 1000 Гц и затем снижение громкости. На основе этого графика можно сделать вывод о том, что для данного аудиосигнала характерен в начале быстро нарастающий звук переходящий из гула (низкий тон) в писк (высокий).
Рисунок 9 — Амплитудный спектр сигнала
В заключении построена спектрограмма исследуемого сигнала (Рисунок 10). На ней видно, что в файле звучат высокие тона, и одновременно в одни и те же моменты времени проявляется разная частота в диапазоне от 1000 до 10 000 Гц. Это говорит о наличие сложного звука, в котором одновременно присутствуют несколько частот, возможно причина в шумах, которые плохо слышны в виду высокой громкости основного звука.
При прослушивании файла слышен неоднородный нарастающий визг. Исследуемый файл — фрагмент озвучки кричащего дройда (робота) (Rd2D) из фильма.
Рисунок 10 — Спектрограмма выбранного сигнала
Выводы:
В результате выполнения лабораторной работы получены навыки формирования и обработки звуковых файлов посредством Python.
Был смоделирован и записан в файл синусоидальный звуковой стереосигнал, особенностью которого является нарастание громкости в левом канале и её уменьшение в правом канале.
Проведена обработка записанного файла. Получена визуализация сигнала, которая показала постепенное увеличение амплитуды звуковых волн в левом канале и напротив её уменьшение в правом канале. Проведён анализ амплитудного спектра, который только показал диапазон звучания файла. Также построена спектрограмма, подтверждающая неизменность частоты сигнала в течении всей его длительности.
Также аналогичный анализ был проведён по отношению к файлу, скачанному из сети. Выводы о поведении сигнала в целом сопоставимы с прослушанным звучанием файла: повышение частоты и амплитуды на протяжённости сигнала сопоставимо с нарастающим визгом при прослушивании.