How can I get the query result at once when I use Room?

Question: at once meaning synchronous or what ? if yes, what happens if the function to get the result has to take a longer time? like network call? well you can decide to do that on another thread.

What I think is for you to use a mutable Object and use the postValue function to dispatch the result to the observers. It should look something like below:

class HomeViewModel(val mApplication: Application, private val mDBVoiceRepository: DBVoiceRepository) : AndroidViewModel(mApplication) {
    private val voices = MutableLiveData<Long>()

    fun getTotalOfVoiceAsLiveData(): LiveData<Long> {
        voices.postValue(mDBVoiceRepository.getTotalOfVoiceAsLiveData().value)
        return voices;
    }
}

Making use of it in your Fragment will look like below:

override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        if (activity != null) {
            val viewModel = ViewModelProvider(requireActivity())
            viewModel.get(HomeViewModel::class.java).getTotalOfVoiceAsLiveData().observe(viewLifecycleOwner, Observer { voices: Long ? ->
                voices // Sound of music ? be very free to use ...
            })
        }
    }

Happy Coding.