Блог

Дуу авианы fingerprint SHAZAM хэрхэн ажилладаг вэ?

2022-12-01

Shazam гэх энэхүү гар утасны аппликейшн нь таны эргэн тойронд тоглогдож буй аливаа дууг таньж тухайн дуутай холбоотой мэдээллүүдийг харуулдаг программ юм. Shazam-н дуу танилт нь дуу шуугиантай олон нийтийн газар хүртэл ямар ч асуудалгүй ажилладаг нь гайхалтай билээ.

Shazam-н өгөгдлийн сан буюу database-д 8 сая гаруй аудио, дуу одоогийн байдлаар байгаа бөгөөд дундаж дууг 3 минутын урттай гэж тооцвол бүх дууг дараалуулан тоглуулахад 45 жил орчим шаардлагатай.

Тэгвэл ийм их хэмжээний өгөгдөлтэй өгөгдлийн сангаас SHAZAM нь хэрхэн хурдан хайлт хийж тухайн нэг дууг олж чадаж байна вэ? Яг үнэндээ SHAZAM-аар дууг хайхад оргинал дууг шууд хайдаггүй ба дуу бүрд өөрийн гэсэн audio fingerprint-г өгөгдлийн сандаа хадгалсан байдаг. Таны хайж байгаа тухайн дууг shazam нь audio fingerprint рүү хөрвүүлэх замаар оновчтой, хурдан таних боломжийг олгодог ба эдгээр audio fingerprint нь тоон мэдээллийн цуглуулгаас бүрддэг байна.

Тэгвэл дуу чимээ гэж юу вэ?

Хамгийн энгийн тодорхойлолтоор бол дуу чимээ нь чичиргээд бөөмс юм. Дуу тус бүрийг өвөрмөц болгодог гурван элемент байдаг: далайц /amplitude/, давтамж /frequency/, үе /time/.

Далайц гэдэг нь дууны чанга байгаа хэмжээ буюу чичиргээний хэмжээ юм.

Давтамж гэдэг нь чичиргээ үүсгэх хурд бөгөөд дууны давтамж хэдий чинээ өндөр байна, тэр хэмжээгээр бидэнд өндөр өнгө /high pitch/ сонсогддог. Эсрэгээрээ дууны давтамж бага байвал нам өнгө /low pitch/ сонсогдоно.

Давтамжийг Герцээр (Гц) /Hertz (Hz)/ хэмждэг ба дууны долгион секундэд хэдэн удаа давтагдахыг илэрхийлдэг. Хүний чих 20 Гц-ээс 20,000 Гц хүртэлх дуу чимээг сонсож чадна.

Fingerprint хэрхэн бий болдог вэ?

Audio fingerprint бүтээхийн тулд аудио файлыг спектрограмм /spectrogram/ болгон хувиргадаг ба Y тэнхлэг нь давтамжийг, X тэнхлэг нь үеийг, сүүдэрлэсэн хэсэг нь далайцыг илэрхийлдэг.

Аудио файл тус бүрийн хувьд хамгийн хүчтэй оргил хэсгүүдийг сонгон авах замаар спектрограмыг цэгэн диаграм болгоно. Ингэснээр далайц бидэнд шаардлагагүй болно.

Ингээд бидэнд харьцуулж буй 2 дууны хэрэгцээт өгөгдлүүд бэлэн болж байгаа бөгөөд fingerprint процесс хийх боломжтой болно. Гэсэн хэдий ч хэрэглэгчийн хайж буй дууг өгөгдлийн санд хадгалагдаж байгаа дууны fingerprint-тэй тааруулахын тулд яг ижил секундэд эхлүүлэн таниулах шаардлага үүснэ. Гэхдээ бид дуу таниулахын тул тэгдэггүй шүү дээ. Тийм учраас нэмэлт хэд хэдэн алхмууд хийгддэг.

Тодорхой цаг болон давтамжийн хоорондох диаграм дээрх цэгүүдийг хооронд холбосныг түлхүүр цэгүүд гэх бөгөөд энэ үйл явцыг нийтэд нь хэшийг /шифэрлэж нууцалсан мэдээлэл/ нэтгэх процесс гэж нэрлэнэ.

Холбогдсон түлхүүр цэгийн хослол бүрийг өгөгдлийн сангийн table-д давтамж, цаг, хэш зэрэг мэдээллүүдийн хамт хадгалдаг. Уг мэдээллийг оролтын аудио файлын эхний болон түлхүүр цэг, цагийг агуулсан table тэй линк хийнэ. Өгөгдлийн сан дахь файлууд нь ахин давтагдахгүй ID тай бөгөөд файлын талаарх илүү мэдээлэл (дууны нэр, дуучны нэр г.м) олж авахад ашиглагддаг.

Тааруулалтыг /match/ хэрхэн хийдэг вэ?

Одоо бид хоёр аудио файлын fingerprint-ийг үүсгэсэн тул Shazam хэрэглэгчийн аудио дахь холбогдсон түлхүүр цэг бүрийг мэдээллийн сан руу илгээж, холбогдсон түлхүүр цэгүүдийг /anchor-point pairs/ хайх болно. Энэхүү хайлтаар хэш таарсан /hash match/ бүх дууны аудио fingerprint-үүдийг хайж олох болно.

Хэш таарсан эдгээр fingerprint-үүдээс хэрэглэгчийн аудионы fingerprint-н сонсгож эхэлсэн хугацааны зөрүүг олох болно. Энэхүү зөрүүг Shazam-ын мэдээллийн баазаас аудио файлд таарах хэш үүссэн цагаас Shazam хэрэглэгчийн аудио дахь холбогдсон түлхүүр цэгүүд үүссэн цагийг хасаж тооцно. Хэрэв тохирох хэшүүдийн нэлээд хэсэг нь ижил хугацааны зөрүүтэй байвал тэр дууг мөн байна гэж үзнэ.

Ү тэнхлэгт Shazam хэрэглэгчийн бичлэгт хэш үүсэх үеийг, x тэнхлэг нь Shazam-ын мэдээллийн баазаас аудио файлд хэш үүсэх үеийг илэрхийлдэг цэгэн график байгуулаад өгөгдлийг буулгавал хэш таарсан хэсгүүд нь диагональ шугам үүсгэж харагдана.

Бэлтгэсэн: Ай Си Ти групп, Дэмжлэгийн газар, Ахлах систем админ Б.Болор
Систем администратор Б.Алтангэрэл

Эх сурвалж: https://medium.com/