Penilaian panggilan adalah bagian penting dari kontrol kualitas untuk pusat panggilan. Ini memungkinkan organisasi untuk menyempurnakan alur kerja mereka sehingga operator dapat melakukan pekerjaan lebih cepat dan lebih efisien dan juga menghindari rutinitas yang tidak berarti.
Sadar bahwa pusat panggilan harus efektif, kami berupaya mengotomatisasi skor panggilan. Akibatnya, kami membuat algoritma yang memproses panggilan dan mendistribusikannya ke dalam dua grup: mencurigakan dan netral. Semua panggilan mencurigakan segera dikirim ke tim penilai kualitas.
Bagaimana kami melatih jaringan saraf yang dalam
Untuk sampel kami mengambil 1700 file audio, di mana kami melatih jaringan. Karena neuron awalnya tidak tahu apa yang harus dipertimbangkan mencurigakan dan apa yang netral, kami secara manual menandai semua file yang sesuai.
Dalam sampel netral, operator:
- tidak mengangkat suara mereka;
- Memberikan semua informasi yang diminta kepada pelanggan;
- tidak menanggapi provokasi dari klien.
Dalam pola yang mencurigakan, operator sering melakukan hal berikut:
- menggunakan bahasa cabul;
- angkat suara atau berteriak pada pelanggan;
- pergi ke orang itu;
- menolak untuk memberi nasihat tentang masalah.
Ketika algoritma selesai memproses file, itu menandai 200 file sebagai tidak valid. File-file ini tidak mengandung tanda-tanda yang mencurigakan atau netral. Kami menemukan apa yang ada di 200 file ini:
- klien menutup telepon segera setelah operator menjawabnya;
- klien tidak mengatakan apa pun setelah dijawab;
- ada terlalu banyak suara di sisi klien atau operator.
Ketika kami menghapus file-file ini, kami membagi 1.500 sisanya ke dalam pelatihan dan uji kasus. Di masa depan, kami menggunakan dataset ini untuk melatih dan menguji jaringan saraf yang dalam.
Langkah 1: Ekstrak Fitur
Ekstraksi fitur tingkat tinggi memainkan peran penting dalam pembelajaran mesin secara langsung mempengaruhi efisiensi algoritma. Setelah menganalisis semua sumber yang mungkin, kami memilih gejala berikut:
Statistik waktu
- Zero-crossing rate : Kecepatan perubahan sinyal dari plus ke minus dan sebaliknya.
- Energi bingkai median : Jumlah sinyal yang dikuadratkan dan dinormalisasi dengan panjang bingkai yang sesuai.
- Entropi energi subframe : entropi energi subframe yang dinormalisasi. Ini dapat diartikan sebagai ukuran perubahan drastis.
- Rata-rata / median / standar deviasi frame .
Statistik spektral (dengan interval frekuensi)
- Centroid spektral.
- Distribusi spektral.
- Entropi spektral.
- Radiasi spektral.
- Redaman spektral.
Koefisien cepstral dari frekuensi tonal dan vektor saturasi sensitif terhadap panjang sinyal input. Kita dapat mengekstraknya dari seluruh file sekaligus, namun, dengan melakukan itu, kita akan kehilangan pengembangan sifat pada waktunya. Karena metode ini tidak cocok untuk kami, kami memutuskan untuk membagi sinyal menjadi "windows" (blok waktu).
Untuk meningkatkan kualitas tanda, kami memecah sinyal menjadi potongan-potongan, yang sebagian tumpang tindih satu sama lain. Selanjutnya, kami mengekstrak tag secara berurutan untuk setiap chunk; Oleh karena itu, matriks atribut dihitung untuk setiap file audio.
Ukuran jendela - 0,2 s; langkah jendela - 0,1 s.
Langkah 2: tentukan nada suara dalam frasa terpisah
Pendekatan pertama kami untuk memecahkan masalah adalah mendefinisikan dan memproses setiap frase dalam aliran secara terpisah.
Pertama-tama, kami melakukan
diarisasi dan
mengisolasi semua frasa menggunakan perpustakaan
LIUM . File input berkualitas buruk, jadi pada output kami juga menerapkan perataan dan adaptasi ambang batas untuk setiap file.
Pemrosesan interupsi dan kesunyian yang lama
Ketika kami menentukan batas waktu untuk setiap frasa (baik klien dan operator), kami melapisinya satu sama lain dan mengungkapkan kasus ketika kedua orang berbicara pada saat yang sama, serta kasus ketika keduanya diam. Tinggal menentukan nilai ambangnya saja. Kami sepakat bahwa jika 3 detik atau lebih peserta berbicara pada saat yang sama, maka ini dianggap sebagai gangguan. Untuk keheningan, batas 3 detik ditetapkan dengan tepat.
Intinya adalah bahwa setiap frasa memiliki panjangnya sendiri. Akibatnya, jumlah fitur yang diekstraksi untuk setiap frasa berbeda.
Jaringan saraf
LSTM dapat menangani masalah ini. Jaringan semacam ini tidak hanya dapat memproses urutan panjang yang berbeda, tetapi mereka juga dapat berisi umpan balik, yang memberi Anda kemampuan untuk menyimpan informasi. Fitur-fitur ini sangat penting karena frasa yang diucapkan sebelumnya mengandung informasi yang mempengaruhi frasa yang diucapkan sesudahnya.
Kemudian kami melatih jaringan LSTM kami untuk menentukan intonasi dari setiap frase.
Sebagai set pelatihan, kami mengambil 70 file dengan rata-rata 30 frasa (15 frasa untuk setiap sisi).
Tujuan utamanya adalah untuk mengevaluasi frasa operator pusat panggilan, jadi kami tidak menggunakan pidato klien untuk pelatihan. Kami menggunakan 750 frase digunakan sebagai dataset pelatihan, dan 250 frase sebagai tes. Akibatnya, neuron belajar mengklasifikasikan bicara dengan akurasi 72%.
Tetapi, pada akhirnya, kami tidak puas dengan kinerja jaringan LSTM: bekerja dengan itu membutuhkan waktu terlalu lama, sementara hasilnya jauh dari sempurna. Oleh karena itu, diputuskan untuk menggunakan pendekatan yang berbeda.
Saatnya untuk memberi tahu bagaimana kami menentukan nada suara menggunakan
XGBoost plus kombinasi LSTM dan XGB.
Tentukan nada suara untuk seluruh file
Kami menandai file sebagai mencurigakan jika mengandung setidaknya satu frasa yang melanggar aturan. Jadi kami menandai 2500 file.
Untuk mengekstraksi atribut, kami menggunakan metode yang sama dan arsitektur
JST yang sama, tetapi dengan satu perbedaan: kami menskalakan arsitektur agar sesuai dengan dimensi atribut baru.
Dengan parameter optimal, jaringan saraf menghasilkan akurasi 85%.
XGBoost
Model XGBoost memerlukan sejumlah atribut tetap untuk setiap file. Untuk memenuhi persyaratan ini, kami telah membuat beberapa sinyal dan parameter.
Statistik berikut digunakan:
- Nilai rata-rata sinyal.
- Nilai rata-rata 10 detik pertama dari sinyal.
- Nilai rata-rata 3 detik terakhir dari sinyal.
- Nilai rata-rata maksimum lokal dalam sinyal.
- Nilai rata-rata maksimum lokal dalam 10 detik pertama sinyal.
- Nilai rata-rata maksimum lokal dalam 3 detik terakhir dari sinyal.
Semua indikator dihitung secara terpisah untuk setiap sinyal. Jumlah total atribut adalah 36, kecuali untuk panjang catatan. Hasilnya, kami memiliki 37 tanda numerik untuk setiap catatan.
Keakuratan prediksi algoritma ini adalah 0.869.
Kombinasi LSTM dan XGB
Untuk menggabungkan pengklasifikasi, kami melewati dua model ini. Pada output, akurasi ini meningkat 2%.
Artinya, kami dapat meningkatkan akurasi prediksi menjadi 0,9
ROC -
AUC (Area Under Curve).
Hasil
Kami menguji jaringan saraf kami yang dalam pada 205 file (177 netral, 28 mencurigakan). Jaringan harus memproses setiap file dan memutuskan grup mana yang dimilikinya. Berikut ini adalah hasilnya:
- 170 file netral diidentifikasi dengan benar;
- 7 file netral diidentifikasi mencurigakan;
- 13 file yang mencurigakan diidentifikasi dengan benar;
- 15 file mencurigakan diidentifikasi sebagai netral.
Untuk memperkirakan persentase hasil yang benar / salah, kami menggunakan
Matriks Kesalahan dalam bentuk tabel 2x2.
Temukan frasa tertentu dalam percakapan
Kami ingin mencoba pendekatan ini untuk mengenali kata dan frasa dalam file audio. Tujuannya adalah untuk menemukan file di mana operator pusat panggilan tidak disajikan kepada pelanggan dalam 10 detik pertama percakapan.
Kami mengambil 200 frasa dengan panjang rata-rata 1,5 detik, di mana operator memanggil nama dan nama perusahaan mereka.
Mencari file seperti itu secara manual membutuhkan waktu lama, karena Saya harus mendengarkan setiap file untuk memeriksa apakah ada frasa yang diperlukan. Untuk mempercepat pelatihan lebih lanjut, kami “secara artifisial” meningkatkan dataset: kami mengubah setiap file 6 kali secara acak - menambahkan noise, mengubah frekuensi dan / atau volume. Jadi kami mendapat dataset 1.500 file.
Ringkasan
Kami menggunakan 10 detik pertama dari respons operator untuk melatih classifier, karena pada interval inilah frasa yang diinginkan diucapkan. Setiap bagian seperti itu dibagi menjadi windows (panjang jendela 1,5 detik, langkah jendela 1 detik) dan diproses oleh jaringan saraf sebagai file input. Sebagai file output, kami menerima probabilitas mengucapkan setiap frasa di jendela yang dipilih.
Kami menjalankan 300 file lainnya melalui jaringan untuk mengetahui apakah frasa yang diinginkan diucapkan dalam 10 detik pertama. Untuk file-file ini, akurasinya adalah 87%.
Sebenarnya, untuk apa semua ini?
Penilaian panggilan otomatis membantu menentukan KPI yang jelas untuk operator pusat panggilan, menyoroti dan mengikuti praktik terbaik, dan meningkatkan kinerja pusat panggilan. Tetapi perlu dicatat bahwa perangkat lunak pengenalan suara dapat digunakan untuk berbagai tugas yang lebih luas.
Berikut adalah beberapa contoh bagaimana pengenalan ucapan dapat membantu organisasi:
- mengumpulkan dan menganalisis data untuk meningkatkan UX suara;
- menganalisis catatan panggilan untuk mengidentifikasi hubungan dan tren;
- kenali orang dengan suara;
- Temukan dan kenali emosi pelanggan untuk meningkatkan kepuasan pengguna
- tingkatkan pendapatan rata-rata per panggilan;
- mengurangi arus keluar;
- dan masih banyak lagi!