It is possible. When they start talking, call this on server-side (it's from facials@gen_male@base but gender is irrelevant, the animation is the same for both - you can try changing facials@gen_female@base to check):
player.playAnimation('facials@gen_male@base', 'mood_talking_1', 1, 45);
When they stop, call this on server-side as well (change mood_normal_1 to the player's current mood, if you use a mood system or something like this):
player.playAnimation('facials@gen_male@base', 'mood_normal_1', 1, 45);
I'm using something like this to simulate this on text chat (the function is NOT evaluating if the player is currently playing another animation, that might stop all animations if they are):
// when the player speaks on chat and it's not a command, call this function
function playSpeakingAnim(player, message) {
const secondsSpeaking = Math.ceil(message.split(" ").length / 2.5);
player.playAnimation("facials@gen_male@base", "mood_talking_1", 1, 45);
setTimeout(() => {
mp.events.call("cancelAnimation", player);
}, secondsSpeaking * 1000);
}