Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"11303/6153.3 ...")
r = requests.get('https://depositonce.tu-berlin.de/bitstream/11303/'
'6153.3/8/FABIAN_HRTFs_NeutralHeadOrientation.zip')
with zipfile.ZipFile(io.BytesIO(r.content)) as zip_ref:
zip_ref.extractall(os.path.join(current_file_dir, '../data/'))
file = loadmat(filename)
# CTF already compensated in DIR
# Extracting the data is a bit ugly here...
SamplingRate = int(file['SamplingRate'])
SH_l = file['SH'][0][0][0]
SH_r = file['SH'][0][0][1]
f = np.squeeze(file['SH'][0][0][5])
# default grid:
if (grid_azi is None) and (grid_colat is None):
grid_azi, grid_colat, _ = grids.gauss(35) # grid positions
# %% Inverse SHT
HRTF_l = sph.inverse_sht(SH_l, grid_azi, grid_colat, 'complex')
HRTF_r = sph.inverse_sht(SH_r, grid_azi, grid_colat, 'complex')
assert HRTF_l.shape == HRTF_r.shape
# %%
hrir_l = np.fft.irfft(HRTF_l) # creates 256 samples(t)
hrir_r = np.fft.irfft(HRTF_r) # creates 256 samples(t)
assert hrir_l.shape == hrir_r.shape
# %% Resample
fs_target = 48000
hrir_l_48k, hrir_r_48k, _ = process.resample_hrirs(hrir_l, hrir_r,
SamplingRate,
fs_target)
fs_target = 96000
# %%
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import loadmat, savemat
from scipy import signal as scysignal
import soundfile as sf
from spaudiopy import plots, sph, process, utils, grids, IO
# %% Setup
N = 35 # modal order of grid
N_hrtf = 35 # modal order of HRTFs
azi, colat, weights = grids.gauss(N) # grid positions
plt.figure()
plt.scatter(azi, colat)
# %% Load HRTF
try:
file = loadmat(
'../data/FABIAN_HRTF_DATABASE_V2/1 HRIRs/SphericalHarmonics/FABIAN_HRIR_measured_HATO_0.mat')
except FileNotFoundError:
import requests, zipfile, io
print("Downloading from http://dx.doi.org/10.14279/depositonce-5718.2...")
r = requests.get('https://depositonce.tu-berlin.de/bitstream/11303/6153.2/18/FABIAN_HRTF_DATABASE_V2.zip')
with zipfile.ZipFile(io.BytesIO(r.content)) as zip_ref:
zip_ref.extractall('../data/')
file = loadmat(
'../data/FABIAN_HRTF_DATABASE_V2/1 HRIRs/SphericalHarmonics/FABIAN_HRIR_measured_HATO_0.mat')
Returns
-------
HRIRs : sig.HRIRs instance
left : (g, h) numpy.ndarray
h(t) for grid position g.
right : (g, h) numpy.ndarray
h(t) for grid position g.
grid : (g, 2) pandas.dataframe
[azi: azimuth, colat: colatitude] for hrirs.
fs : int
fs(t).
"""
if filename == 'dummy':
azi, colat, _ = grids.gauss(15)
grid = pd.DataFrame({'azi': azi, 'colat': colat})
# Create diracs as dummy
hrir_l = np.zeros([grid.shape[0], 256])
hrir_l[:, 0] = np.ones(hrir_l.shape[0])
hrir_r = np.zeros_like(hrir_l)
hrir_r[:, 0] = np.ones(hrir_r.shape[0])
hrir_fs = fs
elif filename is None:
# default
if fs not in [44100, 48000, 96000]:
raise NotImplementedError('44100, 48000, 96000'
' default available.')
default_file = '../data/' + 'HRTF_default_' + str(fs) + '.mat'
current_file_dir = os.path.dirname(__file__)
filename = os.path.join(current_file_dir, default_file)