음원등의 일정하지 않은 데이타 검색?

Seven..의 이미지

음원을 입력받으면;;
마이크라던가 라인이라던가..아니면
현재 재생중인 음원데이타를..
입력받으면, 가지고 있는 여러 음원의 데이타베이스에서
찾아주는 프로그램을 만들려고 한다면;;

어떤 방식으로 데이타베이스를 꾸미고,
어떤 방식으로 검색을 해야 할까요?

입력과정에서 일단은 잡음이 없다고 가정을 하고 만들건데,
마이크로 입력을 받는다던가 하면,
자연히 잡음이 생기겠죠.. 그런 경우에는 어떻게 해결을 할 수 있을지.
알고싶습니다.

어떤 방법으로 하면 좋을지 많은 분의 의견을 여쭙고 싶습니다.

hb_kim의 이미지

두 질문 모두 trivial 하지 않은 질문입니다. 일단 대학원에 진학하시는것을 권해드리고 싶군요.

Seven..의 이미지

졸업작품으로 해보려고 하는데요;;
잡음이 없는 상태에서 음원검색에 대해서라도;;

머리속에 생각이 떠돌기는 하는데
뭔가 종점이 없네요;;;

상당히.... 뭔가 좀... 쉽지는 않을 거라고 생각하지만;;
아이디어 자체가 어려운건가요?.. 흐음;; :roll:

VENI VIDI VICI

recypace의 이미지

별도움이 안되는 얘기지만, 소리의 유사성 이나 일치성을 정의하는 것
자체가 상당히 어려워 보이는군요.. ^^ 가능하다면 재미 있을것 같군요.
결과도 한번 얘기해 주시길..

근데, 많이 다를 것 같기도 하고 비슷할 것 같기도 한데,
머. 음성 지문 같은 걸로 같은 사람 보는거 있잖아요.
그런것도 비슷한 것 아닐까요?
음 음성 인식 분야는 쫌 다를 것 같기도 하고 원하시는 거랑.
관련 논문들을 많이 보셔야 할듯..

voider의 이미지

여러가지 방법이 있겠지만
주파수 를 이용하는 방법이 가장 간단하지 않을까요?

낮은음은 저주파이고 높은음은 고주파니까
오차를 줄이기 위해 주파수와 시간을 등급을 나누고 서로 비교하면
될것이라고 제머리속에서 윙윙대네요...

아뭏든 열심히 하세요
아는게 없어서 머라고 도움을 못드리네요 ㅋㅋ

-- 아쉬운 하루 되세요 --

hb_kim의 이미지

왜 이런 문제가 어려운지 한번 설명하려 해보죠.

일단 PCM 음원 2개를 그냥 비교해서 같은지 판단하려 시도 해보죠. 하나는 "원본" 음원이고 "샘플"은 다른 하나는 그중의 일부를 잡음환경에서 샘플링 한것입니다.

단순하게 euclidian distance 를 구하려면 원본음원의 일정한 시각에서 window를 떼어와서 샘플과 (Xi - Yi) * (Xi - Yi) 행렬의 합을 구합니다. 그 "일정한 시각"이라는 것이 정확히 언제인지 모르므로 이 계산을 원본음원의 모든 시각에 대해서 구해야죠 - sliding. 샘플이 5초만 되어도 행렬합 하나 구하는게 곱셈 5*44,000 번의 계산부하가 들어가죠. 게다가 시각을 변동해서 구하려면, 1분 짜리 음악만 하더라도 60*44,000*5*44,000 번의 곱셈이 필요합니다. 이것을 DB 에 있는 모든 음악에 다 연산을 하려면...

안되죠.

어떤 분이 주파수 이야기를 하셨는데, 똑같은 문제가 있습니다. 어떤 선형 트랜스폼을 하건간에 단순하게 계산하려면, 시간별로 윈도우를 떼어와서 sliding 하면서 계산해야 하므로 계산부하는 별 변화가 없구요.

따라서 음원의 특색 '파라메터'의 추출이 불가피 합니다. 음원의 모델링이 필요하죠. 음악이라면 어떤 악기가 사용되었는지, 어떤 음을 연주하는지를 유추하는것이고 음성이라면 content 와 화자를 인식하는것입니다.

일단 음원에 존재할수 있는 엄청난 수의 악기와 음성과 변조장치의 모델링을 다 하실수 있는 단계가 되면 기본적인 신호처리 알고리듬은 모두 익숙해 지실것이며, 신호처리 논문도 엄청나게 읽고 나신 후일것입니다.

왜 자연 잡음을 가우시안으로 모델링하는지, 왜 예측에러의 에너지가 최소인 파라메터가 maximum likelyhood 예측인지, 칼만필터는 뭔지, invert whitening process 가 무엇인지, covariance matrix 가 어떤데 쓰는것인지 훤하게 아시겠죠. 시뮬레이션도 엄청 돌려보신 상태이고, 매트랩과 각종 신호처리 툴들을 자유자재로 쓰지 못하면 실험이 가능하지도 않겠고 여기까지 올수도 없을지도 모르죠. 영어가 딸리면 논문을 읽는게 불편하겠고, 수학이 딸리면 논문에 있는 공식과 과정을 이해못하겠죠. 프로그래밍이 딸리면 실험하는데 지장이 있구요.

이때쯤해서 석사졸업도 다가오겠죠.

그 다음의 문제가 음원이라는것이 이러한 모델링 파라메터가 시간적으로 변화하는 시퀀스라는것이 문제입니다. 어떤분이 음성지문 이야기를 하셨는데, 근본적으로 성대의 pitch detection 입니다. 어떤 내용의 말을 하건, 어떤 시간에 샘플링을 하건 불변의 특성입니다. 지금 고려하는 음원인식보다는 훨씬 좁은 범위의 문제죠. 이 시퀀스도 모델링/파라메터화 해야 합니다. 안그러면 DB 화가 안되겠죠. 그런데 시간적으로 변화하는 파라메터의 시퀀스를 어떻게 모델링 할수 있을까요? 각 파라메터의 가중치(weight)는 어떻게 설정해야 하죠? 잡음의 영향은? 계산부하는?

만약 누군가가 이런 문제를 이미 원론적으로 해결해놓지 않았다면, 박사졸업이 닥쳐오기전에 이런 모든 문제를 해결할 수 있을까요?

시중에 떠돌아다니는 공학박사중 과연 몇 %가 이런 정도의 난이도를 갖는 문제를 해결할수 있을까요?

이 모든것을 다 해결하고 나서야 비로소 할수 있는 사소한 일이 이 다양한 파라메터를 여러개의 DB의 키로 구성하는 것입니다. 애플리케이션에서는 음원을 파라메터 추출해서 DB에 넣어주고, 임의의 샘플에서 파라메터를 추출해서 DB에 쿼리하겠죠. DB에서 뽑아준 후보음원중 적당하다고 판단되는것을 다시 재확인해서 결과를 생성하겠죠.

Seven..의 이미지

난해하군요^^; 간단하게 보지는 않았지만;;

저번에 코엑스에서 하던 무슨 테크 전시회에서..
전화기로 음악받아서 음원 정보를 가져오는 회사의 상품을 봤거든요;;

핸폰으로 전화걸어서 들려주면;
누구의 무슨앨범의 무슨노래 몇초부분이다 라고.. 문자가 왔었던;;

음; 데이타베이스화도 어렵겠거니와, 역시나 잡음이 없다고 해도 부하가
문제라고 생각했었는데;

주파수로 넘긴다고 해도, 샘플을 어디서부터 뜨는지에 대해 워낙
문제가 있어서..

영상인식보다 더.. 난해한 문제인것 같군요;;

다시 생각을 해봐야겠네요; 좋은 조언 감사드립니다^^

VENI VIDI VICI

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.