알고리즘 원리는 다음과 같다.
미리 핸드폰에 녹음된, 근원지가 핸드폰으로부터 left, right 쪽인 두 소리를 각각 anvil의 fileloader 기능을 통해 입력받는다. 그 다음, anvil.server로 연결된 내 코랩에서 입력된 소리를 librosa를 통해 전처리하여 그 크기의 평균을 수치로 변환하여 anvil 서버를 통해 return한다.
이때 문제가 발생하는데, 각각의 fileloader는 각각의 함수로 정의되기 때문에, 첫 번째 fileloader로부터 전달받은 소리 크기 수치가 그 fileloader 함수가 끝나면 날라가버린다. 그래서 두 번째 fileloader로부터 받은 소리 크기 수치와 첫 번째 소리 크기 수치를 비교할 수 있는 방법이 없었다. 함수 외부에 변수를 선언해 값을 입력해 보았지만, 파이썬에는 포인터가 없어서 그런지(정확한 이유는 모름) 잘 되지 않았다. 일단 anvil을 더 공부하였고, 그러다보니 database를 발견하여 이를 사용해 문제를 해결하였다.
첫번째 fileloader 함수에서 값을 불러올 때 미리 만들어둔 database를 일단 초기화시키고, 거기에 첫 번째 소리의 크기값을 저장한다. 그리고 두 번째 fileloader 함수에서 두 번째 소리 크기값을 불러와 첫 번째 소리의 크기값과 비교한다. 이때, 첫 번째 소리의 크기값이 float 형이 아니므로 형변환 과정이 필요했다. 이렇게 하여 소리를 비교할 수 있었고, 비교 결과에 따라 미리 colab에 만들어둔 plot 함수를 불러와 bar chart를 모바일 웹 상에 띄울 수 있었다!(추가로, plt.show()를 썼더니 anvil.mpl_util.plot_image()가 못 읽어왔는데, show를 그대로 plot으로 바꾸어 plt.plot()으로 하니 결과도 바뀜이 없었고 anvil.mpl_util.plot_image()도 성공적으로 읽어왔었다.
'논문' 카테고리의 다른 글
제1 저자 논문_한국디지털콘텐츠학회_난청 예방 위한 웹앱 개발 및 사용자 디자인 연구 (0) | 2023.01.14 |
---|---|
제1 저자 논문_한국HCI학회_머신러닝 기반 앱 개발 및 디자인 (0) | 2023.01.14 |
8월 30일 논문 진척 상황 (검증된 데이터셋 찾기, 찾은 데이터셋 내 모델에 적용하기) (0) | 2021.08.30 |
8월 25일 논문 진척 상황 (0) | 2021.08.25 |
8월 17일 현재 논문 진척 상황 (0) | 2021.08.17 |