https://devbirdfeet.tistory.com/169

 

Windows - AWS CLI 설치하기 (AWS Session Manager 구성)

윈도우에 맥 개발환경과 동일한 세팅을 위해 AWS Session Manager(SSM) 를 설치하려고 한다. 그러기 위해서는 AWS CLI 가 설치가 되어있어야 그 위에서 SSM 을 사용할 수 있다. 맥에서는 $ brew install awscli 만

devbirdfeet.tistory.com

 

AWS에 있는 Open dataset 다운받기

https://brain-nim.tistory.com/46

 

AWS S3 한번에 다운받기 (AWS CLI)

AWS 콘솔은 어지간히 불편한게 많습니다. 별 것 아닌 것 같은 기능이 지원이 안되죠. 대표적인게 S3의 데이터를 폴더째 다운받거나 여러개를 한번에 다운받는게 안된다는 것입니다. 현재로서는

brain-nim.tistory.com

 

'신호처리' 카테고리의 다른 글

[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

 

VS Code C++ 환경 설정 (MinGW 설치)

VS Code에서 C++ 헤더 파일과 관련된 에러가 계속하여 발생하여 vscode와 .vscode 폴더를 삭제하여 vscode 설정을 초기화하고 재설치를 진행 하였다. 1. MinGW 설치 다운로드 링크에서 this direct link to the MinG

velog.io

 

MinGW 설치 파일이 다운로드 자체가 안돼서 애먹었는데,,, 위의 블로그 글 따라해서 성공했다.

'환경구축' 카테고리의 다른 글

CMAKE Error 해결  (0) 2024.03.21

공부하는 코드가 pytorch 1.2.0 버전인지라 너무 구버전인 것 같아 pytorh 2.1.2로 가상환경을 세팅하였다.

와중에 아래 코드에서 

 

이 사람처럼 각 loss에 대해 따로 zero_grad() -> backward() -> step()을 하지 않고 아래 순서로 코드를 바꿔주니 잘 돌아간다.

https://discuss.pytorch.org/t/solved-pytorch1-5-runtimeerror-one-of-the-variables-needed-for-gradient-computation-has-been-modified-by-an-inplace-operation/90256/2

 

[Solved][Pytorch1.5] RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operatio

Hi, This is most likely happening because value_optimizer.step() actually modifies the weights of the model inplace while the original value of these weights is needed to compute action_loss.backward(). Is that the issue?

discuss.pytorch.org

'고군분투' 카테고리의 다른 글

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으로 설정하니까 되네....

https://github.com/DavidDiazGuerra/gpuRIR

 

GitHub - DavidDiazGuerra/gpuRIR: Python library for Room Impulse Response (RIR) simulation with GPU acceleration

Python library for Room Impulse Response (RIR) simulation with GPU acceleration - DavidDiazGuerra/gpuRIR

github.com

이걸 설치하려고 하는데....

윈도우 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

 

Build problem: No CUDA toolset found · Issue #18 · NVlabs/instant-ngp

I have the following error when trying to build on windows: My environment: window 10 cmake 3.22 Visual Studio 2019 CUDA 11.3 Does anyone know what's going on?

github.com

똑같은 문제를 해결한 사람을 발견했다. cuda 11.8을 삭제후 재설치해 아래 조언대로 해보려고 한다.

엥?? 사용자 지정 옵션에 이미 자동으로 체크가 되어있다...!!!

그 밑에 visual studio 2022와 2019 모두 설치되어있을 때, 2022를 삭제하니 해결이 되었다는 말이 있다.

2022를 삭제하고 2019를 다시 설치했다.

참고로 visual studio 2019 설치 파일을 받을 수가 없어 아래 링크를 따라갔다.

https://striban.tistory.com/69

 

[Visual Studio 2019] 오프라인 설치 전체 다운로드 방법

오랜만에 윈도우용 앱을 만드려고 Visual Studio 사이트에 들어갔더니 Visual Studio 가 2022 버전으로 바뀌었다. Visual Studio 2022 Visual Studio 2022의 새로운 기능 | 무료 다운로드 - Visual Studio Visual Studio 2022는

striban.tistory.com

조언대로 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

1. LPC (Linear Predictive Coding) 란 무엇인가?

잘 알려져있고 가장 강력한 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들을 말하는데 쓰입니다.

2. LPC를 사용하는 이유

1) Speech Production Model

speech production과정을 아래와 같이 excitation과 vocal tract을 통과하는 과정으로 나누어 나타내줄 수 있습니다. 이때, vocal tract의 formants (공명주파수)에 따라 발생하는 음성 신호가 달라지게 됩니다.

그래서 만약 우리가 이 vocal tract을 digital filter로 나타내고, 이 digital filter의 parameter에 따라 formants가 달라지는 것을 반영하면 말소리를 흉내낼 수 있게 됩니다.

 

 

 

 

 

아래의 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)$

Impulse train (왼) Impulse train을 continuous signal에 곱해 discrete signal로 표현한 모습 (오)

 

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$ 간격으로 반복된다는 것을 알 수 있는데, 잘 와닿지 않기 때문에 그림으로도 확인해보도록 합시다.

continous signal x(t)의 CTFT 결과
Impulse train을 CTFT한 결과

 

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되어 최종적으로 음성신호로 출력되는 것을 알 수 있습니다.

 

1. Homomorphic system

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을 출력해주는 특성을 갖는 시스템을 말합니다.

LTI system와 Homomorphic system

이 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 연산으로 바꿔줍니다..!!!

 

Homomorphic deconvolution의 casecade form

그런데 speech signal은 각 component들의 convolution된 signal이니까, 이 characteristic system을 이용하면 신호의 각 성분들을 decompose할 수 있게 되는 것입니다. 이때 charateristic system의 output은 complex cepstrum의 합입니다.

2. 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$

 

3. Homomorphic Analysis

그럼 실제로 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}

Time-domain representation of speech model for a voiced sound /AE/

그러면 각각의 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로 나타납니다. (이 내용은 길어질 것 같아 따로 포스팅으로 하도록 하겠습니다.)

+ Recent posts