{"id":4956,"date":"2023-03-10T16:37:59","date_gmt":"2023-03-10T20:37:59","guid":{"rendered":"https:\/\/sites.bu.edu\/stepplab\/?page_id=4956"},"modified":"2024-07-11T13:59:17","modified_gmt":"2024-07-11T17:59:17","slug":"automated-creak-detection","status":"publish","type":"page","link":"https:\/\/sites.bu.edu\/stepplab\/research\/automated-creak-detection\/","title":{"rendered":"Automated Creak Detection"},"content":{"rendered":"<p>This MATLAB wrapper was created by Manuel E. D\u00edaz Cadiz, MS, for our project investigating percent (%) creak as a potential outcome measure for AdLD. Please cite:<\/p>\n<p>Marks, K. L., D\u00edaz C\u00e1diz, M. E., Toles, L. E., Buckley, D. P., Tracy, L. F., Noordzji, J. P., Grillone, G. A., &amp; Stepp, C. E. (In Press). Automated Creak Differentiates Adductor Laryngeal Dystonia and Muscle Tension Dysphonia. <em>The Laryngoscope<\/em>.<\/p>\n<p>The algorithm used in the MATLAB wrapper for this project is available open source [Covarep v.1.3.2]<sup>1<\/sup> and this neural network version of the creak detector<sup>2<\/sup> is considered state-of-the-art for creak detection as of 2023.<\/p>\n<p>From <a href=\"\/stepplab\/files\/2023\/01\/The-Laryngoscope-2023-Marks-Automated-Creak-Differentiates-Adductor-Laryngeal-Dystonia-and-Muscle-Tension-Dysphonia.pdf\">Marks et al (In Press)<\/a><sup>3<\/sup>: \u201cThe automated creak detector<sup>4<\/sup> is the result of an artificial neural network model that was trained to detect the following acoustic features associated with creak: 1) H2\u2212H1 and <em>f<\/em><sub>o<\/sub> creak, which characterizes the strong presence of secondary residual peaks often found in creaky voice; 2) residual peak prominence, which is meant to characterize each excitation peak in the time domain; 3) power peak parameters, which highlight the amplitude variation within individual pulses; 4) inter-pulse similarity, which is used to discriminate glottal pulses corresponding to creaky voice from unvoiced regions; 5) intra-frame period, which was designed to help differentiate creaky voice from other voiced regions; and 6) additional acoustic features: energy norm, power standard deviation, and ZeroXrate, which were included to avoid false positives in unvoiced and silent regions. From their visual analysis of the acoustic speech signals, Drugman, Kane, and Gobl<sup>4<\/sup> described three creaky voice patterns: highly irregular temporal characteristics, fairly regular temporal characteristics with strong excitation peaks, and fairly regular temporal characteristics without strong secondary excitations.\u201d<\/p>\n<h3>Downloads<\/h3>\n<p>To use our MATLAB wrapper for the creak detector, download all files contained in this Zip File:<\/p>\n<p><a href=\"\/stepplab\/files\/2023\/03\/creaky_voice_detection.zip\"><img loading=\"lazy\" src=\"\/stepplab\/files\/2023\/03\/download-button-1.png\" alt=\"\" width=\"127\" height=\"37\" class=\"alignnone wp-image-4981 size-full\" \/><\/a><\/p>\n<h3>Instructions\/Troubleshooting<\/h3>\n<ol>\n<li>Download the Zip file and save it to your computer (make sure it does not stay in a temporary file or in your downloads).<\/li>\n<li>Next, make sure you have the Digital Signal Processing Toolbox in MATLAB installed. If not, go to home \u2192 Add-Ons \u2192 Get Add-Ons: type in the search field \u201cSignal Processing Toolbox\u201d, go to the toolbox module found, and hit the install button.<\/li>\n<li>Open detect_creaky_voice_Dataset2XLS in MATLAB. Copy the path where your audio files are located into the INPUT_PATH variable assignment (space in purple). This code will calculate % <span>creak <\/span>for each file in that folder and make an excel sheet with the file name, group, total voiced time, total\u00a0<span>creak<\/span>\u00a0time, and %\u00a0<span>creak<\/span>. If you have multiple groups, you can add subfiles within the audio folder.<\/li>\n<li>The 2 scripts in &#8220;<strong>creaky_voice_detection<\/strong>&#8221; folder (named <strong>detect_creaky_voice_Dataset2XLS.<\/strong><strong>m\u00a0<\/strong>and\u00a0<strong>detect_creaky_voice_1example.m<\/strong>) need the function <strong>detect_creaky_voice()<\/strong>\u00a0and the folder &#8220;<strong>private<\/strong>&#8221; to work.<\/li>\n<li>The script <strong>detect_creaky_voice_1example.m<\/strong>\u00a0in particular, also needs the audio file &#8220;<strong>test1.wav<\/strong>&#8221; that is in the same folder.<\/li>\n<li>There is no need to add the folder &#8220;<strong>private<\/strong>&#8221; to the MATLAB path. This folder name\u00a0&#8220;<strong>private<\/strong>&#8221; is a MATLAB reserved name for folders that may contain private functions (functions only visible to the scripts in the same location as this folder), so the path is added automatically for the scripts above.<\/li>\n<li>The input format\/directories inside the\u00a0<strong>INPUT_PATH\u00a0<\/strong>location (defined in the <strong>detect_creaky_voice_Dataset2XLS.m<\/strong> script) should look like:<\/li>\n<\/ol>\n<p>INPUT_PATH \u2192<\/p>\n<ul>\n<li>Group1_folder<\/li>\n<li>Group2_folder<\/li>\n<li>&#8230;<\/li>\n<li>GroupN_folder \u2192\n<ul>\n<li>Participant1_folder<\/li>\n<li>Participant2_folder<\/li>\n<li>&#8230;<\/li>\n<li>ParticipantM_folder \u2192\n<ul>\n<li>audiofile_1.wav<\/li>\n<li>audiofile_2.wav<\/li>\n<li>&#8230;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>8. If there are problems running the <strong>detect_creaky_voice() <\/strong>function, troubleshoot by checking whether the script <strong>detect_creaky_voice_1example.m <\/strong>runs successfully or not.\u00a0If this script runs, it should display a figure with the &#8220;test1.wav&#8221; audio file data and the respective portions\u00a0of the audio where the\u00a0detector\u00a0identifies possible instances of creak, like the figure below. If not, refer the error message to understand what the issue is. If it runs and it shows the figure below, then the\u00a0<strong>detect_creaky_voice_Dataset2XLS.m<\/strong> script should run as long as the <strong>INPUT_PATH<\/strong> location follows the format illustrated previously in point six (6).<a href=\"\/stepplab\/files\/2023\/03\/detect_creaky_voice_1example_fig.png\"><img loading=\"lazy\" src=\"\/stepplab\/files\/2023\/03\/detect_creaky_voice_1example_fig-636x385.png\" alt=\"\" width=\"636\" height=\"385\" class=\"size-medium wp-image-5000 aligncenter\" srcset=\"https:\/\/sites.bu.edu\/stepplab\/files\/2023\/03\/detect_creaky_voice_1example_fig-636x385.png 636w, https:\/\/sites.bu.edu\/stepplab\/files\/2023\/03\/detect_creaky_voice_1example_fig-1024x620.png 1024w, https:\/\/sites.bu.edu\/stepplab\/files\/2023\/03\/detect_creaky_voice_1example_fig-768x465.png 768w, https:\/\/sites.bu.edu\/stepplab\/files\/2023\/03\/detect_creaky_voice_1example_fig.png 1350w\" sizes=\"(max-width: 636px) 100vw, 636px\" \/><\/a><\/p>\n<p>9. The resulting xls sheet will be in the same folder where you saved the MATLAB code.<\/p>\n<h3>References<\/h3>\n<ol>\n<li>Degottex G, Kane J, Drugman T, Raitio T, Scherer S. COVAREP\u2014A collaborative voice analysis repository for speech technologies. IEEE; 2014:960-964.<\/li>\n<li>Drugman T, Kane J, Gobl C. Data-driven detection and analysis of the patterns of creaky voice. <em>Computer Speech &amp; Language<\/em>. 2014\/09\/01\/ 2014;28(5):1233-1253. doi:<a href=\"https:\/\/doi.org\/10.1016\/j.csl.2014.03.002\">https:\/\/doi.org\/10.1016\/j.csl.2014.03.002<\/a><\/li>\n<li>Marks KL, D\u00edaz C\u00e1diz ME, Toles LE, et al. Automated Creak Differentiates Adductor Laryngeal Dystonia and Muscle Tension Dysphonia. <em>The Laryngoscope<\/em>. 2023.<\/li>\n<li>Drugman T, Kane J, Gobl C. Data-driven Detection and Analysis of the Patterns of Creaky Voice. <em>arXiv preprint arXiv:200600518<\/em>. 2020.<\/li>\n<\/ol>\n<h3>Funding<\/h3>\n<p>This work was funded by <a href=\"https:\/\/www.nidcd.nih.gov\/\">National Institute on Deafness and Other Communication Disorders (NIDCD)<\/a><a href=\"https:\/\/reporter.nih.gov\/project-details\/10136975\">R01DC015570<\/a> (Stepp) and <a href=\"https:\/\/reporter.nih.gov\/search\/UHgu0IVuaESl3ysPCK8XxA\/project-details\/10602982\"><span>F32DC020349 <\/span><\/a>\u00a0(Marks), as well as\u00a0<a href=\"https:\/\/www.ashfoundation.org\/\">The American Speech-Language Hearing Association<\/a> <a href=\"https:\/\/www.ashfoundation.org\/apply\/speech-science-research-grant\/\">Speech Science Research Grant<\/a> (Marks). Please feel free to use the algorithm in scientific research. If you do so, we ask that you cite in this way when using the creak detector: <strong>\u201c<\/strong><em><strong>Percent creak values were calculated using an automated MATLAB program; algorithm details can be found in Marks et al., (In Press).\u201d<\/strong><\/em><strong>\u00a0<\/strong><\/p>\n<h3>Disclaimer<\/h3>\n<p>We do not recommend use of this algorithm or % creak as clinical outcome measures at this time. However, we hope to determine whether there is a role for creak in clinical voice assessment. This algorithm has been applied thus far to investigate whether creak can differentiate between speakers with adductor laryngeal dystonia (AdLD) and controls as well as speakers with AdLD and muscle tension dysphonia<sup>3<\/sup>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This MATLAB wrapper was created by Manuel E. D\u00edaz Cadiz, MS, for our project investigating percent (%) creak as a potential outcome measure for AdLD. Please cite: Marks, K. L., D\u00edaz C\u00e1diz, M. E., Toles, L. E., Buckley, D. P., Tracy, L. F., Noordzji, J. P., Grillone, G. A., &amp; Stepp, C. E. (In Press). [&hellip;]<\/p>\n","protected":false},"author":22229,"featured_media":0,"parent":12,"menu_order":7,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/pages\/4956"}],"collection":[{"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/users\/22229"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/comments?post=4956"}],"version-history":[{"count":21,"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/pages\/4956\/revisions"}],"predecessor-version":[{"id":5694,"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/pages\/4956\/revisions\/5694"}],"up":[{"embeddable":true,"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/pages\/12"}],"wp:attachment":[{"href":"https:\/\/sites.bu.edu\/stepplab\/wp-json\/wp\/v2\/media?parent=4956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}