Proyek Talking Head, atau sejarah pengembangan perangkat lunak untuk robot telepresence

Pekerjaan saya di T-Systems dimulai dengan proyek yang agak tidak biasa. Sebenarnya, sebagian besar karena proyek ini, saya datang ke perusahaan. Selama percakapan telepon pertama kami, tugas itu dijelaskan kepada saya sebagai berikut: perlu mengembangkan sistem terjemahan ucapan untuk robot telepresence. Saya mendengar tentang robot telepresence untuk pertama kalinya, tetapi apa yang bisa lebih menarik daripada mengembangkan untuk robot? Karena itu, saya langsung setuju.



Panggilan pertama saya ke pelanggan. Tugas yang diajukan kira-kira seperti ini - kami ingin sistem terjemahan ucapan bekerja selama percakapan melalui robot telepresence ini, yaitu, orang tersebut berbicara dalam bahasa Rusia, dan di ujung lain dari "kawat" robot mereproduksi pidatonya dalam bahasa Jerman dan sebaliknya. Segera setelah pernyataan masalah seperti itu diikuti oleh pertanyaan tentang berapa banyak orang dan waktu yang dibutuhkan untuk mengembangkan ini, dan berapa biayanya. Kami sepakat bahwa saya akan melihat dokumentasi pada robot (robot itu sendiri tidak ada di kantor kami), saya akan mempelajari sistem terjemahan dan memberikan perkiraan kasar dalam sebulan, tetapi untuk sekarang kami akan menelepon beberapa kali seminggu untuk mengklarifikasi detailnya.

Dokumentasi untuk robot itu agak langka, untuk sedikitnya. Tidak mungkin menemukan apa pun selain materi pemasaran, jadi saya menulis kepada pengembang. Sistem yang ada memungkinkan untuk membuat panggilan video ke robot telepresence dari browser web dan mengendalikan gerakannya di lokasi yang jauh, dan gagasan yang jelas saya miliki adalah: apakah mungkin untuk mengintegrasikan sistem terjemahan ucapan ke dalam sistem saat ini?

Secara paralel, perlu dipahami bagaimana sistem terjemahan dapat dibuat, dan yang paling penting, apa kualitas terjemahan ini, akankah itu dapat diterima oleh pelanggan? Oleh karena itu, bersamaan dengan korespondensi dengan pengembang robot, saya memutuskan untuk melakukan panggilan dengan pelanggan dan berkomunikasi dengannya melalui Translator. Penerjemah adalah aplikasi seluler dari Microsoft yang dapat menerjemahkan dan menyuarakan terjemahan dalam berbagai bahasa. Aplikasi ini gratis, diinstal di Android atau iOS dan menggunakan layanan yang sesuai dari Microsoft. Selama panggilan, kami harus mencari tahu apakah mungkin untuk melakukan percakapan dengan cara ini. Demi kemurnian percobaan, saya berbicara dalam bahasa Rusia, dan pelanggan dalam bahasa Jerman, yang keduanya sama sekali tidak tahu bahasa kedua, dipanggil melalui panggilan konferensi dan pertama-tama berbicara dalam bahasa asli mereka di Translator,dan kemudian membawa ponsel ke handset konferensi. 

Secara umum, ini terlihat tidak nyaman, tetapi gagasan umum tentang kualitas terjemahan memberi (pembaca yang ingin tahu akan mengatakan bahwa lebih mudah untuk menelepon melalui Skype dengan terjemahan dihidupkan, tetapi untuk beberapa alasan itu tidak terpikirkan oleh kami saat itu). Setelah percakapan, kami memutuskan bahwa proyek harus dan kualitas untuk pelanggan dapat diterima.

Jadi, menurut hasil bulan pertama bekerja di proyek, berikut ini terungkap. Sistem yang ada untuk robot telepresence tidak dapat dimodifikasi, karena pengembang robot tidak menyediakan API untuk ini. Namun, ternyata robot itu semacam segway yang dihubungkan iPad, dan ada iOS SDK yang dengannya Anda dapat mengontrol segway. Artinya, Anda harus menulis sistem Anda sendiri sepenuhnya, tidak mengandalkan integrasi dengan yang sudah ada. Representasi skematis pertama dari produk masa depan telah muncul.

 

Setelah berdiskusi dengan pelanggan, diputuskan bahwa 3 orang akan mengerjakan proyek - pengembang iOS, pengembang backend & frontend. Kami akan membagi proyek itu sendiri menjadi tahap selama 2-3 bulan dan akan menetapkan tujuan untuk setiap tahap dengan kesimpulan dari kontrak terpisah. Pada akhir tahap - demonstrasi hasil kepada pelanggan dan investor proyek. Penting bagi pelanggan bahwa pada tahun baru sudah ada POC yang berfungsi. Sejak saya bergabung dengan perusahaan pada bulan Juli, tenggat waktu cukup ketat.

Sasaran untuk tahap 2 bulan pertama ditetapkan untuk menemukan dua pengembang lagi, memilih layanan untuk panggilan video dan terjemahan. Pada akhir tahap, perlu untuk menunjukkan aplikasi web sederhana yang memungkinkan Anda membuat panggilan video dengan layanan terjemahan terintegrasi.

WebRTC sekarang banyak digunakan untuk membuat panggilan video, yang saat ini didukung oleh sebagian besar browser web. Namun, mengingat sumber daya yang terbatas, kami tidak berani menulis di WebRTC yang kosong dan memilih penyedia yang menyediakan layanan di atas WebRTC. Kami mempertimbangkan dua layanan - TokBox dan Voxeet. Akibatnya, mereka memilih TokBox. Penting untuk mempertimbangkan bahwa layanan ini dibayar, oleh karena itu, bersama dengan deskripsi arsitektur aplikasi, kami melakukan perhitungan biaya selama satu menit panggilan video dengan terjemahan.



Kami juga mempertimbangkan beberapa layanan terjemahan: TranslateYourWorld.com (menyediakan API tunggal yang menyatukan beberapa penyedia terjemahan sekaligus, termasuk Google dan Microsoft, tetapi perusahaan ini sangat kecil dan tidak dapat diandalkan, situs mereka tidak terbuka pada saat penulisan ini), terjemahan Google Cloud, Microsoft Speech. Akibatnya, kami berhenti di layanan MS Speech, karena memiliki API yang lebih nyaman, kami dapat mengalirkan streaming audio ke layanan melalui websocket dan segera menerima rekaman audio dengan terjemahan, ditambah kualitas terjemahan yang baik. Selain itu, Microsoft adalah mitra perusahaan kami, yang memfasilitasi kerja sama dengan mereka.

Pengembang tumpukan penuh yang berpengalaman, berbakat (Misha, halo!) Bergabung dengan saya, dan pada awal Oktober, tim kecil kami berhasil menutup tahap berikutnya dan menunjukkan aplikasi web sederhana yang, menggunakan layanan TokBox dan MS Speech, memungkinkan untuk mengatur panggilan video dengan terjemahan ke dalam beberapa bahasa. termasuk Rusia dan Jerman.

Tahap selanjutnya dirancang selama 3 bulan dan tujuannya adalah MVP dengan robot. Pada tahap ini, pengembang ketiga dan terakhir bergabung dengan kami. Tumpukan teknologi berikut dipilih untuk proyek: backend - NodeJS + MongoDB, frontend web di ReactJS dan Swift untuk aplikasi iOS yang berinteraksi dengan robot. Sebuah kisah layak mendapat cerita terpisah tentang bagaimana saya mengendarai robot dari Jerman ke St. Petersburg dan pertama kali menjelaskan kepada Jerman, kemudian kepada petugas bea cukai kami, perangkat apa yang ada di dalam kotak ini.





Pada tahap pertama, sementara kami tidak memiliki robot, aplikasi iOS hanya memungkinkan kami melakukan panggilan video dengan terjemahan. Ketika robot itu bersama kami, pada awal Desember, kami dengan cepat menambahkan pengiriman sinyal kontrol ke robot melalui koneksi panggilan yang sudah di-debug, dan menjadi mungkin untuk mengendalikan robot dengan menekan panah pada keyboard. Jadi, pada bulan Januari kami menutup tahap ketiga dan menunjukkan hasilnya kepada pelanggan.

Hasil tahap kedua dari belakang adalah sistem debug dengan koreksi semua bug kritis. Saat memanggil robot, operator dapat melihat ruangan melalui kamera utama dan lantai melalui kamera sekunder (untuk membuatnya lebih mudah untuk melewati rintangan). Wajah operator ditampilkan di layar robot. Dalam hal ini, percakapan dapat dilakukan dengan terjemahan ke dalam salah satu dari 7 bahasa yang didukung, termasuk Rusia, Jerman dan beberapa bahasa lainnya. Selama terjemahan, dua baris teks dijalankan: yang pertama adalah ucapan yang dikenali dan terjemahan yang kedua ke bahasa lain dengan pencahayaan karaoke, sehingga jelas bagian kalimat mana yang sedang diputar di ujung koneksi yang lain.



Dan akhirnya, pada tahap terakhir, kami menambahkan sistem manajemen pengguna, grup pengguna, statistik, dan laporan tentang jumlah dan durasi panggilan. Maka, setahun kemudian, kami berhasil menyelesaikan proyek dan mentransfernya ke pelanggan. 

Dalam proses pengerjaan proyek, ide-ide baru dan menarik muncul. Misalnya, kenakan kacamata realitas virtual pada operator sehingga ia memiliki efek perendaman penuh dan kemampuan untuk mengendalikan robot dengan memutar kepalanya. 

Kami juga melakukan penelitian tentang masalah membuat robot yang bisa mengemudi sendiri menggunakan kerangka kerja ROS untuk "mengajar" untuk menghindari rintangan sendiri dan mendapatkan dari titik A ke titik B atau bertemu tamu di pintu masuk kantor. Secara umum, proyek ini ternyata sangat menarik, dan siapa yang tahu fitur menarik apa yang akan kita tambahkan ke sistem di masa depan.


All Articles