    /** AUDIO (ejecución) **/
	def bloqueAudio=''
	def audiosMap = [:]
	for (aud in audio) {
		def shortDesc = aud.Language_String3 !=null ? aud.Language_String3 
        	: aud.Title!=null ? (aud.Title=~/(?i).+spa.+/?'spa': aud.Title.substring(0,3).toLowerCase()) : 'und' 
		if (aud.Title!=null && aud.Title=~/(?i).*latin.*/) shortDesc='lat'
		audiosMap[shortDesc] = audiosMap[shortDesc] ?: [:]
		audiosMap[shortDesc][aud.Format] = audiosMap[shortDesc][aud.Format] ?: []
		audiosMap[shortDesc][aud.Format] << aud
	}
	def groupedAudiosMap = [:]
	for (audioElms in audiosMap) {
		def k = audioElms.key
		def v = audioElms.value
		if (!k.contains('+') && countAudiosInMap(v)>1) k += '+'
		def mQ = getMaxQuality(v)
		def mQstr = (mQ==null || mQ.isEmpty()) ? 'und' : printAudio(mQ)
		if (groupedAudiosMap.containsKey(mQstr)) groupedAudiosMap[mQstr].add(k)
		else groupedAudiosMap[mQstr] = [k]
	}
	audiosMap=null
	def temp=''
	for (audioGroup in groupedAudiosMap) {
		def k = audioGroup.key
		def v = audioGroup.value
		def gS = v.size()
		def str=''
		for (int i=0; i<gS; i++) {
			str += (v[i]!=null?v[i]:'und') +', '
			if (i==gS-1) {
				str = removeLastComa(str)+' '
				str += k+', '
			}
		}
		bloqueAudio += str
	}
	groupedAudiosMap=null
	bloqueAudio = '['+removeLastComa(bloqueAudio)+']'