'신호처리' 카테고리의 다른 글
[DSP] CTFT와 DTFT의 관계 (0) | 2024.01.04 |
---|---|
[Sampling] Upsampling (0) | 2023.11.16 |
[Emphasis] Pre-emphasis 와 De-emphasis (0) | 2023.11.10 |
Noise Pattern (0) | 2023.11.10 |
[DSP] CTFT와 DTFT의 관계 (0) | 2024.01.04 |
---|---|
[Sampling] Upsampling (0) | 2023.11.16 |
[Emphasis] Pre-emphasis 와 De-emphasis (0) | 2023.11.10 |
Noise Pattern (0) | 2023.11.10 |
https://velog.io/@ddeo99/VS-Code-C-%EC%82%AC%EC%9A%A9-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95
MinGW 설치 파일이 다운로드 자체가 안돼서 애먹었는데,,, 위의 블로그 글 따라해서 성공했다.
CMAKE Error 해결 (0) | 2024.03.21 |
---|
공부하는 코드가 pytorch 1.2.0 버전인지라 너무 구버전인 것 같아 pytorh 2.1.2로 가상환경을 세팅하였다.
와중에 아래 코드에서
이 사람처럼 각 loss에 대해 따로 zero_grad() -> backward() -> step()을 하지 않고 아래 순서로 코드를 바꿔주니 잘 돌아간다.
Dataloader (TypeError: cannot pickle 'module' object) (0) | 2024.05.14 |
---|---|
cmd 창 안 열리는 현상 해결 (0) | 2022.09.02 |
MGT 코드 공부하고 있는데,,, Data load하는 부분에서 자꾸 요... 에러가 뜨더라...
dataloader의 num_workers가 너무 커서 그런 경우가 있다길래 8, 4, 1로도 다 돌려봤는데 똑같다ㅠㅠ
num_workers=0으로 설정하니까 되네....
loss.backward() 에러; RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation (0) | 2024.05.14 |
---|---|
cmd 창 안 열리는 현상 해결 (0) | 2022.09.02 |
https://github.com/DavidDiazGuerra/gpuRIR
이걸 설치하려고 하는데....
윈도우 10에서 아래의 에러가 발생했다...
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CUDA_COMPILER not set, after EnableLanguage
찾아보니 pytorch를 conda로 설치했을 때, 이럴 수 있다고 해서 pip로 설치해주어 해당 에러는 해결했다.
그런데 이번에는 CUDA toolset을 찾을 수가 없단다...
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/CMakeDetermineCompilerId.cmake:563 (message):
No CUDA toolset found.
https://github.com/NVlabs/instant-ngp/issues/18
똑같은 문제를 해결한 사람을 발견했다. cuda 11.8을 삭제후 재설치해 아래 조언대로 해보려고 한다.
엥?? 사용자 지정 옵션에 이미 자동으로 체크가 되어있다...!!!
그 밑에 visual studio 2022와 2019 모두 설치되어있을 때, 2022를 삭제하니 해결이 되었다는 말이 있다.
2022를 삭제하고 2019를 다시 설치했다.
참고로 visual studio 2019 설치 파일을 받을 수가 없어 아래 링크를 따라갔다.
https://striban.tistory.com/69
조언대로 MSVC도 체크해주었다.
이제 cmake도 재설치 해주겠다.
흠... 2022를 삭제하고 cmake를 재설치해주었는데, 2022를 못찾겠다고 한다
2019 대신 깔아줬는데~!
C:\Users\jis00\Research\gpuRIR\setup.py:32: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
cmake_version = LooseVersion(re.search(r'version\s*([\d.]+)', out.decode()).group(1))
CMake Error at CMakeLists.txt:5 (project):
Generator
Visual Studio 17 2022
could not find specified instance of Visual Studio:
C:/Program Files/Microsoft Visual Studio/2022/Community
놀랍게도 깃허브 repository 삭제후 다시 받으니 해결이 됐다....
이후 CUDA도 재설치해주니 드디어 에러없이 설치가 완료되었다고 떴다!!
VS code C++ 환경구축 (1) | 2024.06.04 |
---|
잘 알려져있고 가장 강력한 speech analysis technique 중 하나로 discrete-time speech production model의 parameter들을 추정하거나 낮은 bit rate으로 speech를 representing하여 전송 혹은 저장하는데 사용됩니다.
이름(linear predictive coding)에서 알 수 있듯이 본래는 speech processing 분야에서 speech coding application에 사용되었다가 지금은 일반적으로 linear predictive analysis technique들을 말하는데 쓰입니다.
speech production과정을 아래와 같이 excitation과 vocal tract을 통과하는 과정으로 나누어 나타내줄 수 있습니다. 이때, vocal tract의 formants (공명주파수)에 따라 발생하는 음성 신호가 달라지게 됩니다.
그래서 만약 우리가 이 vocal tract을 digital filter로 나타내고, 이 digital filter의 parameter에 따라 formants가 달라지는 것을 반영하면 말소리를 흉내낼 수 있게 됩니다.
[Cepstrum] Cepstrum과 Homomorphic analysis (0) | 2024.01.04 |
---|---|
[STFT] Frequency resolution과 Time resolution (3) | 2023.11.09 |
[Window] Rectangular window와 Hamming Window (0) | 2023.11.09 |
아래의 impulse train은 continuous signal이지만 T 간격으로 값을 가지기 때문에 다른 signal에 곱해주면 T주기로 sampling된 discrete signal을 얻어낼 수 있습니다. 이를 이용해서 CTFT와 DTFT의 관계를 정리해보도록 하겠습니다.
[Impulse train]
$s(t)=\sum_{n=-\infty}^{\infty} \delta(t-n T)$
[Impulse train과 signal을 곱해 discrete signal로 sampling (여전히 continuous signal이라고 간주)]
$x_s(t)=\sum_{n=-\infty}^{\infty} x_c(n T) \delta(t-n T)$
Time-domain에서의 multiplication는 frequency-domain에서 convolution과 같다는 특성이 있습니다. (CTFT / DTFT의 property) 그렇기 때문에 time domain에서 signal $x(t)$와 impulse train $s(t)$의 multiplication을 CTFT한 것은 각각의 signal을 CTFT해준 후에 convolution해준 것과 같습니다.
$x_s(t)=x_c(t)s(t)\leftrightarrow X_s(j \Omega)=\frac{1}{2 \pi}X_c(j\Omega)*S(j\Omega)$
[Inverse train의 CTFT]
$s(t)=\sum_{n=-\infty}^{\infty} \delta(t-n T) \leftrightarrow S(j \Omega)=\frac{2 \pi}{T} \sum_{k=-\infty}^{\infty} \delta\left(j\left(\Omega-k \Omega_S\right)\right)$ $(where, \Omega_S=\frac{2 \pi}{T})$
따라서 sampling된 signal $x_s(t)$의 CTFT 결과는 아래와 같습니다.
$X_s(j \Omega)=\frac{1}{2 \pi}X_c(j\Omega)*S(j\Omega)= \frac{1}{2 \pi}X_c(j\Omega)* \frac{2 \pi}{T} \sum_{k=-\infty}^{\infty} \delta\left(j\left(\Omega-k \Omega_S\right)\right)$
식을 보면 $\frac{1}{T}$로 scaling된 $X_c(j\Omega)$ $\Omega_s$ 간격으로 반복된다는 것을 알 수 있는데, 잘 와닿지 않기 때문에 그림으로도 확인해보도록 합시다.
time domain에서 signal $x(t)$와 impulse train $s(t)$의 multiplication을 CTFT한 것은 각각의 signal을 CTFT해준 후에 convolution해준 것과 같기 때문에 $X_c(j\Omega)$는 아래와 같이 나오게 됩니다.
즉 DTFT는 CTFT를 $\frac{1}{T}$만큼 scaling 해준 뒤에 일정한 간격 $\Omega_0=\frac{2 \pi}{T}$ 으로 반복한 것과 같습니다.
윈도우에서 AWS 설치 및 데이터셋 다운로드 (1) | 2024.12.13 |
---|---|
[Sampling] Upsampling (0) | 2023.11.16 |
[Emphasis] Pre-emphasis 와 De-emphasis (0) | 2023.11.10 |
Noise Pattern (0) | 2023.11.10 |
음성신호의 생성 과정은 아래의 Speech production model (Source filter model)로 나타냅니다. 그러면 voiced speech signal 와 unvoiced speech signal 과 각각의 vocal tract impulse response는 아래와 같이 식으로 표현해줄 수 있습니다.
[voiced speech]
signal : $s[n]=p[n] * h_V[n]$
impulse response : $h_V[n]=A_V \cdot g[n] * v[n] * r[n]$
[unvoiced speech]
signal : $s[n]=u[n] * h_U[n]$
impulse response : $h_U[n]=A_U \cdot v[n] * r[n]$
위의 식을 통해서 각각의 component signal들이 convolution되어 최종적으로 음성신호로 출력되는 것을 알 수 있습니다.
Homomorphic system은 우리가 자주 들어본 LTI system에서의 linearity 성질(principle of superposition)을 일반화 시킨 시스템입니다. 기존의 LTI system은 input으로 두 가지 signal이 addition된 형태가 들어오면 output 역시 각 signal의 output의 addition을 출력해주는 특성을 가지고 있습니다.
Homomorphic system의 경우에는 이 superposition 특성을 일반화하여서 input으로 두 가지 signal이 convolution된 형태가 들어오면 output 역시 각 signal의 output의 convolution을 출력해주는 특성을 갖는 시스템을 말합니다.
이 Homomorphic system의 중요한 특징이 바로 3개의 homomorphic system을 casecade의 형태로 합쳐 아래의 그림처럼 표현을 할 수 있다는 점입니다. 이때 $\mathcal{D}_*\{ \cdot \}$은 characteristic system으로 convolution → addition 형태로 출력해주는 시스템이고, 그 inverse system같은 경우에는 반대로 addition → convolution의 형태로 바꿔주는 특성을 가지고 있습니다. 즉 characteristic system에 convolutioned input을 넣어주면 signal의 component들을 addition한 non-linearity한 convoltion 연산을 linearity 연산으로 바꿔줍니다..!!!
그런데 speech signal은 각 component들의 convolution된 signal이니까, 이 characteristic system을 이용하면 신호의 각 성분들을 decompose할 수 있게 되는 것입니다. 이때 charateristic system의 output은 complex cepstrum의 합입니다.
Cepstrum은 time-domain에서 frequency-domain으로 변환을 해준 것처럼 frequency-domain에서 time-domain으로의 변환도 가능하다는 것을 보여주기 위해 도입된 개념입니다.
Cepsturm은 아래의 식과 같이 spectrum의 log magnitude를 취한 후 Inverse Fourier Transform을 해주어 구합니다. 그리고 이때 magnitude를 취하지 않고 spectrum의 magnitude만 취한 후 Inverse Fourier Transform을 해주어 구한 것은 complex cepsturm이라고 합니다.
[cepstrum]
$c[n]=\frac{1}{2 \pi} \int_{-\pi}^\pi \log \left|X\left(e^{j \omega}\right)\right| e^{j \omega n} d \omega$
[complex cepstrum]
$\hat{x}[n]=\frac{1}{2 \pi} \int_\pi^\pi \log \left\{X\left(e^{j \omega}\right)\right\} e^{j \omega n} d \omega$
그럼 실제로 homomorphic system을 이용해 voiced sound를 decompose하는 예를 보도록 하겠습니다.
voiced sound의 component들이 아래와 같은 신호가 있다고 할 때, 우리는 signal과 complex cepstrum을 다음의 식으로 나타낼 수 있습니다.
\begin{aligned} & s[n]=h_V[n] * p[n]=A_V g[n] * v[n] * r[n] * p[n] \\ & \hat{s}[n]=\hat{h}_V[n]+\hat{p}[n]=\log \left|A_V\right| \delta[n]+\hat{g}[n]+\hat{v}[n]+\hat{r}[n]+\hat{p}[n]\end{aligned}
그러면 각각의 component들의 complex cepstrum을 addition하면 기존의 신호의 complex cepstrum을 나타낼 수 있습니다. 그럼 addition된 결과물에서 각각의 component의 특성이 잘 보이니까 음성신호 분석에 사용이 가능하다는 것이겠죠? 아래는 각각의 component들의 complex cepstrum입니다.
보시면 아실 수 있듯이 각자 특징이 보입니다. 그렇기 때문에 원래의 synthetic speech의 complex cepstrum을 보았을 때, 각각의 component들의 특징을 알아볼 수 있습니다. 이때 이 포스트에서는 다루진 않았지만, 각각의 component들이 모두 maximum/minimum phase signal이기 때문에 cepstrum은 아래의 오른쪽 그림과 같이 complex cepstrum의 even part로 나타납니다. (이 내용은 길어질 것 같아 따로 포스팅으로 하도록 하겠습니다.)
[LPC] Linear Predictive Analysis (0) | 2024.01.25 |
---|---|
[STFT] Frequency resolution과 Time resolution (3) | 2023.11.09 |
[Window] Rectangular window와 Hamming Window (0) | 2023.11.09 |