gobongbob / Learn-ON

Online Re-Learning assistant "Learn ON"'s repository
http://13.125.220.170:3000/
MIT License
0 stars 3 forks source link

[Data] Lecture video data selection #6

Open bobsiunn opened 3 years ago

bobsiunn commented 3 years ago

STT로 텍스트 데이터 변환 이후, NLP 엔진을 돌릴 강의 영상 데이터의 선정에 있어서 논의 사항이 있습니다.

현재 고민 중인 안건은 총 두 가지로, MVP 구현 등에 있어 더욱 효율적인 방안을 찾고 있습니다.

첫번째 안건은 기존 아키텍처 설계 그대로 실제 강의 영상 파일을 input해 DB에 저장한 다음, 음성을 추출해 데이터로 저장하고, 해당 데이터를 STT 변환한 텍스트 데이터, NLP를 통해 도출된 keyword들을 같은 위치에 저장하는 것입니다. 이 방식의 경우, Learn-ON이 실제 온라인 학습 상황에서 사용되는 케이스에 가장 가까운 형태로 MVP를 구현할 수 있다는 장점이 있습니다. 하지만 개발 과정에서 DB에 상당한 용량의 데이터를 저장해야 하는점, 연산에 많은 시간이 소요될 가능성이 높다는 점 등의 단점이 있습니다.

두번째 안건은 기존 설계를 변경하여, 유튜브에 업로드된 강의 영상 링크를 input하면, python의 유튜브 관련 모듈을 import하여, 음성 추출해 DB에 저장하고, 같은 방법으로 STT 데이터와 keyword들을 DB 상 같은 위치에 저장하는 것입니다. 이 방식의 경우, 웹 상에서 무거운 용량의 동영상 데이터를 직접 재생할 필요 없이, 링크로 연결된 유튜브 영상을 재생하고 북마크 클릭 시 해당 시점으로 이동하는 프로세스만 구현함으로써 MVP 구현이 상대적으로 간단해질 것으로 예상된다는 장점이 있습니다. 다만 유튜브 영상을 Learn-ON의 웹으로 끌어오는 과정이 간단할것인지에 대해 확신이 들지 않는 상황이고, Learn-ON의 실제 사용 시나리오와 다소 차이가 있는 MVP가 될 수 있다는 단점이 있습니다.

이 두 안건에 대해 각각 어떻게 생각하시는지 간단하게라도 의견 남겨주시고, 다른 방향성에 대한 생각이 있으시다면 제시해주시면 감사하겠습니다.

skyriver228 commented 3 years ago

유튜브 비공개 동영상으로도 강의 영상이 공유되는 경우가 있으니 두번째 안건도 괜찮은 흐름이 될 수도 있을 것 같습니다. 첫번째 안건같은 경우에도 찾아보니 동영상 결과를 DB에 바로 저장하지 않고 Amazon S3라는 객체 저장소에 저장하고, Amazon Lambda 기능을 이용해서 S3에 동영상 파일이 업로드되면, Amazon Comprehend와 같은 api 호출이 가능한 것으로 보입니다. 이런 기능을 사용하면, 연산속도 측면에서도 빨라질 수 있지 않을까 싶습니다. [참고]https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html

bobsiunn commented 3 years ago

AWS를 활용해 그러한 방법으로 접근하는 것도 좋은 솔루션이 될 수 있을 것 같습니다. 다만 한 가지 걱정이 되는 점은, 저희가 동영상 데이터를 저장소에 저장하는 것 뿐만이 아니라 해당 동영상에서 음성을 추출하여 분리하는 프로세스가 필요한데, 이 부분에 대해서는 어떻게 처리를 하면 좋을까요?

skyriver228 commented 3 years ago

일단 aws 서비스 중에 음성 추출이랑 텍스트 추출이 가능한 서비스가 있는 것으로 보이는데 활용할 수 있을 것 같습니다. 크레딧 나오는데로 확인 한번 해보겠습니다.

bobsiunn commented 3 years ago

음..음성 추출 파트를 AWS API로 적용하는 것도좋지만, 우려되는 이슈로 저희가 여러 개의 API를 사용함에 따라 API 간 충돌이 일어나지 않을까에 대한 걱정이 있습니다.

그런 차원에서 음성 추출에 경우에는 로컬 혹은 저장소에 있는 영상 파일, 유튜브 영상 등에음성을 추출할 수 있는 파이썬 모듈을 import 해서 처리한 후 해당 데이터를 DB로 보내는 식으로 구현하는 것은 어떨까요?

관련 소스 링크 첨부합니다

  1. 유튜브 링크를 입력하면, 음원을 추출하는 소스 코드 [https://m.blog.naver.com/dsz08082/221753467977]

  2. 로컬 파일을 입력하면, 음원을 추출하는 소스 코드 [https://zulko.github.io/moviepy/getting_started/audioclips.html]

skyriver228 commented 3 years ago

이게 더 나을수도 있을 것 같네요! 음 일단 크레딧 나오는데로 한번 보죠 ㅠㅠ