Я делал через
Яндекс SpeechKit, просто «для попробовать». Для боевого использования он дорогой становится через месяц.
Принцип такой. Ловите сообщения пользователей через
callback api, настроив его для вашего сообщества. Cтавите входящему сообщению метку, что оно прочитано и запускаете в очередь задание – объект, содержащий текст и id юзера.
«Рабочий» процесс отправляет запрос Яндексу перевести текст в звуковой файл. Получив файл, загружает его в ВК через
docs.getWallUploadServer(), указав помимо параметра group_id ещё и (недокументированный) параметр
'type' => 'audio_message'
и названием
'title' => 'audio_message.mp3'
. Сохраняет загурженный файл
docs.save() и прикладывает его к сообщению пользователю в
messages.send() в поле attachment.
Очередь задач желательна, чтобы не возникло ситуаций, когда сервер задыхается при одновременном визите 100 школьников отправляющих короткие реплики. Я всё это реализовывал на Laravel 5.4 – удобно.