728x90
반응형

SKT에서 개발한 에이닷 서비스...

 

이미 안드로이드 앱을 설치해서 이용하고 있는데, 뜬금없이 아래 이미지를 포함하는 메일을 받게 되었습니다.

 

 

 

사용 경험에 대한 결론은

   - 음성인식 성능은 화자(간)의 발성 형태나 목소리 크기에 아직은 영향을 받는 듯합니다.

   - 요약 서비스의 성능은 괜찮은 것 같아요.. 예전의 중요문장을 고르는 것이 아닌, 새로운 요약 문장을 만드는 것 같습니다.  통화 내용 중, 시간 약속이 있으며,  달력이나 일정으로 export할 수 있도록 서식도 만들어줍니다.

   - 음성합성은 조금 생소합니다.  생소한 것은 말투입니다.  존어체도 아니고, 예삿말투도 아니고..

 

 

며칠을 사용하다 보니, 히스토리가 쌓이고 통계정보가 보입니다.

요약문이 아주 마음에 듭니다. 통화의 요약문을 나중에 어떤 용도를 사용할지는 제 스스로도 의문입니다. 지금은 기술력에 대한 파악정도로..

 

실제 대화 내용은

 - 가끔 화자 정보가 뒤바뀝니다. 내가 한 말인데, 상대편이 한 말로 나타납니다.(누가 먼저 '여보세요'라고 할까요?)

 - 짧은 turn으로, 완전한 문장을 이루지 않을 때, 인식 품질이 떨어집니다.

 - 같은 말(구)을 반복하는 인식결과가 빈번합니다.

 

 

상세요약은 리스트 형태로 나열해 줍니다.

 

 

통화 내용 중, 전화번호 언급이 있으면, 특별한 형태로 알려주고, 관련 기능도 제공합니다.

전화번호를 메모 등으로 기록할 수 없는 경우가 있는데, 이때 유용할 것 같습니다.

제대로 메모 되도록,  제 발성으로 또박또박 한 번 더 언급/발성하면 되겠죠...^^

728x90
반응형
728x90
반응형

음성인식기는 가장 충실하게,  음성신호를 받아서, 글자 단위로  출력을 합니다. Speech to Text라고도 합니다.

 

이외에도  음성/화자/자연어처리와 관련되어 부가적인 정보를 출력할 수 있습니다. 이러한 부가정보는 더 가치 있는 것일 수 있습니다.

 

부가 정보는

1. Speaker Labels( 화자 정보)

    음성의 특정 구간을 누가 발성했는가를 나타냅니다.  단순히 앞의 음성구간과 다른 화자이다(Transition)를 나타낼 수도 있습니다.  녹음된 음성데이터 처리에서는 유한한 화자 정보로 나눌 수(Clustering)도 있습니다.

2. Custom Vocabulary

     동적 인식네트워크(Custom)를 기존의 정적 인식네트워크와 함께 결합 후에  인식을 수행하는 것입니다.

     기존의 정적 인식네트워크가 관용적이거나 도메인 특성상 인식이 안될 경우,  특정한 문장세트를 결합하여 인식을 수행합니다.

3. Custom Spelling

     영어에서는 이름을 불러줄 때, 스펠링을 얘기할 때가 있죠. 단어(/이름)를 스펠링 모드로 처리하는 것이죠.

     우리나라 말에는  숫자( 전화 번호 얘기할 때,  일이삼 이 아닌  하나 둘을 포함할 때가 있죠.)인식할 때 유용합니다. 우리나라 숫자음이 음향학적으로 짧으면서 비슷하여 인식하기가 상당히 힘듭니다.^^

4. Dual Cannel Transcription

     만약,  송수신단이 서로 다르게 Dual 채널 즉, Stereo로 되어 있다면 인식기는 기본적으로 2명(/2개)의 데이터를 따로따로 처리할 수 있겠죠.. 인식 후 그 정보 처리를 어떻게 하느냐가  관건입니다.

5. Filler Words

     우리나라 말로는 간투사입니다.  말 시작마다,   /어/,  /저/, /거시기/를 붙이는 사람들이 있죠.

     일본인들은 /마/를 주로 사용합니다.  이런 것은 기술적으로 인식네트워크에서 처리하기가 힘들죠. 문장의 처음은 그래도 수월하게 대응할 수 있지만, 문장 중간에 있는 것을 처리하는 것은 상당히 어렵습니다. 인식 네크워크가 상당히 복잡해 지니까요.

6. Automatic Language Detection

    자동으로 어느 나라 말인지 구분하여, 인식결과를 출력하는 것입니다. 유럽인들은 여러 언어를 사용하기 때문에 유용한 기술입니다. 우리나라 말도  외래어를 사용하는 경우가 있기 때문에, 구분하여 인식하면 성능에 도움이 될 것입니다. 다른 측면으로 우선 한국어로 다 인식을 하고 De-Nomalization으로 영어 또는 알파벳으로 출력해 줄 수도 있습니다.

7. Automatic Punctuation and Casing

    쉼표, 느낌표, 물음표 등을 함께 출력해 주면 좋겠죠.  이러한 것은 음향학적인 신호가 없기 때문에 어려운 기술입니다. 보통은 후처리로 처리됩니다.  영어 같은 경우는 대소문자로 구분(문장의 첫번째, 축약형)하여 출력해 주는 것입니다.

8. Export SRT or VTT Caption Files

    유튜브 등의 비디오의 시각적 표현을 위해 자막관련 정보 파일로 변환 출력하는 기능입니다.

9. Exporting Paragraphs and Sentences

     문장이나 단락정보로 묶어서 출력하는 기능입니다.

10. Profany Filtering

 

11. Word Search

 

12. Pll Redaction

 

13. Detect Import Phrases and Words

 

14. Content Moderation

 

15. Topic Detection

 

16. Sentiment Analysis

 

17. Summarization

 

18. Auto Chapters

 

19. Entity Detection

 

이상과 같이 인식엔진 내부에 구현되어야 할 기술, 또는 외부에서 전/후처리로 별개로 처리될 기술, 또는 융합되어야 할 기술들로 나누어집니다. 또는 별개의 단위 기술이기도 합니다.

    

 

728x90
반응형
728x90
반응형

음성인식은 기술 특성상 언어모델(Language Model)을 사용할 수 밖에 없었습니다.

사람 목소리에 대한 음향학적 모델(Acoustic Model)을 처리하여, 글자(Words)를 탐색하는 과정에서 언어모델을 사용하였죠. 그 언어모델을 단일 서버에서 처리하기 힘들 경우에는 분산시스템(Distributed)이라 하여,  인식 대상 네크워크인 언어모델을 쪼개어서(distributed) 인식을 수행하고, 다시 최종 결과를 판단(merge)하는 방식을 사용하였죠.

 

음성인식 기술은 딥러닝 기술을 도입한 초기에는 음향모델(Acoutic Model)에 먼저 도입하였습니다. 기존의 통계적 모델링 주로 가우시안 분포로 모델링하였는데, 딥러닝을 도입하면서 신경망을 적용하였습니다. 이를 통해 소위  가우시안 분포의 Outlier를 반영하지 않던 것을,  신경망에서는 모두 작은 가중치라도 반영(/참여)을 하게 되었죠. 이를 통해 성능이 개선되었습니다. 이러한 방식을 하이드리드(Hybrid)방식이라 하였는데,  이때도 언어모델은 여전히 통계기반 모델을 사용하였죠. 최종적인  음성인식의 탐색 대상 네트워크는 wFST(weighted Finite State Tranducer)로 표현되었습니다. 인텔에서 개발된 wFST는 음향모델과 언어모델을 평면적(flatten)으로, 함께 표현하여  탐색 알고리즘을 간단하게(?) 하였습니다.

 

주요 응용분야를 살펴보면 아래와 같습니다. 최근 십여년 이내에 상당한 상용화 사례를 이루고 있습니다.

응용 설명
Voice Assistants LLM 개념이 있어야 합니다. 
Siri, Alexa,Google Assistant 등의 서비스가 있습니다.
Transcription Services Audio 나 Vedio 콘텐츠의 내용을 전사(/표현)해 주십니다.
Jounalists, Content Creators, Researchers 등에 유용합니다.
Call Centers 고객 서비스 상호작용에 대해 효율성을 제공해 줍니다.
예를 들면, 상품 안내의 적합성, 고객 민원 처리, VOC를 처리합니다.
Accessibility 청각에 어려움이 있는 분들에게 도움을 줄 수 있습니다.
Language Translation 실시간 음성기반 자동번역 서비스를 제공합니다.
해외 여행, 다문화간 소통 등에서 많이 사용되고 있습니다.

 

그럼, 이러한 상황과 더불어 최근에 Hot한  진정한 LLM(주로 문장/답변 생성)이 음성인식기술과 결합된 서비스는 있는 것인가?의 질문을 던져봅니다.

 

'조건부로 결합된 서비스'는 외국 사례에서 조사/파악이 됩니다.

'조건부'로 표현한 것은  인식결과를 주고서, 그 이후에 어떤 요청(request)을 하는 방식입니다.

반례로,  일반적인 생성형모델은 질문을 먼저합니다. 즉 조건을 주지 않죠.

 

조건부로 결합된 서비스는 아래와 같습니다. LLM에 요청하는 형태 기반으로 파악이 가능합니다.

1. 결과 요약( Custom Summarization) 

  params = {
  "context": "The caller is interested in buying a car.",
"answer_format": "Short sentence"
}

   음성 내용은  자동차를 구매하고자 하는 고객이니,    그 내용을 짧게 표현해줘...   라고 요청(request parameter)하고 있습니다.

2. 질의 응답( Question & Answer )

questions = [
aai.LemurQuestion(
question="Is this caller a qualified buyer?",
answer_options=[
"Yes",
"No"
]),
aai.LemurQuestion(
question="What is the caller's mood?",
answer_format="Short sentence")
]

 음성 인식결과를 조건부로 하여,  질의 응답을 할 수도 있습니다.  응답은 Yes or No로 요청할 수도 있고, 짧은 문장으로도 요청할 수 있습니다.

 

3. Action Items

params = {
"context": "this is a support call"
}

 음성인식결과(Transciption)으로부터 액션 아이템을 추출할 수도 있습니다.

 

 

 

조건을 제시하고, 출력 형태를 지시하는 프람프팅(Prompting)에 관련된 사항을 위의 예시 중, Action Item 추출을 간단한 예시로, 기존 GPT-4를 사용해 보면 아래와 같습니다.

 

요청문(Prompt)

f"""

     You are a syntax parser for a home automation system. Given a user's sentence like:

 

     if <condition> then <action>

 

     perform the following:

 

              1. Extract <condition> and <action>. If no condition, set it to None.

              2. Rewrite the extracted <condition> and <action> so that any of the user's personal and possessive pronouns are replaced with "the user"

 

                Process this sentence using the above steps:

 

               {lock the doors when nobody is home}

 

               Return the result in this format:

 

               {{

 

                   "condition": <the rewritten condition from step 2>

                   "action": <the rewritten action from step 2>

 

                }}

"""

 

로 입력하니, 출력은

 

Certainly, I can help you with this task. Let's break down the given sentence and follow the specified steps:

Input Sentence: "lock the doors when nobody is home"

Step 1: Extract <condition> and <action>.

  • <condition>: "nobody is home"
  • <action>: "lock the doors"

Step 2: Rewrite the extracted <condition> and <action> with personal and possessive pronouns replaced by "the user".

  • Rewritten <condition>: "the user is home"
  • Rewritten <action>: "lock the doors"

Now, let's format the result according to your specified format:

jsonCopy code
{ "condition": "the user is home",
  "action": "lock the doors" }

This is the final result based on the given steps and input sentence.

 

 

입니다.

 

출력의 "condition"이 조금 오답이지만,   조건(" lock the doors when nobody is home")주면서, Action Item("lock the doors")를 추출할 수 있었습니다.

즉, 조건(전사데이터)을 주면서, 액션을 추출할 수 있을 것입니다.

 

728x90
반응형
728x90
반응형

Pytorch2.0이 공개되었습니다. 또한, Tensorflow도 딥러닝 프레임워크도 있죠. 양대 산맥을 형성하고 있습니다.

AssemblyAI는

     HuggingFace에 있는 모델의 92%(2023년 3월 현재)가 pytorch기반

이라고 설명하고 있습니다.

작년(2022년)에는 85%수준이었는데, 많이 늘었다고 합니다.

반면에 tensorflow기반의 모델 비율은 8%수준이라고 합니다.(작년에는 14%수준이었는데,  16%감조되었네요.)

 

연구자(Researcher) 는  Pytorch 가 선호됩니다.

     - 많은 연구자 커뮤니티 사이트가 존재합니다.

     -  모델의 유연성,  디버깅 유리,  짧은 훈련 시간...

     -  "pythonic" 접근법,   객체지향(object-oriented)

 

산업계 종사자는 Tensorflow가 선호됩니다.

      - 머신러닝이나 딥런잉에 익숙하고

      - 산업계에서 Job을 잡기 위해서..

      -  디버깅에 유리합니다.  

      -  훈련 과정(Training Process)를 좀 더 잘 추적해 볼 수 있습니다.

      -  시각화(visualization) 고찰에 강점이 있습니다

      -  다양한 선택사항(options)....

 

Pytorch 

      - 웹기반 서비스가 탑재되어 있지 않아서,  Django나 Flask 등의 Back-end 서버를 필요로 합니다.

      - 반면, TensorFlow는  TensforFlow Serving framework가 제공됩니다.

 

 

- Keras PyTorch TensorFlow
API Level High Low High and Low
Architecture Simple, concise, readable Complex, less readable Not easy to use
Datasets Smaller datasets Large datasets, high performance Large datasets, high performance
Debugging Simple network, so debugging is not often needed Good debugging capabilities Difficult to conduct debugging
Does It Have Trained Models? Yes Yes Yes
Popularity Most popular Third most popular Second most popular
Speed Slow, low performance Fast, high-performance Fast, high-performance
Written In Python Lua C++, CUDA, Python

 

 

 

보다 자세한 내용은

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2023/

 

PyTorch vs TensorFlow in 2023

Should you use PyTorch vs TensorFlow in 2023? This guide walks through the major pros and cons of PyTorch vs TensorFlow, and how you can pick the right framework.

www.assemblyai.com

에서 확인할 수 있습니다.

728x90
반응형

+ Recent posts