Homework 2

‫ﺑﺴﻤﻪ ﺗﻌﺎﻟﻲ‬
‫ﺳﻴﺴﺘﻢ ﻫﺎي ﭼﻨﺪرﺳﺎﻧﻪاي )‪(40-342‬‬
‫داﻧﺸﻜﺪه ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ‬
‫داﻧﺸﮕﺎه ﺻﻨﻌﺘﻲ ﺷﺮﻳﻒ‬
‫‪ 1‬اﺳﻔﻨﺪ ‪1389‬‬
‫دﻛﺘﺮ ﻣﻬﺪي اﻣﻴﺮي‬
‫ﺗﻜﻠﻴﻒ ﺷﻤﺎره ‪ :2‬ﭘﺮدازش ﺳﻴﮕﻨﺎل ﺻﻮﺗﻲ‬
‫ﻣﻘﺪﻣﻪ‬
‫در اﻳﻦ ﺗﻤﺮﻳﻦ‪ ،‬ﺷﻤﺎ ﺑﺮﺧﻲ ﻣﻔﺎﻫﻴﻢ ﭘﺮدازش ﺻﻮت ﻛﻪ در درس ﺑﺎ آنﻫﺎ آﺷﻨﺎﻳﻲ ﭘﻴﺪا ﻛﺮدهاﻳﺪ را ﻣﻮرد ﺑﺮرﺳﻲ ﻗﺮار ﻣﻲدﻫﻴﺪ‪ .‬اﻳﻦ‬
‫ﭘﺮدازشﻫﺎ ﺷﺎﻣﻞ ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ﻏﻴﺮ ﺧﻄﻲ‪ ،‬ﻛﺪ ﻛﺮدن ﭘﻴﺸﮕﻮﻳﺎﻧﻪ‪ ،‬ﻧﻤﻮدار اﺳﭙﻜﺘﺮوﮔﺮام و ﻓﻴﻠﺘﺮ ﻛﺮدن ﺻﻮت ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫آﻧﭽﻪ ﻛﻪ ﺑﺎﻳﺴﺘﻲ ﺗﺤﻮﻳﻞ داده ﺷﻮد ﺷﺎﻣﻞ ﭘﺎﺳﺦ ﺳﻮاﻻت ﻣﻄﺮح ﺷﺪه در ﺻﻮرت ﺗﻤﺮﻳﻦﻫﺎ )در ﻗﺎﻟﺐ ﻳﻚ ﮔﺰارش ﺑﺎ ﻓﺮﻣﺖ ‪،(PDF‬‬
‫ﻧﻤﻮدارﻫﺎ و ﺷﻜﻞﻫﺎي ﺧﺮوﺟﻲ ‪ m‬ﻓﺎﻳﻞﻫﺎ و ‪ m‬ﻓﺎﻳﻠﻬﺎ ﻣﻲﺑﺎﺷﺪ‪ .‬ﻟﻄﻔﺎ ﺗﻤﺎﻣﻲ ﻓﺎﻳﻞﻫﺎ را ﺑﻪ ﺻﻮرت ﻳﻚ ﻓﺎﻳﻞ ﻓﺸﺮده‪ ،‬ﻛﻪ ﻧﺎم آن در‬
‫ﻗﺎﻟﺐ ‪ MM_HW2_LastName_StudentID‬ﺑﺎﺷﺪ ﻛﻪ در آن ﺑﻪ ﺟﺎي ‪ LastName‬ﻧﺎم ﺧﺎﻧﻮادﮔﻲ ﺷﻤﺎ و ﺑﻪ ﺟﺎي‬
‫‪ StudentID‬ﺷﻤﺎره داﻧﺸﺠﻮﻳﻲ ﺷﻤﺎ ﻗﺮار ﻣﻲﮔﻴﺮد‪ ،‬ﺑﻪ آدرس )‪ ([email protected]‬ﺑﻔﺮﺳﺘﻴﺪ‪ .‬ﻟﻄﻔﺎ ﻋﻨﻮان ‪ email‬ﺧﻮد‬
‫را ‪ MM-HW2‬ﻗﺮار دﻫﻴﺪ‪ .‬ﻣﻬﻠﺖ ﺗﺤﻮﻳﻞ ﺧﺮوﺟﻲﻫﺎ ﺳﺎﻋﺖ ‪ 23:59‬ﺗﺎرﻳﺦ ‪ 1388/12/22‬ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫‪Pulse Code Modulation -1‬‬
‫اﻟﻒ( ‪ (PCM) Pulse Code Modulation‬را ﺗﻮﺿﻴﺢ دﻫﻴﺪ‪ .‬ﺑﻄﻮر ﻣﺸﺨﺺ‪ PCM ،‬ﭼﻴﺴﺖ؟ ﭼﮕﻮﻧﻪ ‪ PCM‬ﺑﺮ روي دادهي‬
‫ﺻﻮﺗﻲ ﺑﻜﺎر ﻣﻲرود؟‬
‫ب( ﭼﺮا ﺻﻮت ﺑﺎ ﻛﻴﻔﻴﺖ ‪ CD‬در ﻓﺮﻛﺎﻧﺲ ‪ 44.1 KHz‬ﻧﻤﻮﻧﻪﺑﺮداري ﻣﻲﺷﻮد‪ ،‬درﺣﺎﻟﻴﻜﻪ ﻣﺤﺪوده ﺷﻨﻮاﻳﻲ اﻧﺴﺎن ﻓﻘﻂ ﺑﻴﻦ ‪20‬‬
‫‪ Hz‬ﺗﺎ ‪ 20 KHz‬اﺳﺖ؟‬
‫‪ -2‬ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ﻏﻴﺮ ﺧﻄﻲ‬
‫در ﺗﻤﺮﻳﻦ ﺳﺮي ‪ ،1‬ﺷﻤﺎ ﺑﺎ ﻣﻔﻬﻮم ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن و اﻋﻤﺎل آن ﺑﺮ ﺳﻴﮕﻨﺎل ﺻﻮت آﺷﻨﺎ ﺷﺪﻳﺪ‪ .‬ﻣﺤﺪوده ﻫﺎ و ﺳﻄﻮح ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن‬
‫ﻣﻤﻜﻦ اﺳﺖ ﺑﻪ ﺻﻮرﺗﻬﺎي ﻣﺘﻌﺪدي اﻧﺘﺨﺎب ﺷﻮﻧﺪ ﻛﻪ ﺑﺴﺘﮕﻲ ﺑﻪ ﻛﺎرﺑﺮدﻫﺎي از ﭘﻴﺶ ﺗﻌﻴﻴﻦ ﺷﺪة ﻧﻤﺎﻳﺶ دﻳﺠﻴﺘﺎﻟﻲ آن دارد‪ .‬ﺑﺎ‬
‫ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ﻳﻜﻨﻮاﺧﺖ‪ ،‬ﻣﺤﺪودة دﻳﻨﺎﻣﻴﻚ )ﺣﺪاﻗﻞ ﺗﺎ ﺣﺪاﻛﺜﺮ( ﺳﻴﮕﻨﺎل ‪ ،R‬ﺑﻪ ‪ N‬ﺑﺎزه ﺑﺎ ﻃﻮل ﻳﻜﺴﺎن ∆ ﺑﺎ ﻧﺎم ﭘﻠﻪ ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن‬
‫ﺗﻘﺴﻴﻢ ﻣﻲ ﺷﻮد‪.‬‬
‫‪R‬‬
‫)‪(1-1‬‬
‫‪N‬‬
‫ﻛﻮاﻧﺘﻴﺰه ﻛﺮدن ﻳﻜﻨﻮاﺧﺖ ﺗﻨﻬﺎ ﺑﺮاي ﺳﻴﮕﻨﺎلﻫﺎي ﺑﺎ ﺗﻮزﻳﻊ ﻳﻜﻨﻮاﺧﺖ ﺑﻬﻴﻨﻪ اﺳﺖ‪ .‬ﺑﺮاي ﺳﻴﮕﻨﺎلﻫﺎﻳﻲ ﻛﻪ ﻧﺰدﻳﻚ ﻣﻘﺎدﻳﺮ ﻛﻮﭼﻚ داﻣﻨﻪ‬
‫=∆‬
‫ﺗﺠﻤﻊ دارﻧﺪ‪ ،‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﺗﻮزﻳﻊ ﮔﻮﺳﻲ ﺑﺎ ﻣﻴﺎﻧﮕﻴﻦ ﺻﻔﺮ‪ ،‬ﺑﻬﺘﺮ اﺳﺖ ﻛﻪ داﻣﻨﻪ ﻫﺎي ﻛﻮﭼﻚ ﺑﺎ دﻗﺖ ﺑﻴﺸﺘﺮي ﻛﻮاﻧﺘﻴﺰه ﺷﻮﻧﺪ‪ .‬ﺑﺮاي‬
‫ﺗﺤﻘﻖ اﻳﻦ اﻣﺮ اﺑﺘﺪا ﺑﺎﻳﺪ ﻧﮕﺎﺷﺘﻲ ﺑﻪ ﺳﻴﮕﻨﺎل ﻛﺮد ﺑﻪ ﻃﻮري ﻛﻪ ﻣﻘﺎدﻳﺮ ﻛﻮﭼﻚ را ﺗﻘﻮﻳﺖ ﻛﻨﺪ و ﺳﭙﺲ ﻳﻚ ﻛﻮاﻧﺘﻴﺰه ﻛﻨﻨﺪة ﻳﻜﻨﻮاﺧﺖ ﺑﻪ‬
‫ﺳﻴﮕﻨﺎل ﻧﮕﺎﺷﺖ ﺷﺪه اﻋﻤﺎل ﻛﺮد‪ .‬ﻳﻜﻲ از ﻧﮕﺎﺷﺖﻫﺎ ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬
‫])‪y (n) = F [x(n‬‬
‫)‪(2-1‬‬
‫‪.sgn [x (n)], 0 ≤ x (n) ≤ 1‬‬
‫] )‪ln [1 + µ x(n‬‬
‫] ‪ln [1 + µ‬‬
‫=‬
‫‪( µ + 1) y ( n ) − 1‬‬
‫(‪x(n) = F [ y (n)] = sgn [ y (n)].‬‬
‫)‬
‫‪−1‬‬
‫‪µ‬‬
‫ﺷﻜﻞ‪ -1‬راﺑﻄﻪ ورودي – ﺧﺮوﺟﻲ ﺑﺮاي ﻳﻚ ﻣﺸﺨﺼﻪ ‪µ − law‬‬
‫)اﻗﺘﺒﺎس از ]‪(smith[1‬‬
‫ﺷﻜﻞ‪ ،1‬ﻳﻚ ﺧﺎﻧﻮاده از ﻣﻨﺤﻨﻲ ﻫﺎي )‪ y(n‬ﺑﺮ ﺣﺴﺐ )‪ x(n‬را ﺑﺮاي ﻣﻘﺎدﻳﺮ ﻣﺘﻔﺎوت ‪ µ‬ﻧﺸﺎن ﻣﻲ دﻫﺪ‪ .‬واﺿﺢ اﺳﺖ ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده‬
‫از ﺗﺎﺑﻊ )‪ (2-1‬داﻣﻨﻪ ﻫﺎي ورودي ﻛﻮﭼﻚ ﺗﻘﻮﻳﺖ ﻣﻲ ﺷﻮﻧﺪ‪ .‬ﺷﻜﻞ‪ 2‬ﺗﻮزﻳﻊ ﺳﻄﻮح ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن را ﺑﺮاي ﺣﺎﻟﺘﻲ ﻛﻪ ‪ µ =40‬و ‪N=8‬‬
‫اﺳﺖ‪ ،‬ﻧﺸﺎن ﻣﻲ دﻫﺪ‪ .‬اﮔﺮ ‪ µ =0‬ﺑﺎﺷﺪ‪ ،‬ﻣﻌﺎدﻟﺔ )‪ (2-1‬ﺑﻪ ﻣﻌﺎدﻟﺔ )‪ y(n)=x(n‬ﺧﻼﺻﻪ ﻣﻲ ﺷﻮد‪ ،‬ﺳﻄﻮح ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ﺑﺎ ﻓﺎﺻﻠﻪﻫﺎي‬
‫ﻳﻜﻨﻮاﺧﺖ ﺗﻘﺴﻴﻢ ﺷﺪه اﻧﺪ‪ ،‬ﺑﺎ اﻳﻦ وﺟﻮد ﺑﺮاي ﻣﻘﺎدﻳﺮ ﺑﺰرگ ‪ µ‬و ﺑﺮاي |)‪ |x(n‬ﻫﺎي ﺑﺰرگ‪:‬‬
‫)‪(3-1‬‬
‫)‪x( n‬‬
‫‪X max‬‬
‫‪y (n) ≈ X max log‬‬
‫)‪y (n‬‬
‫‪x (n) ≈ X max 10 X max‬‬
‫‪or‬‬
‫ﺑﻨﺎﺑﺮاﻳﻦ ﺑﻪ ﺟﺰ داﻣﻨﻪ ﻫﺎي ﺑﺴﻴﺎر ﻛﻮﭼﻚ‪ ،‬ﺳﻄﻮح ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ﺑﻪ ﻃﻮر ﻧﻤﺎﻳﻲ ﺑﺎ اﻧﺪﻳﺲ ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن اﻓﺰاﻳﺶ ﻣﻲ ﻳﺎﺑﻨﺪ‪.‬‬
‫ﺷﻜﻞ‪ -2‬ﺗﻮزﻳﻊ ﺳﻄﻮح ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ﺑﺮاي ﻛﻮاﻧﺘﻴﺰه ﻛﻨﻨﺪة ‪ 3‬ﺑﻴﺘﻲ ‪ µ -law‬ﺑﺎ ‪ µ =40‬از ]‪[1‬‬
‫اﻳﻦ ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن‪ ،‬ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ‪ µ − law‬ﻧﺎﻣﻴﺪه ﻣﻲ ﺷﻮد و اوﻟﻴﻦ ﺑﺎر ﺗﻮﺳﻂ ‪ smith‬اراﻳﻪ ﺷﺪ ]‪ .[2‬اﻳﻦ ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن در‬
‫ﺧﻄﻮط ﺗﻠﻔﻦ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد‪ .‬اﮔﺮ ﺳﻴﮕﻨﺎل )‪ x(n‬ﺑﺎ ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ﻳﻜﻨﻮاﺧﺖ ‪ 8‬ﺑﻴﺖ ﻛﻮاﻧﺘﻴﺰه ﺷﺪه ﺑﺎﺷﺪ‪ ،‬ﻣﻘﺪار ‪255 ، µ‬‬
‫اﻧﺘﺨﺎب ﻣﻲﺷﻮد‪.‬‬
‫ﺷﻜﻞ‪ -3‬ﻧﻤﻮﻧﻪاي از ﻛﺪ ﻛﺮدن ﺑﻪ روش ‪µ-law‬‬
‫در اﻳﻦ ﺗﻤﺮﻳﻦ ﻣﻲﺧﻮاﻫﻴﻢ اﺛﺮ ﻛﺪ ﻛﺮدن ‪ µ-law‬را روي ﺳﻴﮕﻨﺎل ﺻﻮت ﻣﻮرد ﺑﺮرﺳﻲ ﻗﺮار دﻫﻴﻢ‪.‬‬
‫‪ -1-1‬در ﻣﺤﻴﻂ ‪ ،MATLAB‬ﺗﺎﺑﻌﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺗﺎﺑﻊ )‪ (2-1‬را ﭘﻴﺎدهﺳﺎزي ﻧﻤﺎﻳﺪ‪ .‬ﻣﻘﺪار ‪ µ‬را ‪ 255‬و ﺑﺎزه ‪ x‬را ]‪ [-1,1‬ﻗﺮار دﻫﻴﺪ‪.‬‬
‫‪ -2-1‬ﻳﻚ ﺳﻴﮕﻨﺎل ﺻﻮت ورودي ﺑﺎ ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ‪ 16‬ﺑﻴﺖ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬ﻣﻲﺧﻮاﻫﻴﻢ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻌﻲ ﻛﻪ در ﻗﺴﻤﺖ ‪1-1‬‬
‫ﻃﺮاﺣﻲ ﻛﺮدهاﻳﺪ روي اﻳﻦ ﺳﻴﮕﻨﺎل ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ‪ µ-law‬اﻧﺠﺎم دﻫﻴﻢ‪ .‬ﺑﺎ داﺷﺘﻦ ‪ 16‬ﺑﻴﺖ‪ 65536 ،‬ﺳﻄﺢ ﺑﺮاي ﺳﻴﮕﻨﺎل‬
‫ورودي ﺧﻮاﻫﻴﻢ داﺷﺖ ﻛﻪ در ﻣﺤﺪوده )‪ [-32768,32767‬ﻣﻲﺑﺎﺷﺪ‪ .‬ﺳﻴﮕﻨﺎل ﺧﺮوﺟﻲ ‪ 8‬ﺑﻴﺘﻲ و ﺷﺎﻣﻞ ‪ 256‬ﺳﻄﺢ در‬
‫ﻣﺤﺪوده )‪[-128,127‬ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﺑﺮاي ﺑﺮدن ﻣﺤﺪوده ورودي ﻛﻪ ‪ 16‬ﺑﻴﺘﻲ اﺳﺖ ﺑﻪ ]‪ ،[-1,1‬ﻣﻘﺎدﻳﺮ ورودي را ﺑﻪ ‪ 32768‬ﺗﻘﺴﻴﻢ ﻧﻤﺎﻳﻴﺪ و ﺳﭙﺲ ﺗﺎﺑﻊ را روي آن‬
‫اﻋﻤﺎل ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ ﺧﺮوﺟﻲ ﺗﺎﺑﻊ را در ‪ 127‬ﺿﺮب ﻧﻤﺎﻳﻴﺪ ﺗﺎ ﺧﺮوﺟﻲ در ﻣﺤﺪوده ‪ 8‬ﺑﻴﺘﻲ ﻗﺮار ﮔﻴﺮد‪..‬‬
‫روش دﻳﮕﺮي ﻛﻪ ﺑﺮاي اﻳﻦ ﭘﺮدازش ﭘﻴﺸﻨﻬﺎد ﻣﻲﺷﻮد ﺗﻐﻴﻴﺮ ﺗﺎﺑﻊ ﺗﻤﺮﻳﻦ ‪ 1-1‬ﺑﻪ ﮔﻮﻧﻪاي اﺳﺖ ﻛﻪ ورودي را در ﻣﺤﺪوده ‪ 16‬ﺑﻴﺘﻲ‬
‫ﮔﺮﻓﺘﻪ و در ﺧﺮوﺟﻲ در ﻣﺤﺪوده ‪ 8‬ﺑﻴﺘﻲ ﺗﺤﻮﻳﻞ ﻧﻤﺎﻳﺪ‪ .‬ﺷﻤﺎ ﻣﻲﺗﻮاﻧﻴﺪ از ﻫﺮ دوي اﻳﻦ روشﻫﺎ ﺑﺮاي ﭘﺮدازش ﺻﻮت اﺳﺘﻔﺎده ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫ﺳﻴﮕﻨﺎل ‪ org.wav‬را ﻛﻪ در ﺗﻤﺮﻳﻦ ﺿﻤﻴﻤﻪ ﺷﺪه اﺳﺖ ﺑﺎ دﺳﺘﻮر زﻳﺮ ﺑﺎرﮔﺬاري ﻧﻤﺎﻳﻴﺪ‪):‬ﻣﻲﺗﻮاﻧﻴﺪ از ﻫﺮ ﻓﺎﻳﻞ ﺻﻮﺗﻲ دﻳﮕﺮي ﻛﻪ ﺑﺎ‬
‫‪ 16‬ﺑﻴﺖ ﻛﻮاﻧﺘﻴﺰه ﺷﺪه اﺳﺖ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪(.‬‬
‫;)'‪[y,f,n]=wavread('org.wav','native‬‬
‫ﺑﺎ ﻗﺮار دادن ﻋﺒﺎرت ’‪ ‘native‬در دﺳﺘﻮر ﻓﻮق‪ ،‬ﻣﺤﺪوده ﺳﻴﮕﻨﺎل ‪ y‬در ﻣﺤﺪوده ﻧﻤﻮﻧﻪ ﺑﺮداري ‪ n‬ﺧﻮاﻫﺪ ﺑﻮد‪ ..‬ﻣﻲﺗﻮاﻧﻴﺪ ﺑﺎ اﺳﺘﻔﺎده‬
‫از دﺳﺘﻮر ‪ min‬و ‪ ، max‬ﻛﻤﻴﻨﻪ و ﺑﻴﺸﻴﻨﻪ ﺳﻴﮕﻨﺎل ‪ y‬را ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ ﺗﺎ ﻣﻄﻤﺌﻦ ﺷﻮﻳﺪ در ﻣﺤﺪوده )‪ [-32768,32767‬ﻗﺮار دارد‪.‬‬
‫ﺣﺎل اﻳﻦ ﺳﻴﮕﻨﺎل را ﺑﻪ ﺗﺎﺑﻊ ‪ µ-law‬اﻋﻤﺎل ﻧﻤﺎﻳﻴﺪ‪ .‬ﺑﻪ ﺳﻴﮕﻨﺎل ﺧﺮوﺟﻲ و ﻓﺎﻳﻞ اﺻﻠﻲ ﮔﻮش دﻫﻴﺪ‪ .‬ﭼﻪ ﺗﻔﺎوﺗﻲ اﺣﺴﺎس ﻣﻲﻛﻨﻴﺪ؟‬
‫ﻧﻤﻮدار اﻳﻦ دو ﺳﻴﮕﻨﺎل را در ﺣﻮزه زﻣﺎن ﺑﺎ دﺳﺘﻮر ‪ plot‬رﺳﻢ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -3-1‬ﺳﻴﮕﻨﺎل ﺧﺮوﺟﻲ ﻗﺴﻤﺖ ‪ 2-1‬را ﺑﻪ ﺗﺎﺑﻊ ﻋﻜﺲ ‪ µ-law‬دﻫﻴﺪ ﺗﺎ ﻋﻜﺲ ﻋﻤﻞ ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن روي آن اﻧﺠﺎم ﺷﻮد‪) .‬ﺷﻤﺎ ﺑﺎﻳﺪ‬
‫ﺗﺎﺑﻊ ﻋﻜﺲ ‪ µ-law‬را ﻧﻴﺰ ﭘﻴﺎده ﺳﺎزي ﻛﻨﻴﺪ(‪ .‬ﺑﻪ اﻳﻦ ﺧﺮوﺟﻲ اﻳﻦ ﻗﺴﻤﺖ و ﻓﺎﻳﻞ اﺻﻠﻲ ﮔﻮش دﻫﻴﺪ‪ .‬ﭼﻪ ﺗﻔﺎوﺗﻲ ﻣﻴﺎن‬
‫آن ﻫﺎ وﺟﻮد دارد؟ ﻧﻤﻮدار اﻳﻦ دو ﺳﻴﮕﻨﺎل و ﻧﻴﺰ ﻧﻤﻮدار ﺧﻄﺎ)ﺗﻔﺎوت دو ﺳﻴﮕﻨﺎل( را رﺳﻢ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -4-1‬ﺗﺤﻘﻴﻖ ﻛﻨﻴﺪ ﭼﺮا در ﺧﻄﻮط ﺗﻠﻔﻦ از ﻛﻮاﻧﺘﻴﺰاﺳﻴﻮن ﻳﻜﻨﻮاﺧﺖ ‪ 8‬ﻳﺎ ‪ 16‬ﺑﻴﺘﻲ اﺳﺘﻔﺎده ﻧﻤﻲﺷﻮد؟‬
‫‪ -5-1‬در ﻣﻮرد ﻛﺪ ﻛﺮدن ﺑﻪ روش ‪ A-law‬ﺗﺤﻘﻴﻖ ﻛﺮده و ﺗﻔﺎوت آن ﺑﺎ اﻳﻦ روش و ﻧﻴﺰ ﻛﺎرﺑﺮد ﻫﺮ ﻳﻚ را ﺗﻮﺿﻴﺢ دﻫﻴﺪ‪.‬‬
‫‪-2‬‬
‫ﻛﺪ ﻛﺮدن ﭘﻴﺸﮕﻮﻳﺎﻧﻪ‬
‫ﮔﺮﭼﻪ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ µ-law‬ﺟﻬﺖ ﻛﺪ ﻛﺮدن ﺻﻮت‪ ،‬ﺣﺠﻢ دادهﻫﺎي ارﺳﺎﻟﻲ را ﻛﺎﻫﺶ ﻣﻲدﻫﺪ‪ ،‬اﻣﺎ ﻫﻨﻮز ﻫﺮ ﻧﻤﻮﻧﻪ ﺳﻴﮕﻨﺎل‬
‫ورودي را ﻛﺪ ﻛﺮده و ارﺳﺎل ﻣﻲﻧﻤﺎﻳﺪ‪ .‬در ﻳﻚ ﺷﻜﻞ ﻣﻮج ﺻﻮت ﻣﻌﻤﻮﻟﻲ‪ ،‬ﻧﻤﻮﻧﻪ ﻫﺎي ﻣﺘﻮاﻟﻲ ﺑﺠﺰ در ﮔﺬارﻫﺎي ﺑﻴﻦ آواﻫﺎي ﻣﺘﻔﺎوت‪،‬‬
‫ﻣﻘﺎدﻳﺮ ﻣﺸﺎﺑﻬﻲ دارﻧﺪ‪ .‬ﻳﻚ راه ﺑﺮاي ﺑﻬﺮه ﮔﻴﺮي از اﻳﻦ ﻫﻤﺒﺴﺘﮕﻲ اﺳﺘﻔﺎده از ﻛﺪ ﻛﺮدن ﺑﻪ روش ﭘﻴﺸﮕﻮﻳﻲ ﺧﻄﻲ اﺳﺖ‪ .‬اﺑﺘﺪا ﻧﻤﻮﻧﻪ‬
‫)‬
‫ﻓﻌﻠﻲ )‪ x(n‬از روي ﺗﺮﻛﻴﺐ ﺧﻄﻲ ﻧﻤﻮﻧﻪ ﻫﺎي ﻗﺒﻠﻲ ﺳﺎﺧﺘﻪ ﺷﺪه ) ‪ x (n − k‬ﺗﺨﻤﻴﻦ زده ﻣﻲ ﺷﻮد ‪:‬‬
‫∧‬
‫) ‪x p ( n) = ∑ a k x ( n − k‬‬
‫)‪(1-2‬‬
‫ﺳﭙﺲ ﺧﻄﺎي ﺑﻴﻦ ﻣﻘﺪار ﻧﻤﻮﻧﻪ اﺻﻠﻲ و ﻣﻘﺪار ﭘﻴﺶ ﺑﻴﻨﻲ ﺷﺪه‬
‫)‪(2-2‬‬
‫)‪d ( n) = x( n) − x p ( n‬‬
‫ﺑﻪ )‪ d(n‬ﻛﻮاﻧﺘﻴﺰه ﻣﻲ ﺷﻮد و ﺑﻮﺳﻴﻠﺔ ﻛﻠﻤﺔ ﻛﺪ )‪ ،c(n‬ﻛﺪ ﻣﻲ ﺷﻮد‪.‬‬
‫در دي ﻛﺪ ﻛﻨﻨﺪه‪ ،‬اﺑﺘﺪا ﻫﻤﺎن ﻣﻘﺪار ﭘﻴﺸﮕﻮﻳﻲ ﺷﺪه از روي ﻧﻤﻮﻧﻪ ﻫﺎي ﻗﺒﻠﻲ دي ﻛﺪ ﺷﺪه ﺳﺎﺧﺘﻪ ﻣﻲ ﺷﻮد‪ .‬اﻳﻦ ﻣﻘﺪار ﺳﭙﺲ ﺑﻪ‬
‫ﻣﻘﺪار ﺧﻄﺎي دي ﻛﺪ و ﻛﻮاﻧﺘﻴﺰه ﺷﺪه اﺿﺎﻓﻪ ﻣﻲ ﺷﻮد ﺗﺎ ﻣﻘﺪار ﻛﻮاﻧﺘﻴﺰه ﺷﺪه ﺑﺮاي ﻧﻤﻮﻧﻪ ﻓﻌﻠﻲ ﺑﺪﺳﺖ آﻳﺪ‪ .‬ﻳﻌﻨﻲ‪:‬‬
‫)‪(3-2‬‬
‫ﺑﻠﻮك دﻳﺎﮔﺮام ﻛﺪ ﻛﻨﻨﺪه و دي ﻛﺪ ﻛﻨﻨﺪه ﻳﻚ ﺳﻴﺴﺘﻢ ﻛﺪ ﻛﻨﻨﺪة ﭘﻴﺸﮕﻮ در ﺷﻜﻞ‪ 4‬ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪ .‬ﺳﻴﺴﺘﻢ ﻛﺪ ﻛﻨﻨﺪه ﭘﻴﺸﮕﻮ‬
‫ﻣﻌﻤﻮﻵً ﺑﻪ ﻣﺪوﻻﺳﻴﻮن ﻛﺪ ﺷﺪه ﺳﻴﮕﻨﺎل ﺗﻔﺎﺿﻠﻲ ﻳﺎ ‪ “DPCM”1‬ﺷﻨﺎﺧﺘﻪ ﻣﻲ ﺷﻮد‪ .‬ﻛﻠﻤﺔ »ﺗﻔﺎﺿﻠﻲ« ﺑﻪ اﻳﻦ ﻣﻮﺿﻮع اﺷﺎره ﻣﻲ ﻛﻨﺪ ﻛﻪ‬
‫ﺳﻴﮕﻨﺎل ﺧﻄﺎي ﭘﻴﺸﮕﻮﻳﻲ ﻛﺪ ﻣﻲﺷﻮد و ‪ “PCM”2‬ﺑﻪ ﻃﺮح ﻣﺪوﻻﺳﻴﻮن اﺷﺎره ﻣﻲ ﻛﻨﺪ ﻛﻪ در آن ﻫﺮ ﺑﻴﺖ ﻛﺪ ﺷﺪه ﻳﻚ ﺳﻤﺒﻞ اﺳﺖ‬
‫ﻛﻪ ﺑﻮﺳﻴﻠﻪ ﻳﻚ ﭘﺎﻟﺲ )ﺑﺎ داﻣﻨﻪ ﺻﻔﺮ ﻳﺎ ﻳﻚ( ﻧﺸﺎن داده ﻣﻲ ﺷﻮد‪ .‬ﻛﻮاﻧﺘﻴﺰه ﻛﺮدن ﻣﺴﺘﻘﻴﻢ ﻳﻚ ﻧﻤﻮﻧﺔ اوﻟﻴﻪ ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ در ﻛﺪ ﻛﺮدن‪،‬‬
‫”‪ “PCM‬ﻧﺎﻣﻴﺪه ﻣﻲ ﺷﻮد‪ .‬در ﺻﻮرﺗﻲ ﻛﻪ ﺳﻴﮕﻨﺎل ﺗﻔﺎﺿﻠﻲ ﺗﻨﻬﺎ ﺣﺎﺻﻞ ﺗﻔﺎﺿﻞ ﻧﻤﻮﻧﻪ ﻓﻌﻠﻲ ﺑﺎ ﻧﻤﻮﻧﻪ ﻗﺒﻠﻲ ﺑﺎﺷﺪ ﺑﻪ ﻣﺪوﻻﺳﻴﻮن‪،‬‬
‫"‪ "DPCM‬و در ﺻﻮرﺗﻲ ﻛﻪ ﺑﺮ اﺳﺎس وزﻧﻲ از ‪ n‬ﻧﻤﻮﻧﻪ ﻗﺒﻠﻲ ﺑﺎﺷﺪ‪ 3"ADPCM " ،‬ﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد‪.‬‬
‫‪1‬‬
‫)‪Differential Pulse coded modulation (DPCM‬‬
‫)‪Pulse coded modulation (PCM‬‬
‫‪3‬‬
‫)‪Adaptive Differential Pulse coded modulation (ADPCM‬‬
‫‪2‬‬
‫ﺷﻜﻞ‪ -4‬ﻛﺪ ﻛﺮدن ﭘﻴﺸﮕﻮﻳﺎﻧﻪ )اﻟﻒ( ﻛﺪ ﻛﻨﻨﺪه )ب( دي ﻛﺪ ﻛﻨﻨﺪه‬
‫در اﻳﻦ ﺗﻤﺮﻳﻦ‪ ،‬ﺷﻤﺎ ﺑﺎﻳﺪ ﻳﻚ ﺗﺎﺑﻊ ﺑﺎ ﻧﺎم ‪ DPCM.m‬ﺑﻨﻮﻳﺴﻴﺪ‪ .‬اﻳﻦ ﺗﺎﺑﻊ‪ ،‬ﻳﻚ ﻓﺎﻳﻞ ﺻﻮﺗﻲ و ﻧﻴﺰ ﺗﻌﺪاد ﺑﻴﺖﻫﺎي ﺧﺮوﺟﻲ را ﮔﺮﻓﺘﻪ و‬
‫ﺑﺮدار ﺗﻔﺎﺿﻞ ﻧﻤﻮﻧﻪﻫﺎ را ﺑﺮﻣﻲﮔﺮداﻧﺪ‪:‬‬
‫)‪function [diff,err]=dpcm(infilename,n‬‬
‫ﻓﺎﻳﻞ ﺻﻮﺗﻲ ورودي ‪ 16‬ﺑﻴﺘﻲ ﺑﻮده و آن را ﺑﻪ ﺻﻮرت زﻳﺮ ﻓﺮاﺧﻮاﻧﻲ ﻧﻤﺎﻳﻴﺪ‪:‬‬
‫;)'‪[y,f,n]=wavread('org.wav','native‬‬
‫ﺗﺎﺑﻊ ﺷﻤﺎ ﺑﺎﻳﺪ‪:‬‬
‫اﻟﻒ(ﺗﻔﺎوت ﻫﺮ دو ﻧﻤﻮﻧﻪ ﻣﺘﻮاﻟﻲ از ﺳﻴﮕﻨﺎل ورودي را ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ‪ ).‬از ﺗﺎﺑﻊ‪ diff‬در ‪ MATLAB‬اﺳﺘﻔﺎده ﻧﻤﺎﻳﻴﺪ‪.(.‬‬
‫ب(اﻳﻦ ﺗﻔﺎوتﻫﺎ را در ﻣﺤﺪوده ]‪ [-2n-1,2n-1-1‬ﻛﻮاﻧﺘﻴﺰه ﺧﻄﻲ ﻛﺮده و ﺧﺮوﺟﻲ را در ﻳﻚ ﺑﺮدار ﺑﺎ ﻧﺎم ‪ diff‬ذﺧﻴﺮه ﻧﻤﺎﻳﺪ‪.‬‬
‫ج(ﻫﻤﭽﻨﻴﻦ ﻳﻚ ﺑﺮدار ﺑﺎ ﻧﺎم ‪ err‬اﻳﺠﺎد ﻧﻤﺎﻳﺪ ﻛﻪ ﺗﻔﺎوت ﻫﺮ دراﻳﻪ ‪ diff‬را ﺑﺎ ﻣﻘﺪار آن ﭘﻴﺶ از ﻛﻮاﻧﺘﻴﺰه ﻛﺮدن را ﻧﺸﺎن دﻫﺪ‪.‬‬
‫د( ﺗﺎﺑﻊ ‪ idpcm.m‬را ﻧﻴﺰ ﻛﻪ ﻋﻜﺲ ﺗﺎﺑﻊ ﻓﻮق اﺳﺖ ﭘﻴﺎده ﺳﺎزي ﻧﻤﺎﻳﻴﺪ‪ .‬اﻳﻦ ﺗﺎﺑﻊ‪ ،‬اوﻟﻴﻦ ﻧﻤﻮﻧﻪ ﺳﻴﮕﻨﺎل اﺻﻠﻲ را ﺑﻪ ﻫﻤﺮاه ﺑﺮدار ‪diff‬‬
‫ﮔﺮﻓﺘﻪ و ﺳﻴﮕﻨﺎل اوﻟﻴﻪ را ﺑﺎزﺳﺎزي ﻣﻲﻧﻤﺎﻳﺪ‪.‬‬
‫ه( ﺗﻔﺎوت ﺳﻴﮕﻨﺎل ﺑﺎزﺳﺎزي ﺷﺪه و ﺳﻴﮕﻨﺎل اوﻟﻴﻪ را ﻣﺤﺎﺳﺒﻪ ﻧﻤﻮده و ﺑﺎ ﺑﺮدار ‪ err‬ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ‪.‬‬
‫و( ﺑﻪ ﺳﻴﮕﻨﺎل اﺻﻠﻲ و ﺑﺎزﺳﺎزي ﺷﺪه ﮔﻮش دﻫﻴﺪ‪ .‬ﭼﻪ ﺗﻔﺎوﺗﻲ ﺑﻴﻦ آنﻫﺎ وﺟﻮد دارد؟‬
‫ز( ﻣﻘﺪار ‪ n‬را ﺑﻪ ‪ 3‬و‪ 2‬ﺗﻐﻴﻴﺮ داده و دوﺑﺎره ﺑﻪ ﺳﻴﮕﻨﺎلﻫﺎ ﮔﻮش دﻫﻴﺪ؟ آﻳﺎ ﺗﻐﻴﻴﺮ ﻣﻘﺪار ‪ n‬روي ﻛﻴﻔﻴﺖ ﺳﻴﮕﻨﺎل ﺑﺎزﺳﺎزي ﺷﺪه ﺗﺎﺛﻴﺮ‬
‫ﻗﺎﺑﻞ ﺗﻮﺟﻬﻲ دارد؟‬
‫ح( ﻣﻴﺰان ﺧﻄﺎ را ﺑﻪ دﺳﺖ آورﻳﺪ‪.‬‬
‫در اداﻣﻪ ﻧﻤﻮﻧﻪاي از آﻧﭽﻪ ﺑﺎﻳﺪ اﻧﺠﺎم دﻫﻴﺪ آورده ﺷﺪه اﺳﺖ‪:‬‬
‫‪X:0,10,15,12‬‬
‫‪∆X:10,5,-3‬‬
‫‪Diff (quantization for n=4):7,5,-3‬‬
‫‪ERR:3,0,0‬‬
‫‪X’:0,7,12,9‬‬
‫‪X-X’=0,3,3,3‬‬
‫‪-3‬‬
‫ﺑﺮرﺳﻲ ﻧﻤﻮدار اﺳﭙﻜﺘﺮوﮔﺮام ﺳﻴﮕﻨﺎل ﺻﻮت‬
‫ﻫﻤﺎﻧﮕﻮﻧﻪ ﻛﻪ ﻣﻲداﻧﻴﺪ‪ ،‬ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﮔﺴﺴﺘﻪ‪ ،‬ﻃﻴﻒ ﻓﺮﻛﺎﻧﺴﻲ ﺳﻴﮕﻨﺎل را در ﻛﻞ زﻣﺎنﻫﺎ ﻧﺸﺎن ﻣﻲدﻫﺪ؛ در ﺣﺎﻟﻲ ﻛﻪ در ﺑﺮﺧﻲ‬
‫ﻛﺎرﺑﺮدﻫﺎ‪ ،‬ﻧﻴﺎز ﺑﻪ ﻧﻤﺎﻳﺶ ﻃﻴﻒ ﻓﺮﻛﺎﻧﺴﻲ ﻣﺤﺪوده ﺧﺎﺻﻲ از ﺳﻴﮕﻨﺎل را دارﻳﻢ‪ .‬ﻳﻜﻲ از راﻫﻬﺎي ﺣﻞ اﻳﻦ ﻣﺸﻜﻞ‪ ،‬اﺳﺘﻔﺎده از ﺗﺒﺪﻳﻞ‬
‫)‪ Short-Time Fourier Transform (STFT‬ﺑﻪ ﺟﺎي ﺗﺒﺪﻳﻞ ‪ Discrete-Time Fourier Transform‬اﺳﺖ‪ .‬در اﻳﻦ‬
‫ﺗﺒﺪﻳﻞ‪ ،‬ﺳﻴﮕﻨﺎل ﺑﺮ روي ﻣﺤﻮر زﻣﺎن‪ ،‬ﺑﻪ ﺑﺎزهﻫﺎي ﻛﻮﭼﻚ زﻣﺎﻧﻲ ﺗﻘﺴﻴﻢ ﺷﺪه و ﺗﺒﺪﻳﻞ ﻓﻮرﻳﻪ ﺑﺮاي اﻳﻦ ﺑﺎزهﻫﺎي ﻛﻮﭼﻚ زﻣﺎﻧﻲ ﻣﺤﺎﺳﺒﻪ‬
‫ﻣﻲﮔﺮدد‪ .‬در اﻧﺘﻬﺎ‪ ،‬ﻧﻤﻮدار داﻣﻨﻪ ﺳﻴﮕﻨﺎل ﺑﺮ اﺳﺎس زﻣﺎن و ﻓﺮﻛﺎﻧﺲ رﺳﻢ ﻣﻲﮔﺮدد‪ .‬ﺗﺒﺪﻳﻞ ‪ STFT‬ﺑﻪ ﺻﻮرت زﻳﺮ ﻗﺎﺑﻞ ﺗﻌﺮﻳﻒ اﺳﺖ‪:‬‬
‫∞‪+‬‬
‫‪STFT ( x(t )) = X (τ , ω ) = ∫ x(t ) w(t − τ )e − jωt dt‬‬
‫∞‪−‬‬
‫∞‬
‫‪− j ωn‬‬
‫‪∑ x[n]w[n − m]e‬‬
‫= ) ‪STFT ( x[n]) = X (m, ω‬‬
‫∞‪n = −‬‬
‫ﻛﻪ در آن‪ w(t)،‬ﻳﺎ ]‪ w[n‬ﺗﺎﺑﻊ ﭘﻨﺠﺮه ﻣﻲﺑﺎﺷﺪ‪.‬‬
‫ﻳﻚ ﻧﻤﻮدار اﺳﭙﻜﺘﺮوﮔﺮام‪ ،‬ﻧﻤﺎﻳﺶ دﻫﻨﺪه داﻣﻨﻪ ﺗﺒﺪﻳﻞ ‪ STFT‬ﺑﺮ روي ﻧﻤﻮدار زﻣﺎن‪ -‬ﻓﺮﻛﺎﻧﺲ ﻣﻲﺑﺎﺷﺪ‪ .‬اﻳﻦ ﻧﻤﻮدار‪ ،‬ﺑﺮاي ﺗﺤﻠﻴﻞ‬
‫ﺗﻐﻴﻴﺮات ﻓﺮﻛﺎﻧﺴﻲ ﺳﻴﮕﻨﺎل ﺻﻮت در ﻃﻮل زﻣﺎن ﻣﻨﺎﺳﺐ اﺳﺖ‪ .‬در ﻳﻚ ﻧﻤﻮدار اﺳﭙﻜﺘﺮوﮔﺮام‪ ،‬ﻣﺤﻮر اﻓﻘﻲ‪ ،‬ﻣﺤﻮر زﻣﺎن و ﻣﺤﻮر‬
‫ﻋﻤﻮدي‪ ،‬ﻓﺮﻛﺎﻧﺲ اﺳﺖ‪ .‬رﻧﮓ ﻧﻤﻮدار در ﻫﺮﻧﻘﻄﻪ‪ ،‬داﻣﻨﻪ ﺳﻴﮕﻨﺎل را در آن زﻣﺎن و ﻓﺮﻛﺎﻧﺲ ﻣﺸﺨﺺ ﻣﻲﻧﻤﺎﻳﺪ‪.‬‬
‫ﺷﻜﻞ ‪ :5‬ﻧﻤﻮدار اﺳﭙﻜﺘﺮوﮔﺮام ﻛﻠﻤﻪ ‪[2] compute‬‬
‫در ﺷﻜﻞ ‪ ،5‬ﻣﺤﻮر اﻓﻘﻲ‪ ،‬ﻣﺤﻮر زﻣﺎن و ﻣﺤﻮر ﻋﻤﻮدي‪ ،‬ﻣﺤﻮر ﻓﺮﻛﺎﻧﺲ را ﺗﺎ ‪ 8000‬ﻫﺮﺗﺰ ﻧﺸﺎن ﻣﻲدﻫﺪ‪ .‬رﻧﮓﻫﺎ ﻧﻴﺰ ﻣﻬﻤﺘﺮﻳﻦ ﭘﻴﻚ‪-‬‬
‫ﻫﺎي ﺻﻮﺗﻲ را ﺑﻪ ازاي ﻫﺮ ﻓﺮﻳﻢ زﻣﺎن ﻣﺸﺨﺺ ﻣﻲﻧﻤﺎﻳﻨﺪ‪ .‬در اﻳﻦ ﺗﺼﻮﻳﺮ‪ ،‬رﻧﮓ ﻗﺮﻣﺰ ﺑﻴﺸﺘﻴﻦ اﻧﺮژي و ﺑﻌﺪ از آن ﺑﻪ ﺗﺮﺗﻴﺐ رﻧﮓﻫﺎي‬
‫ﻧﺎرﻧﺠﻲ‪ ،‬زرد‪ ،‬ﺳﺒﺰ ‪ ،‬ﻓﻴﺮوزهاي‪ ،‬آﺑﻲ‪ ،‬ﻛﻬﺮﺑﺎﻳﻲ‪ ،‬ﺧﺎﻛﺴﺘﺮي و ﺳﻔﻴﺪ داراي اﻧﺮژي ﻛﻤﺘﺮي ﻫﺴﺘﻨﺪ‪.‬‬
‫ﻳﻜﻲ از ﻛﺎرﺑﺮدﻫﺎي اﻳﻨﮕﻮﻧﻪ ﺗﺼﺎوﻳﺮ‪ ،‬ﺷﻨﺎﺧﺖ آواﻫﺎﺳﺖ‪ .‬ﻳﻚ ﻧﻤﻮدارﺧﻮان ﺣﺮﻓﻪاي ﺑﻪ راﺣﺘﻲ ﻣﻲﺗﻮاﻧﺪ ﻛﻠﻤﻪ ”‪ “compute‬را از‬
‫روي ﻧﻤﻮدار ﻓﻮق ﺗﺸﺨﻴﺺ دﻫﺪ اﻣﺎ ﺑﺮاي اﻓﺮاد ﻋﺎدي اﻳﻦ ﻛﺎر‪ ،‬ﻛﻤﻲ ﺳﺨﺖ ﺑﻪ ﻧﻈﺮ ﻣﻲرﺳﺪ‪ .‬در ﻳﻚ ﻧﻤﻮدار اﺳﭙﻜﺘﺮوﮔﺮام‪ ،‬ﻫﺮ آوا‪،‬‬
‫اﻟﮕﻮي ﻣﺨﺼﻮص ﺑﻪ ﺧﻮد را داراﺳﺖ ﻛﻪ ﺑﻪ اﻳﻦ اﻟﮕﻮ‪ formant ،‬ﮔﻔﺘﻪ ﻣﻲﺷﻮد‪.‬‬
‫ﺷﻜﻞ ‪ :6‬ﻧﻤﻮدار ‪ formant‬ﺑﺮاي آواي @ در ﻛﻠﻤﻪ ‪[2] bat‬‬
‫ﻫﻤﺎﻧﮕﻮﻧﻪ ﻛﻪ اﺷﺎره ﺷﺪ‪ ،‬ﻧﻤﻮدار اﺳﭙﻜﺘﺮوﮔﺮام‪ ،‬ﻣﻲﺗﻮاﻧﺪ ﺗﺼﻮﻳﺮي از ﻓﺮﻛﺎﻧﺲﻫﺎي ﺳﻴﮕﻨﺎل را در ﺑﺎزه ﻣﺤﺪودي از زﻣﺎن ﻧﺸﺎن دﻫﺪ‪.‬‬
‫اﮔﺮ ﺑﺎزه زﻣﺎﻧﻲ ﻣﻮرد ﺑﺮرﺳﻲ‪ ،‬ﻛﻮﺗﺎه در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮد‪ ،‬دﻧﺒﺎل ﻛﺮدن ﺗﻐﻴﻴﺮات ﻓﺮﻛﺎﻧﺴﻲ ﺳﻴﮕﻨﺎل آﺳﺎن ﺧﻮاﻫﺪ ﺑﻮد‪ .‬ﺑﺎ اﻳﻦ وﺟﻮد‪ ،‬ﺑﻪ‬
‫دﻟﻴﻞ ﻣﻴﺰان اﻃﻼﻋﺎت ﻛﻢ در ﻳﻚ ﺑﺎزه زﻣﺎﻧﻲ ﻣﺤﺪود‪ ،‬اﻧﺪازهﮔﻴﺮي دﻗﻴﻖ ﻓﺮﻛﺎﻧﺲ ﺳﻴﮕﻨﺎل ﺑﺴﻴﺎر دﺷﻮار ﺧﻮاﻫﺪ ﺑﻮد‪ .‬از ﺳﻮي دﻳﮕﺮ‪ ،‬در‬
‫ﻧﻈﺮ ﮔﺮﻓﺘﻦ ﺑﺎزه زﻣﺎﻧﻲ ﺑﻴﺸﺘﺮ‪ ،‬ﻋﻠﻴﺮﻏﻢ ﺑﻬﺒﻮد در دﻗﺖ اﻧﺪازهﮔﻴﺮي ﻓﺮﻛﺎﻧﺲ‪ ،‬ﻣﺎﻧﻊ دﻧﺒﺎل ﻛﺮدن دﻗﻴﻖ ﺗﻐﻴﻴﺮات ﻓﺮﻛﺎﻧﺲ ﻣﻲﮔﺮدد‪ .‬ﺑﺮاي‬
‫ﻣﺜﺎل‪ ،‬ﺑﺮاي ﻳﻚ ﺳﻴﮕﻨﺎل ﻛﻪ ﺣﺎﺻﻞ ﺟﻤﻊ دو ﺳﻴﮕﻨﺎل ﺳﻴﻨﻮﺳﻲ ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﺗﻘﺮﻳﺒﺎ ﻣﺸﺎﺑﻪ اﺳﺖ‪ ،‬ﺑﺮاي ﺟﺪاﺳﺎزي دﻗﻴﻖ ﻓﺮﻛﺎﻧﺲﻫﺎ از ﻫﻢ‪،‬‬
‫ﺑﻪ ﺑﺎزه زﻣﺎﻧﻲ ﻃﻮﻻﻧﻲ ﻧﻴﺎز اﺳﺖ‪ .‬در اﻳﻦ ﺗﻤﺮﻳﻦ‪ ،‬از ﺷﻤﺎ ﺧﻮاﺳﺘﻪ ﻣﻲﺷﻮد ﻛﻪ اﻳﻦ ‪ trade-off‬را ﺑﻴﻦ ﻃﻮل ﻣﺤﺪوده زﻣﺎﻧﻲ و‬
‫وﺿﻮح ﻓﺮﻛﺎﻧﺲ ﺑﺮرﺳﻲ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -1-3‬ﺳﻴﮕﻨﺎل زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪ .‬اﻳﻦ ﺳﻴﮕﻨﺎل ﻳﻚ ‪ beat-note‬اﺳﺖ‪.‬‬
‫) ‪x(t ) = A cos(2π ( f c − f ∆ )t ) + B cos(2π ( f c + f ∆ )t‬‬
‫ﺳﻴﮕﻨﺎل ﺑﺎﻻ را در ﻣﺤﻴﻂ ‪ MATLAB‬رﺳﻢ ﻛﺮده و ﻧﻤﺎﻳﺶ دﻫﻴﺪ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ soundsc‬ﺑﻪ اﻳﻦ ﺳﻴﮕﻨﺎل ﮔﻮش ﻛﻨﻴﺪ‪.‬‬
‫‪ -2-3‬ﺣﺎل ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮرات زﻳﺮ‪ ،‬ﻧﻤﻮدار اﺳﭙﻜﺘﺮوﮔﺮام ﺳﻴﮕﻨﺎل را رﺳﻢ ﻛﻨﻴﺪ‪) .‬دﺳﺘﻮر ‪ specgram‬در ﻧﺴﺨﻪﻫﺎي ﺟﺪﻳﺪ‬
‫‪ MATLAB‬ﺑﺎ دﺳﺘﻮر ‪ spectrogram‬ﺟﺎﻳﮕﺰﻳﻦ ﺷﺪه اﺳﺖ‪ .‬اﻣﺎ در اﻳﻦ ﻗﺴﻤﺖ از ﺗﻤﺮﻳﻦ‪ ،‬از ﺷﻤﺎ ﺧﻮاﺳﺘﻪ ﻣﻲﺷﻮد ﻛﻪ ﺑﺎ ﻫﻤﺎن‬
‫دﺳﺘﻮر ﻗﺒﻠﻲ ﻛﺎر ﻛﻨﻴﺪ‪ .‬در اﻳﻦ دﺳﺘﻮر‪ ،nfft،‬ﻃﻮل ﭘﻨﺠﺮه ‪ Hamming‬ﻣﻮرد اﺳﺘﻔﺎده ﺟﻬﺖ ﺑﺮش ﺳﻴﮕﻨﺎل و ‪ ،fs‬ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪﺑﺮداري‬
‫ﺳﻴﮕﻨﺎل اﺳﺖ‪(.‬‬
‫;‪nfft=2048‬‬
‫;)‪specgram(x,nfft,fs‬‬
‫;))‪colormap(1-gray(256‬‬
‫آﻳﺎ در اﻳﻦ ﻧﻤﻮدار‪ ،‬ﻓﺮﻛﺎﻧﺲﻫﺎي ﺳﻴﮕﻨﺎل ﺑﻪ ﺧﻮﺑﻲ ﻣﺸﺨﺺ ﻫﺴﺘﻨﺪ؟ ﺑﺮاي وﺿﻮح ﺑﻴﺸﺘﺮ ﻣﻲﺗﻮاﻧﻴﺪ روي ﻧﻤﻮدار زوم ﻛﻨﻴﺪ ‪.‬‬
‫‪ -3-3‬ﺣﺎل در ﻳﻚ ﺣﻠﻘﻪ ‪ ،for‬ﻣﻘﺪار ‪ nfft‬را ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪.‬‬
‫]‪nfft = [2048,1024,256,128,64‬‬
‫ﺣﺎل ﻧﻤﻮدارﻫﺎي ﺧﺮوﺟﻲ اﻳﻦ ﻗﺴﻤﺖ را ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﻣﻘﺎﻳﺴﻪ ﻧﻤﺎﻳﻴﺪ‪ .‬آﻳﺎ ﺗﻐﻴﻴﺮ اﻧﺪازه ‪ nfft‬ﺑﺮ وﺿﻮح ﺗﺼﻮﻳﺮ و ﻧﻤﺎﻳﺶ ﺟﺰﺋﻴﺎت‬
‫ﻓﺮﻛﺎﻧﺴﻲ ﺗﺎﺛﻴﺮ ﮔﺬار اﺳﺖ؟ ﺑﻪ ﻧﻈﺮ ﺷﻤﺎ ﺑﻬﺘﺮﻳﻦ ﻃﻮل ﭘﻨﺠﺮه در اﻳﻦ ﺑﺮرﺳﻲ‪ ،‬ﭼﻘﺪر اﺳﺖ؟‬
‫‪ -4-3‬ﺣﺎل دﺳﺘﻮر ‪ specgram‬را ﺑﺎ دﺳﺘﻮر ‪ spectrogram‬ﺟﺎﻳﮕﺰﻳﻦ ﻛﻨﻴﺪ‪ .‬ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﺑﺎ اﺳﺘﻔﺎده از ‪،HELP‬‬
‫ﻣﺘﻐﻴﺮﻫﺎي ورودي را ﺑﻪ درﺳﺘﻲ ﻣﺸﺨﺺ ﻧﻤﺎﻳﻴﺪ‪ .‬ﻛﺪ زﻳﺮ ﻧﻤﻮﻧﻪاي از اﺳﺘﻔﺎده از اﻳﻦ دﺳﺘﻮر را ﻧﺸﺎن ﻣﻲدﻫﺪ‪:‬‬
‫;)‪spectrogram(x,nfft,nfft-10,nfft,fs‬‬
‫ﻗﺴﻤﺖ ‪ 3-3‬را ﻧﻴﺰ ﺑﺮاي اﻳﻦ ﻗﺴﻤﺖ ﺗﻜﺮار ﻛﻨﻴﺪ و ﻧﺘﺎﻳﺞ را ﺗﺤﻠﻴﻞ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -5-3‬ﻛﺪ زﻳﺮ را در ﻳﻚ ﻓﺎﻳﻞ در ‪ MATLAB‬ذﺧﻴﺮه ﻛﺮده و ﻧﺘﺎﻳﺞ را ﺗﺤﻠﻴﻞ ﻧﻤﺎﻳﻴﺪ‪ .‬در اﻳﻦ ﻗﺴﻤﺖ‪ ،‬ﺑﻬﺘﺮﻳﻦ اﻧﺪازه ‪ nfft‬ﺑﺮاي‬
‫ﻧﻤﺎﻳﺶ ﺗﻐﻴﻴﺮات ﻓﺮﻛﺎﻧﺴﻲ ﺳﻴﮕﻨﺎل ﭼﻘﺪر اﺳﺖ؟‬
‫‪fsamp =11025; % set sampling frequency‬‬
‫‪dt =1/fsamp; % set sampling interval‬‬
‫‪dur = 1.5;%set signal duration in seconds‬‬
‫‪tt=0:dt:dur; % create vector of time samples‬‬
‫‪psi =2*pi*(100+200*tt+500*tt.*tt);% set argument for chirp function‬‬
‫‪xx=7.7*cos(psi);% modulate signal‬‬
‫‪soundsc(xx,fsamp);% play signal‬‬
‫‪for nfft = [2048,1024,256,128] % Window size‬‬
‫‪% Compute spectrogram in Hamming window‬‬
‫;‪figure‬‬
‫;)‪specgram(xx,nfft,fsamp‬‬
‫‪end‬‬
‫‪ -6-3‬ﺑﻬﺘﺮﻳﻦ اﻧﺪازه ‪ nfft‬در ﻗﺴﻤﺖ ‪ 3-3‬و ‪ 5-3‬را ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ؟ آﻳﺎ ﻧﺘﺎﻳﺞ ﺣﺎﺻﻞ از ‪ 3-3‬و ‪ 5-3‬ﻣﻲﺗﻮاﻧﻨﺪ ‪ trade-off‬ذﻛﺮ‬
‫ﺷﺪه در اﻳﻦ ﺗﻤﺮﻳﻦ را ﺑﻪ ﺷﻤﺎ ﻧﺸﺎن دﻫﻨﺪ؟‬
‫‪-4‬‬
‫ﻓﻴﺘﻠﺮ ﻛﺮدن ﺳﻴﮕﻨﺎل ﺻﻮت‬
‫‪ -1-4‬ﻳﻚ ﻓﺎﻳﻞ ﺻﻮﺗﻲ ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪﺑﺮداري‪ 8 ،‬ﻛﻴﻠﻮﻫﺮﺗﺰ را در ‪ MATLAB‬ﺑﺨﻮاﻧﻴﺪ‪.‬‬
‫‪ -2-4‬ﻳﻚ ﺳﻴﮕﻨﺎل ﺳﻴﻨﻮﺳﻲ ﺑﺎ ﺗﻌﺪاد ﻧﻤﻮﻧﻪﻫﺎي ﻫﻤﺎن ﻓﺎﻳﻞ ﺻﻮﺗﻲ و ﺑﺎ ﻓﺮﻛﺎﻧﺲ ‪ 3.5‬ﻛﻴﻠﻮﻫﺮﺗﺰ در ‪ MATLAB‬ﺑﺴﺎزﻳﺪ‪.‬‬
‫ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪﺑﺮداري را ‪ 8‬ﻛﻴﻠﻮﻫﺮﺗﺰ اﻧﺘﺨﺎب ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -3-4‬اﻳﻦ دو ﺳﻴﮕﻨﺎل را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻧﻤﺎﻳﻴﺪ‪ .‬ﻧﻤﻮدار آن را ﻧﻤﺎﻳﺶ داده و ﺑﻪ ﺳﻴﮕﻨﺎل ﺟﺪﻳﺪ ﮔﻮش ﻛﻨﻴﺪ‪.‬‬
‫‪ -4-4‬ﺑﺎ اﺳﺘﻔﺎده از ﻳﻚ ﻓﻴﻠﺘﺮ ﺑﺎﻻﮔﺬر‪ ،‬ﺳﻴﮕﻨﺎﻟﻲ را ﻛﻪ ﺳﺎﺧﺘﻪاﻳﺪ ﻓﻴﻠﺘﺮ ﻧﻤﺎﻳﻴﺪ) ﻣﻲﺗﻮاﻧﻴﺪ از ﺗﻤﺮﻳﻦ ‪ 4‬از ‪ HW-1‬ﻛﻤﻚ‬
‫ﺑﮕﻴﺮﻳﺪ‪ .(.‬ﻓﺮﻛﺎﻧﺲ ﻗﻄﻊ ﻓﻴﻠﺘﺮ را ﻃﻮري اﻧﺘﺨﺎب ﻧﻤﺎﻳﻴﺪ ﻛﻪ ﺳﻴﮕﻨﺎل ﺳﻴﻨﻮﺳﻲ را ﻓﻴﻠﺘﺮ ﻧﻤﺎﻳﺪ‪ .‬ﻃﻮل ﻓﻴﻠﺘﺮ را ‪ 50‬ﺑﮕﺬارﻳﺪ‪ .‬دﻗﺖ‬
‫ﻛﻨﻴﺪ ﻛﻪ ﻓﻴﻠﺘﺮ ﺑﺎﻻﮔﺬر ﺑﺎﺷﺪ‪.‬‬
‫‪ -5-4‬ﺑﻪ ﺳﻴﮕﻨﺎل ﺟﺪﻳﺪ ﮔﻮش دﻫﻴﺪ‪ .‬ﭼﻪ ﺗﻔﺎوﺗﻲ ﺑﺎ ﺳﻴﮕﻨﺎل ﻗﺒﻠﻲ دارد؟‬
‫ﻣﺮاﺟﻊ‬
[1]. B.Smith, “Instantaneous Companding of Quantized Signals”, Bell System Tech. J., Vol.36, No.3,
pp.653-709, May 1957.
[2]. http://cslu.cse.ogi.edu/tutordemos/SpectrogramReading/spectrogram_reading.html