# Sounds

박경민·2023년 6월 29일

[Linguistics]

목록 보기
2/7

Vowel cues

F1: 높이
F2: backness
F3: 조금 더 personal charateristics

  • 각 모음들이 어떤 주파수에서 boost 되는지?
  • high vowel 은 F1이 낮게 나온다 (low vowel은 F1이 높다.)
  • front vowel 일수록 F2가 높다 (대표적인 예가 i소리가 나는 것들.) back vowel 예컨대 u종류라면 F2가 낮다.
  • 따라서 F1, F2의 경우 low + back 이면 거리가 가깝고, high + front 일수록 거리가 멀다.
  • Siri 나 다른 음성인식 기기를 처음 실행시킬 때 테스트 과정이 있다면 특히나 F3를 본다

같은 F1,2,3 를 진하기로 나타낸 것이 Spectogram 이다.

이중모음의 경우 음가가 중간에 변한다. 따라서 F1,2,3가 stable 하지 않고 변하는 모양을 보인다. 또다시 그 외에도 Personal chracteristics 등 위 스펙토그램이 조금씩 달라질 여지는 있다.

정보의 판단은 보통 F1, F2를 관찰을 주로 하나 u과 같이 F2,3 가 만나는 지점이 있다면 앞 또는 뒤에 k,g와 같은 자음이 왔음을 유추할 수도..

Consonant cues

자음은 그 자체의 스펙토그램에서도 힌트를 얻을 순 있으나 위에서 봤던 것처럼 모음을 보고 유추하기도 한다. 이를 locus 라 함!

  1. Stops
    멈추었다가 터뜨리는 소리. 따라서 멈추는 구간에서 소리가 없어 하얗게 표시가 되고, 입을 여는 순간 터지는 형태다. 이때 생기는 라인은 vertical line.

/p/, /t/, /k/, /b/, /d/,/g/ 의 모양이다.
/p/, /t/, /k/ 은 다른 /b/, /d/, /g/ 와는 조금 달라보인다. 후자 것들은 바로 모음이 이어지는 것같지만 앞의 것들은 모음이 나오기 전 burst 되고 진동하는 시간이 필요하다. 이러한 차이는 무성음/유성음에서 비롯되었을 것이다.

  1. Fricative
    좁은 입안 공간에서 마찰을 일으키며 내는 소리이다. 그림으로 보면 noise 들이 깔린 것처럼 보인다. s, sh, f 등의 소리를 말한다.

Fricative 안에서의 구별은 지지직 거리는 주파수로 구별한다. 4000이상에서 진동하면 s, 쉬 소리는 2000이상에서, th 소리는 6000 정도에서 나타난다. 추가로 f, v 는 low F2 locus 를 보인다.

유성음 vs. 무성음의 경우 무성음이 더 진하게 나타난다. 이는 위의 그림에서 가운데 기준으로 왼/오른쪽으로 구분하면 된다. 왼쪽은 연하고, 오른쪽은 진하다! s, sh 가 에너지가 많다. (물리적 이유) h는 대표적인 에너지가 부족하여 연하게 나타나는 자음이다. 그럼 어떻게 h인지 확인할까? 각 언어에는 조합할 수 있는 소리의 조합이 있고, 따라서 나머지 소리들을 detect 할 수 있다면, 알 수 있다. (1. Phonotactic 접근) 또한 들린 것만을 기준으로 의미를 따져 놓친 소리들을 채워넣는 방법으로 음성 인식을 할 수 있다. (2. 의미 기준으로 예측)

  1. Affricates
    stop + fricatives = affricates!, 즉 stop > burst > buzzing 과정을 거친다.

  2. Nasal
    모음 중 sonorant 는 자음 중 공명이 센 소리를 말한다. m, n, ng 소리가 있다.

  3. Liquids & glides
    각각 ㄹ 소리와 이중모음을 만들 때 들어가는 소리(반모음, 반자음)을 말한다. 따라서 glides 에 있어서 stable formants 는 잘 없다.

Praat

praat 프로그램을 이용해 음성에 듣고 라벨을 달아보자. 결과를 word 파일로 저장할 수 있다.

CMUbet dictionary

CMUbet 에는 각 단어와 매칭되는 발음기호들이 있다.

1. '문자열' > '발음기호' 2. '발음기호' > '문자열' 변환을 수행했다.

✅ 문자열 > 발음기호

from google.colab import drive
drive.mount('/content/gdrive')
%cd '/content/gdrive/My Drive/

filename = 'cmubet.txt'
f = open(filename, 'r')  
data = f.read()
f.close()

data = data.replace('\t', '   ')
data = data.split('\n')

dict = {}
for word in data:
  real_word = word.split()[0]
  phonetic = word.split('   ')[1]
  dict[real_word] = phonetic 
  
sent1 = 'They jump over the fence'
sent2 = 'THe sun gently warmed the soft, green grass in the peaceful meadow'
sent1 = sent1.upper()
sent2 = sent2.upper()

make_sent1 = ''
sent1 = sent1.split()
for word in sent1:
  if word in dict.keys(): 
    make_sent1 += dict[word]
    make_sent1 += ' '
make_sent2 = ' ' 
sent2 = sent2.split()
for word in sent2:
  if word in dict.keys():
    make_sent2 += dict[word]
    make_sent2 += ' '

sent1 = 'They jump over the fence'
sent2 = 'THe sun gently warmed the soft, green grass in the peaceful meadow'

두가지가 변환할 문장이었고, 딕셔너리를 만들어 CMUbet 에 있는 단어와 발음 기호를 반복문을 돌며 단어: 발음기호 순으로 정리했다.

이제 sent1과 sent2 를 각각 쪼갠 다음 그 단어가 CMUbet 에 있는 단어이면 발음기호를 붙인 새로운 문장을 반환하는 것으로 했다. 결과는 다음과 같다!

✅ 발음기호 > 문장

dict_swap = {v:k for k,v in dict.items()}
phonetics = 'AY  L AY K  T UW  R EH D  AH  B UH K'
phonetics = phonetics.split('  ') 
real_sent = ''
for ph in phonetics:
  if ph in dict_swap:
    real_sent += dict_swap[ph]
    real_sent += '  '

이번엔 발음기호 'AY L AY K T UW R EH D AH B UH K'가 주어졌을 때 이를 정상적인 단어로 바꾸는 코드이다. 다른 리스트를 만들지 않고 키와 값을 뒤집은 dict_swap 을 하나 만들었다. 발음 기호가 사전에 있으면 단어를 붙이는 식으로 코드를 짰고, 결과는 다음과 같다.

Prosody (suprasegmental features)

초분절적 요소라 한다.

  • Stress, intonaiton, rhythm, tone 등이 있음!

Intonation

분절적 요소가 의미에 있어서 애매할 때는? > 비분절적인 요소인 Intonation 을 쓴다.음의 높낮이가 intonation 에 속한다.

  • 그러나 Intonation 은 사람마다 매우 다른 요소이긴 하다.
  • 과거엔 intonation 기반 영어 교육 앱이 있었으나 실패했다.

마지막 끝의 tone 을 보고 falling 과 rising 을 판단하고, 적용해볼 수 있다. typewriter 에서 문장의 끝에 마침표를 찍을지 물음표를 찍을지 결정할 수 있다.
Falling >> Statements. Wh-questions, Commands
Rising >> Yes-no questions, Uncertainly or imcompleteness, Requests

Phonology

어떤 combinations of sounds 가 세상에 존재하는지 아닌지. and 가능한지 아닌지 다루는 분야.
black은 세상에 존재하며 가능하다. blick 은 가능하지만 존재하지 않는다. (lexicla gap) lbick 은 아예 가능하지 않는 단어이다. (impossible word)

또한 Phonology 는 왜 certain phonetic features 가 단어를 인식하는데 있어서 중요한지 설명해준다. 대표적으로 vocing 여부는 pin / bin 에서 p, b로 확인할 수 있으며, 이때 구분되는 p,b는 phoneme 이다. 또 aspiration 여부로 pin / spin 에서 p는 다른 조건에서 다른 발음이 된다. (같은 p가 다른 조건에서 다른 phone 이 되는 allophone)

  • Assimilation
    신라는 ㄴ발음이 아니라 [실라] 와 같이 발음된다. 따라서 음성인식을 했을 때 문제.
  • Dissimilation
  • Insertion
  • Deletion
  • Devoicing
profile
Mathematics, Algorithm, and IDEA for AI research🦖

0개의 댓글