Chatbot Mendapat Pendengaran, atau Penderitaan Amatir



Belum lama ini, saya mempresentasikan bot obrolan sintaksis bernama Vanya Razumny ( "Membuat AI menggunakan metode glock cuzdra. Intelligent Odyssey" ). Tahap berikutnya yang jelas, yang, seperti pencipta kecerdasan buatan lainnya, ingin saya lewati - untuk memberikan gagasan kepada suara. Akan terlihat lebih mudah?

Namun, saya harus menderita. Itu tidak mungkin untuk menyelesaikan beberapa masalah, tentu karena amatirisme. Namun, saya ragu bahwa para profesional tertarik untuk menyelesaikan masalah terkait. Ini tidak menarik bagi siapa pun, jadi saya tidak mau. Saya berharap untuk mempercepat suara dan beralih ke ide-ide selanjutnya ...

Tetapi hal pertama yang pertama.

(Saya menulis dengan harapan bahwa penderitaan saya di bidang akting suara akan membantu seseorang dari kekasih saya. Posting ini tidak berguna untuk bison terbaik).

Jelas bahwa tugas penilaian dibagi menjadi dua bagian yang tidak terkait:

  1. Sintesis teks
  2. Pengenalan Bicara.

Saya mengambil poin pertama, sebagai yang termudah. Segera saya menemukan kode untuk pemula, hanya beberapa baris.

Sintesis Suara Preset
using System.Speech.Synthesis; public static void getSpeech(string text) { SpeechSynthesizer speaker = new SpeechSynthesizer(); speaker.SetOutputToDefaultAudioDevice(); string selectedVoice = Properties.Settings.Default.Voice; speaker.SelectVoice("Microsoft Irina Desktop"); speaker.Rate = 1; speaker.Volume = 100; speaker.Speak(text); speaker.Dispose(); } 


Saya memasukkannya ke dalam sumber, dan bayangkan, kata mobil itu! Saya sedikit kewalahan dengan sukacita. Sangat mudah? !!!

Tetap omong kosong: melampirkan suara pria. Sayangnya, satu suara Rusia sudah diinstal di Windows - wanita: "Microsoft Irina Desktop". Dan saya punya obrolan laki-laki, bukan perempuan, saya tidak berencana melakukan operasi untuk mengubah jenis kelaminnya.

Google lagi, setelah beberapa saat saya yakin bahwa ada beberapa suara Rusia pria. Ini merujuk pada suara bebas, karena layanan berbayar bukan untuk romansa keuangan menyanyi saya. Tetapi ada, ada juga suara laki-laki gratis, misalnya, suara "Alexander" dari perpustakaan domestik RHVoice. Yah, biarlah itu Alexander.

Sayangnya, instalasi (bagi saya) entah bagaimana rumit. Tetapi ada majelis siap pakai. Saya mengunduh salah satu majelis, menginstalnya, naik ke pengaturan Windows (Ucapan Pengakuan / Teks ke Ucapan) dan - lihatlah! - Saya menemukan suara "Aleksandr" di sebelah "Microsoft Irina Desktop". Dengan nafas tertahan saya meluncurkan ...

Semuanya berfungsi di Windows!

Saya akan mengganti Microsoft Irina Desktop dengan Aleksandr di sumbernya dan ... Tidak apa-apa sudah berfungsi! Sedih tapi tidak mematikan. Kami akan memperbaikinya sekarang.

Saya sedang mempelajari proyek RHVoice, khususnya deskripsi file konfigurasi, bereksperimen dengan cara ini dan itu ... Hasilnya sama: alih-alih suara, Alexander membuat geraman yang tidak dapat dimengerti atau tidak sama sekali, meskipun fakta bahwa Microsoft Irina membacakan seperti penyiar di televisi.

Beberapa hari saya masih berharap untuk sesuatu dan mengacau, tapi kemudian saya menyerah. Ya, tangan saya bengkok. Ya, saya tidak tahu mengapa Aleksandr menolak untuk berbicara, saya tidak tahu, dan saya tidak menemukan jawaban di forum.

Oke, saya sedang mempelajari suara gratis lainnya, manfaatnya tidak lebih dari selusin.

Kemudian saya sadar bahwa jika saya ingin pengguna Vanya Reasonable untuk mendengar suara yang sama dengan yang saya dengar, maka penginstal suara harus diinstal dalam paket. Ini di luar kekuatan saya, dan saya enggan untuk terlibat di dalamnya, jadi paragraf satu, "Sintesis teks menjadi ucapan," berakhir dengan penyerahan memalukan.

Saya membuat keputusan pada prinsipnya:

  1. Mari kita pergi ke neraka dengan seekor anjing! Biarkan pengguna chatbot sendiri menginstal suara yang mereka inginkan dan pilih dari daftar. Untuk melampirkan daftar suara yang telah ditentukan adalah tugas yang layak.
  2. Saya menyuarakan Vanya Wajar dengan suara perempuan, karena Vanya masih muda dan suaranya belum pecah. "Dan itu sama sekali bukan karena tanganku tumbuh keluar dari pantatku," aku membujuk diriku melalui psikoterapi.

Dengan hati yang murni, saya beralih ke poin 2: Pengenalan ucapan.

Poin kedua adalah menentukan. Siapa yang butuh bot obrolan yang dapat mereproduksi frasa sendiri dalam suara, tetapi tidak mengerti suara lawan bicaranya ?! Dalam hal kegagalan, usaha sulih suara runtuh.

Googling lagi, kali ini panik, dalam napas terakhir.

Apa yang diungkapkan? Sebagian besar opsi dibayar: ada yang gratis, tetapi hanya ada beberapa untuk bahasa Rusia.

Yandex SpeechKit muncul sebagai yang paling sederhana di jaringan, tapi saya akan menyimpannya nanti jika opsi yang lebih kompleks tidak berfungsi. Saya lebih suka mendapat pengakuan offline.

Berikut ini adalah solusi gratis dari CMUSphinx. Saya sedang mempelajari ulasan:

  • pertama, tidak ada seruan keterlaluan: saudara, semuanya bekerja!
  • kedua, deskripsi instalasi benar-benar muskil bagi saya. Tampaknya setelah instalasi perpustakaan juga perlu dilatih!

Jatuh.

Selanjutnya Platform Pidato Microsoft, gratis.

Saya mencari di Google dan menemukan tautan dengan deskripsi yang dapat diakses ditambah kode sumber sebagai contoh. Unduh sumbernya, kompilasi. Saya mengatakan "Satu, Dua," dan program memberikan teks yang dikenal. Budak-o-otayet! ..

Agak membingungkan adalah kenyataan bahwa teks tidak dikenali dengan sendirinya, tetapi harus terlebih dahulu ditambahkan ke kamus. Tapi itu tidak menakutkan: alih-alih "satu, dua" Saya akan melampirkan file yang banyak dengan ejaan.

Saya mentransfer kode dari kode sumber contoh ke sumber saya, saya mencoba untuk mencapai efek yang sama ... Itu tidak mengkompilasi, itu jatuh dalam pemulihan.

Kemudian saya membaca komentar dengan mata kiri saya dan menemukan bahwa solusinya cocok untuk mengenali perintah, tetapi tidak memungkinkan bekerja dengan teks kontinu. Saya memeriksa sesuai dengan contoh aslinya. Ya, "satu, dua" mengakui, dan "satu, dua, tiga" tidak sepenuhnya: ia tidak mendengar ketiganya. Dalam komentar saya menemukan sesuatu dengan mata kanan saya seperti: "Teks berkelanjutan dikenali dengan bayaran" - dan Microsoft Speech Platform tidak ada lagi untuk saya.

Saya mendengar bahwa Google menyediakan pengenalnya secara gratis selama setahun, saya harus memeriksanya.

Saya periksa. Tidak lagi, sejauh yang saya bisa menilai.



Saya tidak mengesampingkan bahwa saya melakukan kesalahan pencarian di Google, tetapi jangan salahkan saya: Saya berbagi pengalaman pribadi yang baru saya dapatkan dengan pemula.

Aku akan menyerah pada Yandex. Ini adalah seruan, "Saudaraku, semuanya bekerja!" cukup, dan individu pribadi, atas permintaan individu, bisa mendapatkan layanan gratis, saya melihat iklan dengan mata kepala sendiri. Saya dapat terhubung ke SpeechKit oleh API, instruksi tersedia.

Saya datang untuk menyerah dan apa yang saya lihat? Perusahaan baru saja menghadirkan Yandex.Cloud, di mana ia memindahkan layanan teknologi bicara. Saya tidak bangga, saya akan mendaftar di Cloud: mungkin semuanya sama di sana seperti sebelumnya ...

Dan di sini gelandangan mengerikan menunggu saya:

  1. Pertama, Anda tidak dapat mendengar tentang penggunaan pengenal secara gratis. Benar, mereka memberikan hibah yang dengannya Anda dapat membayar layanan untuk sementara waktu. Oke, saya terus mendaftar ...
  2. Dan bisnis apa ini ?! Untuk bekerja dengan layanan ini, mereka meminta saya untuk menunjukkan rincian kartu bank. Kutipan dari surat yang dikirimkan kepada saya sebagai pencipta profil di Cloud:



Di suatu tempat saya melihat ini: menurut pendapat saya, di Google. Karena itu, Yandex mengambil contoh dari seorang teman senior.

Saya terkejut dengan tidak adanya posting marah pada Habré. Yah, mereka tidak hanya membutuhkan uang untuk layanan, tetapi meminta kunci ke apartemen di mana uang itu berada! Lagipula itu membuatku jengkel, bahwa untuk beberapa waktu sekarang bank mungkin tidak memberikan uang saya sendiri sesuai dengan keputusan manajer bank, dan di sini paman kedua pada dasarnya menuntut hak yang sama. Apalagi sebelum saya sepakat untuk beralih ke versi berbayar. Saya belum membuat perjanjian dengan paman ini, dan sudah memberi saya kunci ke apartemen, untuk berjaga-jaga. Ah, sungguh baik dan bijaksana!

Anda tahu, paman Yandex, saya tidak menentang Anda, dan saya menggunakan layanan Anda dengan senang hati, tetapi, maaf, sampai saya memiliki kesempatan untuk memilih, Anda tidak akan menerima kata sandi dari kartu bank saya. Dan khusus bagi Anda untuk membuat kartu dengan dua rubel saya tidak punya waktu, dan itu tidak menguntungkan.

Di sini sebuah catatan menarik perhatian tentang ketidaksempurnaan teknologi pengenalan suara. Intinya adalah bahwa saat ini tidak ada yang baik telah dilakukan di bidang pengenalan ucapan, dan tidak layak menggunakan sistem pengakuan. Aku bersumpah dan pasrah pada pemikiran bahwa dalam waktu dekat Vanya yang Cerdas tidak akan berbicara.

Paragraf di bawah ini adalah artikel selanjutnya tentang layanan pengenalan ucapan online. Layanan online tentu saja tidak cocok. Yah saya mengenali suara di winforms, tetapi tidak di situs ... Tanpa harapan sedikit pun, saya klik pada tautan dan ...

Keesokan harinya, bot obrolan mendapatkan suara.

Memperkenalkan tongkat ajaib: speechpad.ru . Saya memperingatkan Anda bahwa layanan ini hanya berfungsi di Chrome. Ini tidak menghentikan saya: Saya menggunakan Chrome apa pun. Dan dia memiliki mesin dari Google: tampaknya, beberapa peluang yang tidak saya ketahui untuk menggunakan layanan tetap gratis.

Speechpad memiliki antarmuka yang sederhana, tetapi cukup fungsional:



Menghubungkan pengenal membutuhkan waktu minimum.

Setelah membaca instruksi, hal pertama yang saya lakukan adalah mengintegrasikan layanan dengan OS. Benar, integrasi dibayar, tetapi 100 rubel sebulan, terlepas dari volume pengakuannya, adalah masalah lain! Ini bukan tarif kejam untuk setiap bagian yang dikenal. Selain itu, masa percobaan dua hari diberikan untuk sosialisasi.

Saya mendaftar di situs, saya menekan tombol power-on dari periode pengujian, dalam satu menit saya menginstal beberapa Pribluda yang ditentukan dalam instruksi, dan semuanya berfungsi. Prinsip tindakan - teks yang dikenali ditambahkan di lokasi kursor. Benar-benar dikenal dan benar-benar ditambahkan. Itu diakui bukan tanpa kesalahan, tetapi, dari sudut pandang saya, memuaskan.

Setelah beberapa jam pengujian, saya sampai pada kesimpulan bahwa lebih rasional menggunakan clipboard, dan fitur ini gratis. Di sini, tentu saja, tidak untuk semua orang:

  • saat berintegrasi dengan OS, kursor harus berada pada bidang chatbot tertentu. Selama pengujian, saya lupa beberapa kali dan beralih dari bot obrolan ke VS, akibatnya teks yang dikenali didorong ke sumber;
  • saat menggunakan clipboard, maka dilarang menggunakan clipboard, jika tidak, teks yang disalin ke clipboard dari program pihak ketiga akan langsung muncul di chatbot. Beberapa kali saya juga menemukan ini, tetapi segera saya terbiasa.

Pada akhirnya saya berhenti di clipboard.

Semuanya, masalah terpecahkan.

Lebih banyak waktu daripada menghubungkan pengenalan dari papan bicara, diperlukan untuk tidak mengenali frasa yang diucapkan oleh bot obrolan. Saya banyak berkeringat hingga mencapai saya bahwa paling mudah untuk mematikan mikrofon. Googling kode bisu mikrofon.

Kode Nyala / Mati Mikrofon
 using NAudio.CoreAudioApi; //-  public static void Mute(bool start) { CoreAudioMicMute CAMM = new CoreAudioMicMute(); CAMM.SetMute(start); } internal class CoreAudioMicMute { private MMDevice[] rgMicDevice; //      int MaxMicro = 0; public CoreAudioMicMute() { try { MMDeviceEnumerator DevEnum = new MMDeviceEnumerator(); MMDeviceCollection devices = DevEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active); // DataFlow.Capture - (     ), //DeviceState.Active -   //   (  ) MaxMicro = 0; for (int i = 0; i < devices.Count; i++) // devices.Count -  ( ) { MMDevice deviceAt = devices[i]; if (deviceAt.DataFlow == DataFlow.Capture && deviceAt.State == DeviceState.Active) // - (     ,   //"if(...",      deviceAt,   - DeviceFriendlyName //  FriendlyName,       ( //   .) { ++MaxMicro; } } //    () () ()   (,   ) rgMicDevice = new MMDevice[MaxMicro]; MaxMicro = 0; for (int i = 0; i < devices.Count; i++) { MMDevice deviceAt = devices[i]; if (deviceAt.DataFlow == DataFlow.Capture && deviceAt.State == DeviceState.Active) //   () { MaxMicro++; rgMicDevice[MaxMicro - 1] = deviceAt; } } } catch (Exception) { } } public void SetMute(bool mute) //,       private MMDevice[] rgMicDevice { try { for (int i = 0; i < MaxMicro; i++) { rgMicDevice[i].AudioEndpointVolume.Mute = mute; //= true -   (  ) } } catch (Exception) { } } } 


* - komentar bukan milik saya, tetapi disalin. Saya tidak memberikan tautannya, karena pemiliknya mengakui bahwa ia sendiri memiliki kode google di perut Internet berbahasa Inggris.
** - Saya membuat sedikit perubahan pada kode.

Sebelum frasa bot obrolan, saya mematikan mikrofon, setelah frasa saya nyalakan, akibatnya, layanan hanya mendengar frasa saya, tetapi tidak mendengar bot obrolan.

Inilah hasil akhirnya:

Untuk kelengkapan tayangan saya, saya menjelajahi selusin situs dengan pengenalan ucapan. Pada prinsipnya, semua orang sama, dan sebagian besar mesin berasal dari Google, tetapi kemampuan untuk secara eksplisit menerima teks ke clipboard tidak ditemukan. Dilihat oleh komentar, di beberapa tempat ada kemungkinan menyuarakan situs, tapi saya tidak mempelajari topik ini. Seperti yang mereka katakan, mereka tidak mencari yang baik dari yang baik.

Sekarang masalah lain: Saya pikir akan lebih baik untuk memperketat animasi yang mengucapkan pidato yang disampaikan. Saya ingin sesuatu yang lebih sederhana: perpustakaan untuk C # dengan pilihan karakter. Tapi saya diberitahu tidak ada di .NET ...

Sebenarnya itu saja. Pria muda itu memiliki suara wanita, tetapi secara umum, mode suara berfungsi.

Saya berharap untuk segera memperkenalkan Vanya yang Wajar dalam bentuk yang lebih rapi. Selama masa lalu, telah diperbarui secara signifikan dan lebih bijaksana: ia beralih dari Access ke PostgreSQL, algoritma ditingkatkan, dimungkinkan untuk menghubungkan kamus, untuk membangun basis data awal dari jawaban khas - orang lain, singkatnya.

Source: https://habr.com/ru/post/id433974/


All Articles