شعار زيفيرنت

تحليل الصوت - التعرف على الصوت باستخدام SciNet

التاريخ:

تم نشر هذه المقالة كجزء من مدونة علوم البيانات

المُقدّمة

إن حقائق العالم الحديث تجعل المحلل يلجأ بشكل متزايد إلى أحدث خوارزميات التعلم الآلي لتحديد بعض الانحرافات في تشغيل النظام قيد الدراسة. الأكثر طلبًا هي خوارزميات الرؤية الحاسوبية لمعالجة معلومات الصور والفيديو وتقنيات العمل مع اللغات الطبيعية لتحليل النص. ومع ذلك ، لا تنسى مجالًا مهمًا مثل العمل مع الصوت ، والذي سيتم مناقشته في هذه المقالة.

فهم شبكة SciNet

لنأخذ مثالاً على أنه تم تكليفك بتحليل عدد كبير من المكالمات الهاتفية من العملاء لتحديد حقائق إدارة الثقة الزائفة ، أي تلك الحالات التي يمثل فيها نفس الشخص مصالح العديد من العملاء عبر الهاتف. بلغ الحجم الإجمالي لبيانات الصوت أكثر من 500 جيجابايت ، وبلغ إجمالي المدة 445 يومًا (11 ألف ساعة). بطبيعة الحال ، من المستحيل الاستماع إلى جميع التسجيلات من قبل العديد من الأشخاص ، لذلك ، لحل هذه المشكلة ، أستخدم التجميع التلقائي للأصوات المتشابهة مع التحليل اللاحق للمجموعات التي تم الحصول عليها.

تم اختيار نموذج SincNet كنموذج للحصول على متجهات الصوت. ولكن قبل الشروع في وصف الطريقة المطبقة ، دعنا نفكر في طرق استخراج الميزات من الصوت الموجودة ولماذا اخترنا SincNet.

ربما يكون تحليل السعة والوقت هو أبسط نهج لمعالجة الصوت.

الصورة 1 التعرف على الصوت باستخدام SciNetالتين 1

في هذا النهج ، تُعتبر الإشارة الصوتية تمثيلًا أحادي البعد لتذبذبات الموجة الصوتية بتردد معين لأخذ العينات (الشكل 1). تتمثل إحدى المزايا الرئيسية لهذا النهج في الحفاظ على المعلومات الكاملة حول الإشارة ، أي يتم تحليل الإشارة "كما هي" ، دون رفض المعلومات المهمة. لسوء الحظ ، يعد هذا في نفس الوقت عيبًا في النهج - من الصعب فصل الإشارة إلى مفيدة وضوضاء ، كما أن البعد العالي للبيانات يجعل من الصعب معالجتها بسرعة وبجودة عالية. لسوء الحظ ، من الصعب استخراج عدد كبير من الخصائص المفيدة من إشارة باستخدام هذا النهج.

التحليل الطيفي هو نهج بديل. يكمن جوهرها في حقيقة أن الإشارة الأصلية يمكن أن تتحلل إلى مكون بالدقة اللازمة بشكل تعسفي. بمعنى آخر ، يمكن تمثيل أي إشارة معقدة في شكل أشباه الجيوب المكونة لها بترددات واتساعات معينة. وبالتالي ، فإن طيف الإشارة هو بالفعل تمثيل ثنائي الأبعاد للإشارة ، مما يجعل من الممكن الحكم بالضبط على كيفية توزيع طاقة الإشارة على الترددات في الوقت المناسب.

التين 2الصورة 2 التعرف على الصوت باستخدام SciNet

لفهم سبب تقدم تحليل الطيف في معالجة الصوت ، دعونا نتذكر ما هو الصوت وماذا يتكون من استخدام مثال الصوت البشري.

التعرف على الصوت باستخدام SciNet

التين 3

عندما يمر الهواء عبر الحبال الصوتية ، تنشأ اهتزازات تنتشر في الوسط على شكل موجات مرنة. كل صوت (ما لم يكن مصطنعًا) هو مجموعة كاملة من هذه الموجات. من خلال دراسة النغمة الأساسية للصوت ونغماته وصيغه ، يمكن للفرد حل بعض المشكلات المرتبطة بتحليل الصوت بنجاح.

على سبيل المثال ، غالبًا ما يتم استخدام تردد الصوت (أقل تردد في الإشارة) في مهام تحديد الجنس ، نظرًا لأن متوسط ​​قيمة الملعب للرجال والنساء يختلف ، ويبلغ متوسطه 130 هرتز للرجال مقابل 235 هرتز للنساء. غالبًا ما يكون تحليل مجموعة النغمات الصوتية مفيدًا في مشاكل تحديد السماعات لأن هذه المجموعة تعتمد على جهاز الكلام ، وهو فردي لكل منها. وأخيرًا ، يتم استخدام تحليل المعادلات (مناطق تضخيم ترددات معينة) بنشاط في المشكلات المتعلقة بترجمة الكلام إلى نص.

يسمح لك المخطط الطيفي بتحليل جميع المكونات الموصوفة أعلاه بنجاح ، ويرجع ذلك إلى حد كبير إلى أن النماذج التي تم إنشاؤها بناءً على بيانات توزيع الطاقة عبر الترددات في الإشارة تتمتع بدقة جيدة إلى حد ما.

ولكن هناك أيضًا طريقة ثالثة لمعالجة البيانات في إشارة صوتية ، وهذا النهج مرتبط بالمفهوم الشائع الآن - الشبكات العصبية. الفكرة بسيطة - فلنقم بإدخال الصوت إلى مدخلات الشبكة ونتوقع أن تتعلم الشبكة بشكل مستقل تحديد الأنماط في البيانات وحل المهام التي نحتاجها ، سواء كان ذلك استخراج الميزات ، وتحديد المتحدث ، والتعرف على الكلام ، وتحليل العاطفة ، وما إلى ذلك.

الشكل 4التين 4

كهيكل لاستخراج الميزات الأساسية من الإشارة ، غالبًا ما يتم استخدام الشبكات العصبية التلافيفية ، والتي تظهر نتائج جيدة ليس فقط في مهام رؤية الكمبيوتر ولكن أيضًا في مهام سمع الكمبيوتر. أثناء التدريب ، تتعلم CNN الالتفافات التي تعتقد الشبكة أنها مناسبة بشكل أفضل لوصف البيانات. في هذه الحالة ، لا يلزم تقديم البيانات نفسها في شكل الإشارة الأصلية. على سبيل المثال ، يعطي تمثيل إشارة في شكل طيف أو fbank أو mfcc زيادة كبيرة في جودة وسرعة تدريب الشبكة.

تكمن المشكلة في أنه من خلال استبدال الإشارة الأصلية بتمثيلها ، فإننا نبسط مهمة الشبكة من ناحية ، ومن ناحية أخرى ، نحرمها من فرصة العثور على أفضل تمثيل للإشارة نفسها. يتمثل جوهر نهجنا الجديد في تغذية إشارة إلى مدخلات الشبكة في شكلها الأصلي ، ويتم استخدام مرشحات تمرير النطاق كتلافيف ، يتم تحديد معلماتها بواسطة الشبكة في عملية التعلم. لكل مرشح ، يتم تدريب معلمتين فقط - الترددات العلوية والسفلية. وبالتالي ، من ناحية ، نسمح للخوارزمية برؤية البيانات الأولية ، ومن ناحية أخرى ، نعلم الشبكة أن تنظر إلى البيانات في سياق نطاقات تردد معينة فقط.

يمكن تمثيل مرشحات تمرير النطاق نفسها على أنها الفرق بين مرشحين منخفضي التردد (الشكل 5). بالمرور إلى المجال الزمني ، يكون المرشح هو الاختلاف بين وظيفتين من وظائف الخطيئة (ومن هنا جاء اسم الشبكة - SincNet). يعادل ضرب الإشارة الأصلية بالالتفاف الناتج اختيار نطاق تردد معين في الإشارة.

الشكل 5

تؤدي مقارنة التلافيفات التي تعلمتها CNN القياسية مع تلك التي تدرسها SincNet إلى استنتاج مفاده أن كلتا الشبكتين تتعلمان في النهاية نفس الشيء ، أي تخصيص ترددات معينة ذات أهمية في الإشارة ، ومع ذلك ، فإن SincNet لديها بطاقة رابحة معينة - تمت إضافتها إلى معلومات الطبقة الأولى حول شكل المرشح بالضبط ، بينما تضطر شبكة CNN المعتادة إلى تحديد أفضل شكل مرشح من تلقاء نفسها (الشكل 6)

الشكل 6الشكل 6

بسبب هذا النهج ، تتمتع SincNet بالعديد من المزايا مقارنة بالشبكات التلافيفية القياسية ، وهي:

  1. عدد أقل من المعلمات (يعتمد كل التفاف SincNet دائمًا على معلمتين فقط - التردد المنخفض والعالي) ؛

  2. عمليات أقل لحساب المرشح لأن الالتواء يعتمد على التناظر. نحسب النصف الأول ونعكس الثاني ؛

  3. تقارب سريع

  4. قابلية جيدة لتفسير الشبكة - كل التفاف هو مرشح بحدود واضحة. في الوقت نفسه ، يشير مجموع المرشحات الطبيعي إلى تركيز الانتباه على النغمة الرئيسية والصيغ.

يتم دعم كل هذه المزايا من خلال مقارنات بين مقاييس الجودة ، حيث تظهر SincNet نتائج أفضل من الحزم الكلاسيكية DNN-MFCC و CNN-FBANK و CNN-RAW.

تطبيق

استخدمنا ملفات wav بمعدل أخذ عينات يبلغ 16 كيلو هرتز كبيانات إدخال. تم استخدام المعلومات المتعلقة برقم المتصل كترميز ، مما يعني أن نفس الشخص يتصل من نفس الرقم. تشمل المعالجة الأولية الأولية للبيانات ، بالإضافة إلى وضع العلامات ، إزالة فترات التوقف والصمت باستخدام نموذج الكشف عن النشاط الصوتي لجهة خارجية ، بالإضافة إلى تسوية ارتفاع الصوت:

صفر تطبيع الصوت(source_file، norm_file): [signal، fs] = sf.read (source_file) signal = signal.astype (np.float64) إشارة = إشارة / np.max (np.abs (إشارة)) sf.write (ملف معياري ، إشارة ، fs) # تحميل نموذج VAD = torch.jit.load (r'D: caller_cluster sincnet silero-vad files model_mini.jit ') model.eval () blank_file = [] for wav in tqdm (wavs): way = os.path.join ('calls'، wav) wav = read_audio (way) speech_timestamps = get_speech_ts_adaptive (wav، model، step = 500، num_samples_per_window = 4000) إذا كان len (speech_timestamps)> 0: # إزالة التوقفات save_audio (الطريقة ، collect_chunks (speech_timestamps، wav)، 16000) # normalize audio_normalization (way، way) else: # احذف الملف إذا لم يكن هناك كلام فارغ _file.append (طريقة)! rm - r {way}

تم أخذ إعدادات الشبكة بشكل افتراضي ، أثرت التغييرات فقط على المسارات إلى مجموعات بيانات التدريب:

تبدأ من dnn_models استيراد MLP
تبدأ من dnn_models استيراد سينك نت as سي ان ان الخيارات= read_conf ('SincNet_TradeDesk.cfg')

يتكون SincNet في جوهره من 3 نماذج. النموذج الأول هو CNN مع نوى الالتفاف القائمة على الصدق ، والتي تُستخدم لاستخراج الميزات الأساسية. يجمع النموذج الثاني كل الميزات ويحولها إلى متجه ذي بُعد أقل. تتمثل مهمة النموذج الثالث ، استنادًا إلى المتجه ذي الأبعاد 2048 الذي تم الحصول عليه نتيجة عمل النموذجين الأولين ، في التنبؤ بما إذا كان الصوت ينتمي إلى متحدث أو آخر:

# Feature extractor CNN trunk_arch = {'input_dim': wlen، 'fs': fs، 'cnn_N_filt': cnn_N_filt، 'cnn_len_filt': cnn_len_filt، 'cnn_max_pool_len': cnnnorm_max_pool_len cnn_use_laynorm ': cnn_use_laynorm،' cnn_use_batchnorm ': cnn_use_batchnorm،' cnn_act ': cnn_act،' cnn_drop ': cnn_drop} trunk = torch.nn.DataParallel (CNN (trunkder_arch). embedd_arch = {'input_dim': trunk_out_dim، 'fc_lay': fc_lay، 'fc_drop': fc_drop، 'fc_use_batchnorm': fc_use_batchnorm، 'fc_use_laynorm': fc_use_laynorm، 'fc_use_laynorm_inp': } embedder = torch.nn.DataParallel (MLP (embedder_arch) .to (device)) # اضبط المصنف. سيأخذ المصنف الزخارف ويخرج متجهًا للأبعاد. classifier_arch = {'input_dim': fc_lay [-1]، 'fc_lay': class_lay، 'fc_drop': class_drop، 'fc_use_batchnorm': class_use_batchnorm، 'fc_use_laynorm': class_use_laynorm، 'fc_use_laynorm_inpnorm_: class_batch' ' fc_act ': class_act} مصنف = torch.nn.DataParallel (MLP (classifier_arch) .to (device)) OUTPUT = مصنف (embedder (trunk (INPUT)))

نظرًا لأن الهدف النهائي في مهمتنا لم يكن التصنيف ، بل التجميع ، فقد احتجنا إلى تدريب هذه المجموعة بهذه الطريقة بحيث تكون المتجهات من مخرجات النموذج الثاني (في الواقع ، التضمين) قريبة في الفضاء ذي البعد n ، إذا كانوا ينتمون إلى نفس الشخص وبعيدين ، إذا كانوا ينتمون إلى أشخاص مختلفين. لهذا ، تم تعديل عملية التعلم باستخدام تقنية MetricLearning.

نظرًا لأن الأشخاص المختلفين يمكنهم الاتصال من نفس الرقم ويمكن لنفس الشخص الاتصال من أرقام مختلفة ، فقد تقرر في المرحلة الأولى تدريب النموذج مسبقًا على مجموعة بيانات ، والتي كنا متأكدين منها بنسبة 100٪. تم جمع مجموعة البيانات هذه من أصوات الموظفين وتم ترميزها تلقائيًا.

لتقدير القرب من النواقل التي تم الحصول عليها ، تم تطبيق طريقة خفض أبعاد UMAP (الشكل 8). بعد عدة فترات من التدريب ، أصبح من الواضح أن النموذج يعمل بشكل صحيح ويفصل بنجاح صوت شخص عن صوت آخر. بصريًا ، يتجلى ذلك في حقيقة أن النقاط من نفس اللون (نفس الصوت) منظمة في مجموعات منفصلة.

الشكل 8الشكل 8

على الرغم من العمل الجيد لجهاز التوجيه ، كانت دقة المصنف 0.225 فقط (خطأ = شعلة. متوسط ​​(توقع! = تسمية)) ، والذي قد يكون مربكًا في البداية. ومع ذلك ، يجب أن يُفهم أن هذه الدقة يتم أخذها في الاعتبار في سياق الدُفعة ، والأجزاء العشوائية من الصوت ، بما في ذلك تلك التي يستحيل من خلالها الحكم بشكل لا لبس فيه على من ينتمي الصوت (على سبيل المثال ، توقف قصير قبل التالي كلمة أو ضوضاء غريبة) ، تقع في الدفعة. لتقييم جودة النموذج ، يتم استخدام نهج مختلف قليلاً: يتم تقسيم العبارة من المتحدث إلى أقسام قصيرة ، ويتم تصنيف كل قسم ، وبعد ذلك يتم منح التسمية الأكثر توقعًا للمجموعة بأكملها. يوضح هذا النهج لتقييم النموذج أنه اتضح أن نموذجنا يتمتع بدقة عالية إلى حد ما. يوضح الرسم البياني أدناه عملية التعلم.

الخلاصة

كما ترى ، فإن خطأ test_sent_error للنموذج الناتج قد انخفض بالفعل إلى 0.055 فقط بحلول الحقبة الثانية والثلاثين ، والتي يمكن تفسيرها على أنها دقة = 32. هذه نتيجة لائقة. استغرق الأمر حوالي 0.945 دقائق لتدريب حقبة واحدة باستخدام GTX6 واحد وحوالي دقيقتين باستخدام معمل بيانات Tesla V2070. وهكذا ، في أقل من يوم ، تمكنا من الحصول على نموذج بجودة مقبولة لأغراضنا.

نتيجة لذلك ، تمت معالجة عدد لا يمكن تصوره من المحادثات الهاتفية باستخدام النموذج. مكنت المعالجة من تحديد حوالي 55 مجموعة من 2 إلى 5 عملاء ، تم تقديم الطلبات الخاصة بهم بصوت واحد. تم إبلاغ الإدارة بهذه الحقيقة وتم اتخاذ الإجراءات المناسبة.

الوسائط الموضحة في هذه المقالة ليست مملوكة لشركة Analytics Vidhya ويتم استخدامها وفقًا لتقدير المؤلف.

أفلاطون. Web3 مُعاد تصوره. تضخيم ذكاء البيانات.
انقر هنا للوصول.

المصدر: https://www.analyticsvidhya.com/blog/2021/08/audio-analysis-voice-identification-using-scinet/

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة