음성 인식 AI는 몇 점을 줄 수 있을까

in #kr4 years ago

확인해 보고 싶었다.

AI가 어느 정도로 음성을 인식할 수 있는지 확인해 보고 싶었다.


Google Cloud Speech-to-Text API 를 사용하는 방법이 있었다.

음성 녹음 파일이 있어야 하기에 팟캐스트를 찾아봤다. 그리고 대본도 있어야 했다.

AI가 인식한 내용과 대본을 비교해 보면 좋을 거 같았다.


김현정의 뉴스쇼가 방송 내용을 기사형태로 제공하는 게 생각났다.

신문기사로 여러 번 봤던 터였다.


그래. 김현정의 뉴스쇼로 비교해 보는 거야.


팟캐스트에서 MP3 파일을 다운로드하였다. 

AI가 인식하려면 AI 가 가장 좋은 성능이 나오는 파일로 변환해주어야 한다. 

무손실 음성파일인 FLAC 이 가장 좋은 성능이 나온다고 하여 FLAC으로 변환했다.


Google Cloud는 가입 후 첫 1년 동안 사용할 수 있도록 300불의 크레딧을 무료로 주고 있었다. 

예제로 나와 있는 소스가 있어서 많이 헤매지 않았다.

참고 자료 : https://cloud.google.com/speech-to-text/docs/async-recognize#speech-async-recognize-gcs-python


파이썬으로 코드를 짜고 결과를 확인해 봤다. 


음성을 인식되지 않은 구간도 있었고 다른 음성으로 인식한 구간도 있었다.

점수를 준다면 몇점을 줄수 있을까?

글자 수를 세어 보았다. 누락된 글자도 있고 제대로 인식되지 않은 글자도 있었다.

70점정도 줄수 있을거 같다. 

맞다. 70%정도 인식된다는 얘기다.


글자 한두 자 누락되어도 의미 전달에 문제가 없었지만

글자 한두 자 오타가 나면 완전히 다른 의미로 전달되어 내용 이해가 쉽지 않았다.

잘못 이해하는것보다는 아예 이해하지 못하는게 의미 전달에 유리한거 같다.


*CBS라디오  <김현정의 뉴스쇼> 를 인용하였다.

비교를 위해서 띄어쓰기는 일부 조정했다.


방송 내용 : 김현정> 이게   역대 제일 많은 1등 당첨금이에요?

음성 인식 :                 이게 지역대 제일 많은 1등 당첨금액


방송 내용 : 손수호> 굉장히 많은 돈이죠, 실제로. 여러 유혹에 빠질 수 있었어요. 

음성 인식 :                 굉장히 많은 금액이 줘 진짜로            빠질 수 있었어요


방송 내용 : 그런데 체계적으로 돈을 관리합니다. 가까운 가족들 일부 금액을 나눠주기도 했고요. 

음성 인식 : 그런데 체계적으로      관리합니다         가족들에게      나누어 주기도 했고


방송 내용 : 또 30억 원을 기부하면서 사회에 환원했습니다. 

음성 인식 :     30억 원을 기부하면서 사회   환원했습니다


방송 내용 : 100억 규모의 장학재단을 세우고 또 10억 원대 규모의 중소형대 재단을 만들어서 

음성 인식 :    백업 규모의 장학재단   세우고 또 10억 원대의      도중소염 재단을 만들어서 


방송 내용 : 분기별로 장학금 지원하고 독거 노인 지원 사업을 벌이고 있죠. 

음성 인식 : 분기별로 장학금 지원하고 독거 노인 지원 사업을 벌이고


방송 내용 : 성실하게 중소기업을 운영하기도 합니다.

음성 인식 : 성실하게 중소기업을 운영하기도


방송 내용 : 김현정> 원래는 경찰이셨던 분이?

음성 인식 :              원래는 경찰이 있었던 분이


방송 내용 : 손수호> 그렇습니다.

음성 인식 : (미인식)


방송 내용 : 김현정> 사업하면서?

음성 인식 :              사업하면서


방송 내용 : 손수호> 네.

음성 인식 : (미인식)


방송 내용 : 김현정> 결국은 이분도 제복 벗고 사업에 뛰어든 거니까 운 나빴으면 다른 사례들처럼 될 수도 있었던 거 아닌가요?

음성 인식 :                 2분도 저 옷 벗고 사업에 뛰어든 거니까   나빴으면 다른 사람들처럼 될 수   있었던 거 아니야


방송 내용 : 손수호> 그런데 꼭 그렇지는 않아요. 

음성 인식 :                         꼭 그렇지   않아요


방송 내용 : 일확천금의 꿈을 노리고 더 크게 불리기 위해서 사업을 한 건 아니고요. 

음성 인식 :                   구글 노리고 더 크게 불교에서        사고 난 건 아니고요


방송 내용 : 일부 금액을 사업에 투자했고 나머지는 또 부동산이나 예금 등으로 관리하고 있는데 여전히. 그것만 또 200억이에요.

음성 인식 : 일부 금액을 사업투자 있고   나머지는 또 부동산이나 예금 등으로 관리하고 있는데 여전히 그게 그건 말도 이래 여기에요


방송 내용 : 김현정> 그러니까 포트폴리오를 잘 짜가지고 한 바구니에 담지 않으셨군요.

음성 인식 :                            포트폴리오를 잘 자가지고 한 바구니에 담지 않으셨군요


방송 내용 : 손수호> 이런 말했습니다. 여유가 생기다 보니까 좀 더 긍정적인 삶을 살 수 있어서 좋다. 

음성 인식 :                   모르겠습니다 여유가 생긴다 보니까 좀 더 긍정적인 삶을 살 수 있어서 좋다


방송 내용 :  남에게 베풀며 살 수 있다는 것이 가장 큰 행복이다. 

음성 인식 : 아 이게 베풀며 살 수 있다는 것이 가장 큰 행복이다


방송 내용 : 앞으로도 재산을 많이 갖고 살겠다는 욕심보다는 어려운 이웃들을 지속적으로 도우며 평범하게 살고 싶다.

음성 인식 : 앞으로도 재산을 많이 갖고   사기단 욕심보다는 어려운 이웃들을 지속적으로 도움을 평범하게 살고 싶다


방송 내용 : 김현정> 그래요. 최근에 로또 살인 사건 벌어지면서 로또에 대한 이야기들,   그후에 어떤 삶을 사는 사람들이 있었을까. 

음성 인식 : 그래요 그 어제 최근에 제일 로또 살인사건 벌어지면서 로또에 대한 이야기들 그후에 다 어떤 삶을 사는 사람들이 있었을까


방송 내용 : 그 인간 군상들을 우리가 살펴본 건데 잘 된 경우와 비극으로 끝난 경우 어떤 차이점이 있던가요?

음성 인식 : 그 인간 군상들이 우리가 좀 살펴 본 건데 잘 되네  비극으로 끝난 경우 어떤 차를 좀 있던가요


방송 내용 : 손수호> 이 부분은 국내외 연구가 굉장히 많습니다. 

음성 인식 :            이 부분은 국내외 영국 왕실 많습니다


방송 내용 : 그래서 첫 번째 전문가들이 로또의 저주가 크게 두 가지 면에서 작용한다고 보는데 첫 번째가 인간 관계예요. 

음성 인식 : 그래서 첫 번째 전문가들이 롯데   저주가 크게 두 가지로      사용한다고 보는데 첫 번째가


방송 내용 :               미국 버지니아 대학 연구팀이 복권 당첨자들을 장기간 추적해서 연구했습니다. 

음성 인식 : 버지니아 미국 버지니아 대학 연구팀이 조건 당첨자들을 장시간 치료하고 있습니다


방송 내용 : 그랬더니 거액 당첨 후에 가족 관계 포함해서 인간 관계 무너지는 경우가 많다고 하는 거예요. 

음성 인식 : 그랬더니  고액당첨 후에 가족관계법         인간 관계 무너지는 경우가 많다고 할 거예요


방송 내용 : 결국 소소한 대화나 함께하는 시간에 부여했던 가치가 돈 앞에서 무너지기 때문이다라는 거고요. 

음성 인식 :        소소한 대화나 함께 하는 시간에 부회장   가치가 돈 앞에서 물어지기 때문이다그런 거고요


방송 내용 : 두 번째는 노동 의욕의 상실입니다. 어찌 보면 참 당연한 얘기이긴 한데 거액의 돈이 생기면 일할 생각이 사라진다.

음성 인식 : 두 번째는 노동요게    사실입니다       보면 참 당연한 얘기를 하는데 거에 계절이 생기면 일할 여기 사라진다


방송 내용 : 김현정> 쾌락이나 재미를 추구하는 쪽으로 빠진다.

음성 인식 :              쾌락이나 재미를 주고 하는 쪽으로 빠진다


방송 내용 : 손수호> 그렇습니다. 결국 노동을 통해 얻는 생산적인 기쁨을 상실하게 되는 게 원인이라는 심리학자들의 분석이 있죠.

음성 인식 :                                           생산적인 기품을 상실하게 되는게  아니라는     침략자들의 분석이 있죠


방송 내용 : 김현정> 그러면 로또에 당첨이 되더라도 인간 관계 예전처럼 유지하고 노동도 예전처럼 하고 이게 바람직하다.

음성 인식 :         그런데 롯도에당첨 회복되더라도 인간관계 예전처럼 유지하고 노동도 예전처럼 하고 이게 바람직하다


방송 내용 : 손수호> 화물차의 적재 용량 초과로 비유하기도 하는데요. 

음성 인식 :               화물차에 적재 용량 초과로 기억이 나는데요


방송 내용 : 예를 들어 10톤 화물 트럭이 있으면 그 적재 용량을 초과하는 화물이 적재되면 감당 못 한다라는 거예요.

음성 인식 : 예를 들어 10톤 화물 트럭   있으면 그 적재 용량   초과로   화물   적재     감당 못 한다는


방송 내용 : 김현정> 쓰러지죠.

음성 인식 :              싫어지죠


방송 내용 : 손수호> 고장나거나 사고난다. 

음성 인식 :              고장나거나 사고난다 


방송 내용 : 결국 자기 자신이 감당할 수 있는 그런 규모를 넘는 당첨금은 행운이 아니라 비극이 될 수도 있다. 

음성 인식 : 결국 자기 자신이 감당할 수 있는 그런 규모를 넘는 당첨금은 행동이 아니라 B 급이 될 수도 있다


방송 내용 : 나에게 과연 그 당첨금을 감당할 능력이 있는지 없다면 그 능력을 만들어야 되는 것이고 그 능력이 있다면 행운을 빌어도 되겠네요.

음성 인식 : 나에게 과연 그 당첨금을 감당할 능력이 있는지 없다면 그 능력을 만들어     낼 것이고 그 능력이 있다면 행운을 빌어   되겠지


방송 내용 : 김현정> 오늘 손 탐정의 마지막 한마디는?

음성 인식 :                                      마지막 한 마디는


방송 내용 : 손수호> 당첨 확률은 814만 분의 1에 불과하다. 재벌 2세로 태어날 확률이 훨씬 높다.

음성 인식 :                당첨 확률   814만 분의 1에 불과하다  재벌 2세로 태어날 확률이 훨씬 높다


방송 내용 : 김현정> 사회가 요즘 경제가 어렵다, 어렵다 하니까 또 일확천금 노리면서 혹은 

음성 인식 :                     예 요즘 경제가 어렵다  어렵다 하니까 또 일억천금 놀이     혹은 


방송 내용 : 혹시라도 하는 마음으로    소박하게 사시는 분들 계시는데 그냥 재미로, 취미로...

음성 인식 : 혹시라도 하는 마음으로 뭐 소박하게 사시는 분이 계시는데 그냥 재미로  취미로


방송 내용 : 손수호> 당첨될 거라고 확신하지 마시고.

음성 인식 :         당첨될 거라고 확신하지 가지고


방송 내용 : 김현정> 이렇게 생각하시는 게 좋아요.

음성 인식 : (미인식)


방송 내용 : 손수호> 재미로 하십시오.

음성 인식 : (미인식)


방송 내용 : 김현정> 된다고 해서 이게 다 잘 풀리는 것도 아니고 비극이었던 그 사건. 

음성 인식 :                                          다 잘 풀리는 것도 아니고 비극이어떤 그 사건


방송 내용 : 그 사건부터 오늘 한번 히스토리를 살펴봤습니다. 손 탐정님 고생하셨습니다. 

음성 인식 : 그 사건부터 오늘 한번 히스토리를 살펴봤습니다.      송정리 고생하셨습니다


# 소스 코드(파이썬)

import io

import os

from google.cloud import speech

from google.cloud.speech import enums

from google.cloud.speech import types

GOOGLE_APPLICATION_CREDENTIALS = "PC내 서비스 계정 키가 포함된 JSON 파일의 파일 경로 지정"

client = speech.SpeechClient()

audio = types.RecognitionAudio(uri="gs://Google Cloud Storage 에서 파일 위치 지정")

config = types.RecognitionConfig(

    encoding=enums.RecognitionConfig.AudioEncoding.FLAC,

    # encoding=enums.RecognitionConfig.AudioEncoding.MP3,

    sample_rate_hertz=48000,

    audio_channel_count = 2,

    language_code='ko-KR')

operation = client.long_running_recognize(config, audio)

print('Waiting for operation to complete...')

response = operation.result(timeout=10000)

for result in response.results:

    print(u'Transcript: {}'.format(result.alternatives[0].transcript))

    print('Confidence: {}'.format(result.alternatives[0].confidence))

Sort:  

Congratulations @pervoi! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

SteemFest Meet The Stemians Contest - The mysterious rule revealed
SteemFest⁴ - Meet the Steemians Contest
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Congratulations @pervoi! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Do not miss the last post from @steemitboard:

SteemFest Meet The Stemians Contest - The mysterious rule revealed
SteemFest⁴ - Meet the Steemians Contest
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.28
TRX 0.13
JST 0.033
BTC 62121.36
ETH 3004.20
USDT 1.00
SBD 3.71