Laboratorio del habla

Presentación
El habla tiene varias dimensiones. Como mínimo, podemos decir que el lenguaje consiste en una dimensión "mental" o "cognitiva" (o representación: es decir, tenemos los sonidos, morfemas, palabras, estructuras, etc. almacenados en algún lugar de nuestra memoria) y una dimensión "mecánica", que es cómo los distintos articuladores del tracto vocal se coordinan para transmitir la estructura cognitiva que tenemos codificada en nuestras cabezas. Se supone que las estructuras cognitivas que subyacen el lenguaje (es decir, sílabas, palabras, frases y enunciados entonativos) están incorporadas en los patrones de coordinación espaciotemporal del tracto vocal, y que estas dos dimensiones forman parte del mismo sistema complejo integrado. Sabemos, por ejemplo, que las acciones articulatorias involucradas en producir un ataque de una sílaba en varios idiomas están coordinadas de una manera global (relación en fase, 0o φ) en relación con la siguiente vocal, mientras que la acción articulatoria para una consonante al final de una sílaba está coordinada de una manera lineal (relación fuera de fase, 180o φ) con la vocal precedente. Por eso, los hablantes nativos de inglés pueden discriminar sin esfuerzo las frases 'I scream' y 'Ice cream'. Básicamente, los sonidos son idénticos ([aɪskɹiːm]), pero la forma en que las representaciones estructurales cognitivas se manifiestan físicamente como diferentes relaciones de coordinación espacio-temporal son diferentes, y los humanos usan estos indicios temporales para interpretar y entender el lenguaje.
El Laboratorio del Habla de la Universidad de Navarra estudia el nivel mecánico del habla como sub dominio del sistema motor y la relación entre el nivel superior y cognitivo del lenguaje y el nivel mecánico, lo cual está restringido no solo por restricciones cognitivas sino también por principios físicos (fuerza, masa, tensión), aerodinámicos (presión intraoral y flujo traslingual) y biomecánicos que regulan la temporización de los gestos articulatorios. Utilizando unos equipos que nos permiten observar los movimientos del tracto vocal y el software que podemos utilizar para realizar estudios psicolingüísticos de la percepción del habla, hacemos experimentos que buscan descubrir (1) ¿cómo los sonidos continuos, y las acciones coordinadas que producen los sonidos, se representan en la cognición? (2) ¿cómo los movimientos continuos de distintas partes autónomas del tracto vocal se coordinan en el tiempo como unidades dinámicas de acción en un sistema dinámico autoorganizado?, (3) ¿cómo los hablantes nativos y no nativos aprenden nuevos patrones de coordinación inter-articulatoria?, y (4) ¿cómo la ponderación estadística de los indicios perceptuales se traduce en la acción del tracto vocal?. En el centro de nuestro estudio está el concepto del "gesto" articulatorio, que se define como una sinergia de diferentes grupos musculares autónomos que se coordinan para la tarea específica de producir un sonido. Este enfoque centrado en los sistemas dinámicos nos permite trazar un camino claro entre la representación cognitiva de la acción de un gesto articulatorio y la coordinación del tracto vocal utilizando ecuaciones diferenciales y matemáticas no lineales.
Estamos especialmente interesados en la recogida de datos para el español y lenguas tradicionalmente poco estudiadas, como el alemán suizo, el luxemburgués, el romanche, el italo-románico (como el veneciano) y las lenguas ibero-románicas (como el valenciano), así como los datos relacionados con el desarrollo fonológico, sobre todo en los grupos tradicionalmente poco estudiados, como niños con implantes cocleares, niños con autismo y hablantes no nativos de diversos idiomas.
Nuestro objetivo es ser un espacio abierto que acoge a investigadores de todo el mundo para realizar investigaciones en una de nuestras áreas de interés, y aceptamos propuestas para nuevas áreas de investigación. Si eres investigador y estás interesado en realizar un proyecto de investigación en nuestro laboratorio, no dudes en contactarnos que se encuentra en el apartado de información de contacto que se proporciona en esta página.
El laboratorio de habla está equipado con un ecógrafo de última generación, Articulate Assistant ™ Micro, que nos permite ver y cuantificar los movimientos de la lengua y una cámara de captura de movimiento para cuantificar el movimiento de los labios durante el habla. Esta máquina se aloja en una cabina de sonido GAES ™ de doble sonido atenuado con un micrófono profesional y equipo de grabación de audio. Para los experimentos de percepción, el laboratorio tiene EPrime, que nos permite llevar a cabo experimentos de habla y percepción audiovisual. También tenemos acceso a equipos aerodinámicos de última generación como un electroglotógrafo y un sistema aerodinámico fonográfico para registrar la presión de aire intraoral y el flujo de aire traslingual, así como un electropalatógrafo para registrar el contacto de la lengua contra el paladar duro.
Contacto
Dr. Mark Gibson
Director
mgibson@unav.es
Laboratorio del Habla
Aula 2050
2º piso Edificio Central
31009 Pamplona, España
+34 948 42 56 00 Ext. 802381
The following has evaluated to null or missing:
==> contentFechaURLString [in template "10136#10174#153676729" at line 156, column 57]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign urlDetail = urlNews + "/-/con... [in template "10136#10174#153676729" at line 156, column 13]
----
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
2<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
3<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
4
5
6
7
8<#assign groupFriendlyURL = themeDisplay.getScopeGroup().getFriendlyURL() />
9<#assign friendlyURL = themeDisplay.getScopeGroup().getPathFriendlyURL(false,themeDisplay) + groupFriendlyURL />
10<#assign actualURLFriendly = portalUtil.getHost(request) + friendlyURL />
11<#assign scopeGroupId = themeDisplay.getScopeGroupId() />
12
13<#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
14<#assign URLEncoder = staticUtil["java.net.URLEncoder"] />
15<#assign Normalizer = staticUtil["java.text.Normalizer"] />
16<#assign currentGroupSite = themeDisplay.getLayout().getGroup().getFriendlyURL() />
17<#if themeDisplay.getLayout().getPrivateLayout() == true >
18 <#assign state = themeDisplay.getPathFriendlyURLPrivateGroup()/>
19<#else>
20 <#assign state = themeDisplay.getPathFriendlyURLPublic()/>
21</#if>
22
23
24
25<#assign imagen = languageUtil.get(locale, "listado.noticia.imagen")>
26<#assign texto = languageUtil.get(locale, "listado.noticia.texto")>
27<#assign instanceId = themeDisplay.getPortletDisplay().getId()?replace("com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_", "")>
28<#assign originalInstanceId = themeDisplay.getPortletDisplay().getId()?replace("com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_", "")>
29<#assign currentPageUrl = PortalUtil.getLayoutURL(themeDisplay.getLayout(),themeDisplay)>
30<#assign currentLayoutFriendlyUrl = themeDisplay.getLayoutFriendlyURL(themeDisplay.getLayout())>
31
32<#-- custom fields
33<#assign expandos = themeDisplay.getScopeGroup().getExpandoBridge().getAttributes()>
34<#list expandos?keys as key>
35 ${key}
36</#list>
37-->
38
39
40<#-- site_news_asset_publisher_instance_id name of the custom field for the asset publisher instance id of the site -->
41<#assign site_news_asset_publisher_instance_id = layout.getGroup().getExpandoBridge().getAttribute("site_news_asset_publisher_instance_id")>
42<#-- by default the main site asset publisher id -->
43<#assign site_news_asset_publisher_instance_id_default = layout.getGroup().getExpandoBridge().getAttributeDefault("site_news_asset_publisher_instance_id")>
44<#-- site_news_url name of the custom field url of the news page of the site -->
45<#assign site_news_url = themeDisplay.getScopeGroup().getExpandoBridge().getAttribute("site_news_url")>
46<#-- by default the main site news page -->
47<#assign site_news_url_default = themeDisplay.getScopeGroup().getExpandoBridge().getAttributeDefault("site_news_url")>
48
49
50<#-- get site_news_url custom field value for the site -->
51<#list site_news_url?keys as key>
52 <#if key == locale>
53 <#assign site_news_url_value = site_news_url?values[key?index]>
54 </#if>
55</#list>
56
57<#-- get site_news_url custom field default value-->
58<#list site_news_url_default?keys as key>
59 <#if key == locale>
60 <#assign site_news_url_default_value = site_news_url_default?values[key?index]>
61 </#if>
62</#list>
63
64<#-- assign the url if the site has custom field. Use the default value otherwise-->
65<#if site_news_url_value??>
66<#else>
67 <#if site_news_url_default_value??>
68 <#assign site_news_url_value = site_news_url_default_value>
69 </#if>
70</#if>
71
72<#-- assign the instance id if the site has custom field. Use the default value otherwise-->
73<#if site_news_asset_publisher_instance_id??>
74<#else>
75 <#if site_news_asset_publisher_instance_id_default??>
76 <#assign site_news_asset_publisher_instance_id = site_news_asset_publisher_instance_id_default>
77 </#if>
78</#if>
79
80
81<section class="unav-news-list">
82 <#if entries?has_content>
83 <#list entries as curEntry>
84 <#assign article = journalArticleLocalService.fetchLatestArticle(curEntry.getClassPK()) />
85 <#assign assetRendererDate = curEntry.getAssetRenderer() />
86 <#assign journalArticleStructure = article.getDDMStructure().getName(locale)/>
87 <#if journalArticleStructure = "7_Noticia">
88 <#assign aArticleXML = saxReaderUtil.read(article.getContentByLocale(locale)) />
89 <#assign rawDate = aArticleXML.valueOf("//dynamic-element[@name='Fecha_noticia']/dynamic-content/text()") />
90
91<#if rawDate?has_content>
92 <#assign parsedDate = rawDate?date("yyyy-MM-dd") />
93
94 <#assign dateToUse = parsedDate />
95 <#assign contentFechaURLString = parsedDate?string["dd/MM/yyyy"] />
96 <#assign contentFechaString = parsedDate?string["dd | MM | yyyy"] />
97<#else>
98 <#assign dateToUse = article.getDisplayDate() />
99 <#assign contentFechaURLString = dateToUse?string["dd/MM/yyyy"] />
100 <#assign contentFechaString = dateToUse?string["dd | MM | yyyy"] />
101</#if>
102 </#if>
103
104
105 <#assign aArticleXML = saxReaderUtil.read(article.getContentByLocale(locale)) />
106 <#assign tituloNoticia = aArticleXML.valueOf("//dynamic-element[@name='Titulo_noticia']/dynamic-content/text()") />
107 <#assign autorNombre = aArticleXML.valueOf("//dynamic-element[@name='Nombre_autor']/dynamic-content/text()") />
108 <#assign autorImagen = aArticleXML.valueOf("//dynamic-element[@name='Autor_imagen']/dynamic-content/text()") />
109 <#assign jsonObjectString = aArticleXML.valueOf("//dynamic-element[@name='Imagen']/dynamic-content/text()") />
110
111 <#assign video = aArticleXML.valueOf("//dynamic-element[@name='Video_youtube']/dynamic-content/text()") />
112
113 <#assign friendlyContentURL = assetPublisherHelper.getAssetViewURL(portalUtil.getLiferayPortletRequest(renderRequest), portalUtil.getLiferayPortletResponse(renderResponse), curEntry,true) />
114
115 <#assign tituloNoticiaEncoded = friendlyUrlDecode(tituloNoticia)>
116
117 <#-- Asset publisher instance id in main domain -->
118 <#assign mainDomainInstanceId = "lovPblW1fC70">
119 <#-- Urls generated always the same page for unav requirements-->
120 <#-- In main domain, go to main news page and use that asset publisher id. Causes issues with other domains -->
121 <#-- TODO: remove once custom fields are created-->
122 <#assign urlNews = languageUtil.get(locale, "url.news.details", "/noticias")>
123 <#assign instanceId = mainDomainInstanceId>
124
125 <#-- Configure url and asset publisher instance id with customFields-->
126 <#-- By default configured with main domain news page and asset publisher id. Other domains have to configure it manually in the site configuration -->
127 <#if site_news_url_value??>
128 <#assign urlNews = site_news_url_value>
129 </#if>
130 <#if site_news_asset_publisher_instance_id??>
131 <#assign instanceId = site_news_asset_publisher_instance_id>
132 </#if>
133
134 <#-- WORKAROUND FOR TEMPORAL SITES GO LIVE -->
135 <#-- lfr.cloud domain urls work differently, redirection to site news has to be adapted for it-->
136 <#if actualURLFriendly?contains("lfr.cloud")>
137 <#-- 1. Site with default news page. if using the default value, redirect to main site and use mainDomainInstanceId.-->
138 <#if site_news_url_default_value == site_news_url_value>
139 <#assign urlNews = site_news_url_value>
140 <#assign instanceId = mainDomainInstanceId>
141 <#else>
142 <#-- 2. Site with custom news page. if site site_news_url_value contains /web/site/, use site_news_url_value as is and use originalInstanceId to redirect within the site-->
143 <#if site_news_url_value?contains("/web"+groupFriendlyURL)>
144 <#assign urlNews = site_news_url_value>
145 <#assign instanceId = originalInstanceId>
146
147 <#-- 3. Site with custom domain and custom news page. if site site_news_url_value doesn't contain /web/site/ , prepend /web/site to it, to redirect within the site-->
148 <#else>
149 <#assign urlNews = "/web"+groupFriendlyURL + site_news_url_value>
150 <#assign instanceId = originalInstanceId>
151 </#if>
152 </#if>
153
154 </#if>
155
156 <#assign urlDetail = urlNews+"/-/contents/"+contentFechaURLString+"/"+tituloNoticiaEncoded+"/content/"+instanceId+"/"+curEntry.getEntryId()>
157
158<#assign foto = "" >
159 <a href="${urlDetail}" class="unav-news-list__item">
160 <#if jsonObjectString?? && jsonObjectString?has_content>
161 <#attempt>
162 <#assign jsonObject = jsonObjectString?eval>
163 <#assign entryUuid = jsonObject.uuid />
164 <#assign entryGroupId = getterUtil.getLong(jsonObject.groupId) />
165 <#assign dlFileEntry = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(entryUuid, entryGroupId) />
166 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", dlFileEntry.fileEntryId) />
167 <#assign assetRenderer = assetEntry.assetRenderer />
168 <#assign foto = assetRenderer.getURLDownload(themeDisplay) />
169
170 <div class="unav-news-list__img" style="background-image: url('${foto});"> </div>
171 <#recover>
172
173 </#attempt>
174 </#if>
175 <#if video?has_content>
176 <#if foto == "">
177
178 <div class="unav-news-list__img" style="background-image:url(http://img.youtube.com/vi/${video}/0.jpg)">
179 </div>
180 </#if>
181 </#if>
182
183 <div class="unav-news-list__container-txt">
184 <p class="unav__text__date">${contentFechaString}</p>
185
186 <p class="unav__text unav__text--m">${tituloNoticia}</p>
187
188 <div class="unav-news-list__info">
189 <#if autorNombre?has_content>
190 <p class="unav-writing__info-txt"><span class="unav-writing__info-bold">${texto}</span>${autorNombre}</p>
191 </#if>
192 <#if autorImagen?has_content>
193 <p class="unav-writing__info-txt"><span class="unav-writing__info-bold">${imagen}</span>${autorImagen}</p>
194 </#if>
195 </div>
196 </div>
197 </a>
198 </#list>
199 </#if>
200
201
202</section>
203
204<script>
205 $(document).ready( function() {
206 // Avoid lost focus when paginate
207 if ($('.lfr-pagination-buttons')) {
208 var paginationButtons = $('.lfr-pagination-buttons').children();
209 for (const paginationButton of paginationButtons) {
210 var link = $(paginationButton).children();
211 if(link) {
212 $(link).click(function(e){
213 e.preventDefault();
214 var url = $(this).attr('href');
215 window.location.href = url + '#unav-news-list';
216 });
217 }
218 }
219 }
220 });
221
222 function _com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_INSTANCE_lovPblW1fC70_handleDropdownKeyPress(button, list, options, pageIterator) {}
223</script>
224
225<#function friendlyUrlDecode title>
226
227 <#assign titleFriendly = title?replace("[^A-Za-z0-9À-ú ]", "", "r")?lower_case>
228 <#assign titleFriendly = titleFriendly?replace("á", "a", "r")>
229 <#assign titleFriendly = titleFriendly?replace("é", "e", "r")>
230 <#assign titleFriendly = titleFriendly?replace("í", "i", "r")>
231 <#assign titleFriendly = titleFriendly?replace("ó", "o", "r")>
232 <#assign titleFriendly = titleFriendly?replace("ú", "u", "r")>
233 <#assign titleFriendly = titleFriendly?replace("ñ", "n", "r")>
234 <#assign titleFriendly = URLEncoder.encode(titleFriendly)>
235 <#assign titleFriendly = titleFriendly?replace("\\+", "-","r")>
236 <#return titleFriendly>
237</#function>