I don't think there is a way to do with just with the teamspeak permissions system, you can make the server group temporary (b_group_is_permanent), but it will be removed when the user leaves the server.
What I would do is create a script that checks a database for muted users. If a user is in the database and does not have the servergroup, the script is adds it. And if a user has the severgroup, but is not in the database or the mute has expired, the servergroup gets removed.
This script could be run every x minutes, or just check every client when they join the server.
Might be a easier way, but I can't think of any at the moment.
You can make basically anything with server query and a programming language. You can for example assign groups with script and add a record to database with timestamp which will represent when the group should be removed. Then the server query would check for example every minute if any of the users in the database should be removed from group