Обычно ViewModel используют для хранения какого-то общего состояния, данных в Flow/LiveData и подобного. Разве в вашем случае, если сделать разные ViewModel, то поведение будет иное? И, как написали выше, работу с микрофоном, аудио и т.д. лучше в сервис вытащить.