
LLM은 '무엇을 말했는가'뿐만 아니라 '어떻게 말했는가'도 이해할 수 있는가? - FFTrans Neu 3.x의 음향 특징량 포함 JSON
요약
FFTrans Neu 3.x 업데이트를 통해 음향 특징량(Acoustic Features)이 포함된 JSON 출력 기능을 소개합니다. 텍스트 전사를 넘어 피치, 음량 등 비언어적 메타데이터를 구조화하여 LLM이 화자의 감정과 뉘앙스를 분석할 수 있도록 지원합니다.
핵심 포인트
- 음향 특징량(피치, 음량 등)을 포함한 JSON/Markdown 출력 지원
- 텍스트에 결여된 비언어적 정보(감정, 강조, 긴박감)를 데이터화
- 구조화된 메타데이터를 통해 LLM의 고도화된 음성 분석 가능
- 생 음성의 비정형성과 텍스트의 정보 손실 사이의 트레이드오프 해소
FFTrans Neu는 원래 '고속으로 경쾌한 오프라인 문자 전사(Transcription)·화자 분리 앱'으로서 개발을 지속해 왔습니다.
하지만 최근 출시한 메이저 업데이트인 Version 3.x에서는 단순한 기본 성능 향상에 그치지 않고, 앱의 지향점을 조금 바꾸는 새로운 기능을 탑재했습니다.
그것이 바로 '음향 특징량(Acoustic Features) 포함 JSON' 및 Markdown 출력 지원입니다.
이는 단순히 기존의 SRT(자막 파일)나 Markdown과 동일한 텍스트 내용을 JSON이라는 포맷으로 변환한 것만이 아닙니다.
각 발화 세그먼트(Segment)에 대해,
- 화자 (Speaker)
- 타임스탬프 / 발화 시간 (duration)
- 발화 전 무음 시간 (pause_before)
- 피치 평균 (pitch_mean)
- 피치 표준 편차 / 변동성 (pitch_std)
- 평균 음량 (energy_mean)
과 같은 음향 통계 데이터(메타데이터)를 텍스트와 완전히 연결하여 유지하도록 설계되었습니다.
처음에는 '장래에 LLM(대규모 언어 모델)에 전달하기 쉬운 데이터 구조로 만들어 두자'라는 정도의 발상이었으나, 실제로 직접 데이터를 파싱(Parsing)하여 AI에게 분석시켜 보니 기존의 문자 전사 데이터와는 차원이 다른, 매우 흥미로운 결과를 얻을 수 있었습니다.
이번에는 왜 굳이 이러한 무거운 데이터 설계에 착수했는지, 그 의도와 실제 활용 사례를 공유합니다.
기존의 문자 전사(SRT나 Markdown)는 '누가, 무엇을, 언제 말했는가'를 추적하기에는 충분한 정보를 가지고 있습니다.
회의록이나 대본으로서 논의의 흐름을 확인하는 것만이라면 이것으로 충분합니다.
하지만 인간이 실제 대화에서 받아들이는 정보는 텍스트뿐만이 아닙니다.
우리는,
- 어디에서 말에 힘이 들어갔는지 (강조·감정의 피크)
- 어디에서 조금 질렸는지, 혹은 톤을 낮췄는지 (비꼬기·낙차)
- 어디에서 확신을 가지고, 혹은 위압적으로 말했는지 (긴박감)
- 어디에서 한 박자 동안 멈췄는지 (멈춤·주저)
와 같은 '어떻게 말했는가'라는 비언어적 정보(에모션이나 분위기)를 동시에 받아들입니다.
음성이 텍스트화되는 순간, 이러한 정보들은 거의 100% 깎여 나가며 모든 말이 평평하게 평탄화되어 버립니다.
반면, '생(Raw) 음성 파일'에는 이러한 정보가 모두 포함되어 있지만, 그것은 구조화되지 않은 음성이기에 검색도 비교도, 외부 도구를 통한 자동화도 사실상 어렵다는 의미가 됩니다.
'혼란스러운 생 음성'인가, '평탄화되어 문자 정보만 남은 텍스트'인가.
지금까지는 이 양자택일이었습니다.
FFTrans Neu 3.x가 목표로 한 것은 그 트레이드오프(Trade-off)의 해소입니다.
음성이 가진 비언어적 정보 중에서 데이터 분석이나 자동화에 정말 가치 있는 요소만을 추출하여, 'JSON이라는 컨테이너에 구조화하여 담아두는' 접근 방식을 취했습니다.
얼마나 차이가 나는지, 실제로 FFTrans Neu 3.x로 출력한 생 JSON 데이터를 바탕으로 설명하겠습니다.
이번에는 사례로서 독일의 경제 자문 위원인 베로니카 그림(Veronika Grimm) 교수의 약 6분간의 인터뷰 음성을 사용해 보았습니다.
전체 58개 세그먼트 중 그림 교수(S2)의 발언이 약 74%를 차지하고 있어, 전문가가 주도하고 있는 구도는 텍스트만으로도 알 수 있습니다.
하지만 '어디가 논의의 핵심이며, 어디에서 감정이 움직였는가'는 특징량의 수치를 보고 나서야 비로소 시각화됩니다.
다음은 그림 교수가 정부의 연금 개혁 방침을 비판하고 있는 장면의 JSON(일부 발췌)입니다.
{
"id" : 44,
"text" : "Ja, aktuell spricht man von einer großen Rentenreform und plant eigentlich nur Maßnahmen, die die Ausgaben noch zusätzlich ansteigen lassen.",
...
텍스트의 글자 그대로만 따라가면, '현재의 연금 개혁안은 지출을 늘리는 조치만을 계획하고 있다'라는 전문가다운 논리적인 정책 비판으로 보입니다.
하지만 음향 특징량의 수치를 주시해 보면 다른 풍경이 보입니다.
그림 교수의 통상적인 평균 피치는 190Hz~210Hz 전후인 것에 반해, 이 세그먼트에서는 'pitch_mean'이 236.10Hz까지 뛰어올랐으며, 목소리의 기복을 나타내는 'pitch_std'가 65.20이라는 돌출된 이상치를 기록하고 있습니다.
영상이나 음성을 직접 확인하지 않아도, 데이터만 보고 "여기서 교수의 목소리가 높아지며, 강한 분노와 위기감을 쏟아내는 감정의 최대 피크(하이라이트)이다"라는 것을 정확히 판별할 수 있습니다.
텍스트만으로는 이러한 "감정이 고조된 순간"을 포착하는 것이 불가능합니다.
또 다른 흥미로운 예가 있습니다.
정부의 재정 운영의 허점에 대해 말하는 장면입니다.
{
"id" : 24,
"text" : "Überraschend ist das alles nicht",
...
"이런 일은 전혀 놀랍지 않다(Überraschend ist das alles nicht)"라는 짧은 한 문장입니다.
여기서 평균 음량('energy_mean')은 0.059로, 전체 평균보다 상당히 낮은 수치를 기록하고 있습니다.
하지만 피치 변동 폭('pitch_std')은 전체 데이터 중 1위인 73.93을 기록했습니다.
이는 "큰 소리로 소리를 지르고 있는" 것이 아니라, "목소리를 낮추어 내뱉듯이, 혹은 강한 비꼬는 태도로 톤을 급격히 변화시킨 '어이없어하는 감정의 낙차'"가 수치로 나타나고 있음을 의미합니다.
만약 텍스트만으로 AI나 인간에게 "분위기가 고조되는 부분"을 추측하게 한다면, "Wählertäuschung(유권자에 대한 기만)"과 같은 강한 단어(파워 워드)가 있는 곳을 잘못하여 피크라고 판단하기 쉽습니다.
하지만 인간은 평범한 말을 할 때야말로 목소리 톤을 바꾸어 감정을 표현합니다.
특징량(Feature)이 포함된 JSON은 이러한 문자 그대로의 추측을 배제합니다.
나아가 FFTrans Neu 3.2에서는 각 발화에 acoustic_trend를 추가했습니다.
예를 들어 뉴스 프로그램의 도입부에서는 다음과 같은 데이터가 출력됩니다.
{
"text": "人口減少が進む一方で人口が増えた自治体もありました。",
"metadata": {
...
이 acoustic_trend는 발화 전반부에 대한 후반부의 비율입니다.
이 예시에서는
pitch = 1.29
→ 후반부로 갈수록 목소리가 높아지고 있음
energy = 0.91
→ 성량은 거의 유지한 채 설명하고 있음
임을 나타냅니다.
글자만 보면
人口減少が進む一方で人口が増えた自治体もありました。(인구 감소가 진행되는 한편 인구가 증가한 지자체도 있었습니다.)
라는 한 문장이지만, 음성을 들어보면 "인구가 증가한 지자체"라는 후반부에서 피치가 크게 상승합니다.
즉, 캐스터가 이 화제로 시청자의 주의를 끌려고 한다는 것을 알 수 있습니다.
기존의 요약이라면
人口減少と人口増加の自治体について説明した。(인구 감소와 인구 증가 지자체에 대해 설명했다.)
정도가 됩니다.
반면 음향 특징량을 LLM에 전달하면,
日本全体では人口減少が続く一方で、人口が増加した自治体も存在する点を特に強調して紹介した。(일본 전체적으로는 인구 감소가 계속되는 한편, 인구가 증가한 지자체도 존재한다는 점을 특히 강조하여 소개했다.)
와 같이, "무엇을 전달하고 싶었는가"를 반영한 요약을 생성하기 쉬워집니다.
물론 acoustic_trend만으로 결론을 내리는 것은 아닙니다.
발화 내용 및 전후 문맥과 조합함으로써,
- 강조하여 말한 부분
- 점차 열이 들어간 부분
- 담담하게 설명하는 부분
과 같은 말하기 방식의 차이를 LLM이 고려할 수 있게 됩니다.
음향 특징량은 뉴스뿐만 아니라 라디오 프로그램이나 팟캐스트에서도 활용할 수 있습니다.
예를 들어, 출연자들 사이의 경쾌한 주고받기가 이어지는 장면에서는 다음과 같은 JSON을 얻을 수 있습니다.
{
"speaker": "S1",
"text": "いや、それ本当に面白かったんですよ!",
...
이어 다른 출연자가 즉시 응답합니다.
{
"speaker": "S2",
"text": "そうそう!会場もかなり盛り上がってましたね。",
...
텍스트 전사(Transcription)만 보면,
イベントについて出演者同士が感想を話した。(이벤트에 대해 출연자들끼리 감상을 이야기했다.)
라는 요약이 됩니다.
하지만 음향 특징량을 보면,
- 양측 모두 후반부로 갈수록 피치가 상승하고 있음
- 에너지도 후반부를 향해 증가하고 있음
- 발화 템포가 빠르게 대화가 이어지고 있음
을 알 수 있습니다.
이것들을 LLM에 전달함으로써,
出演者同士がテンション高く軽快な掛け合いを展開。イベントの思い出を笑いを交えながら振り返り、番組全体が盛り上がった雰囲気で進行した。(출연자들끼리 높은 텐션으로 경쾌한 주고받기를 전개. 이벤트의 추억을 웃음을 섞어가며 회상하며, 프로그램 전체가 고조된 분위기로 진행되었다.)
와 같이, 연예 뉴스 기사나 라디오 프로그램 소개와 같은 요약을 생성할 수 있습니다.
중요한 점은 LLM이 단순히 "무엇을 말했는가"뿐만 아니라,
- 목소리의 고조
- 말하기 방식의 변화
- 대화의 템포
- 화자 간의 주고받기
와 같은 음성만의 정보도 판단 자료로 이용할 수 있다는 점입니다.
이러한 정보는 텍스트 변환(Transcription)만으로는 손실되지만, 음향 특징량(Acoustic Features)을 JSON으로 유지함으로써 LLM이 프로그램 전체의 분위기까지 고려한 요약을 생성할 수 있게 됩니다.
이처럼 실제로 이 데이터를 LLM(대규모 언어 모델)에 읽혀본 결과 확신하게 된 점은, "JSON 형식의 특징량은 LLM에게 압도적으로 처리가 가볍다"는 것입니다.
텍스트로만 된 Markdown을 전달받을 경우, LLM은 문장 전체의 문맥과 형용사를 해석하며 "아마 이 단어를 사용하고 있으니 화가 난 것이겠지"라고, 고도화되었으나 불확실한 "문맥의 추론(국어 장문 독해)"을 끊임없이 반복해야 합니다.
결과적으로 할루시네이션(Hallucination, 환각/오인)이 발생할 리스크도 따릅니다.
반면, 특징량이 포함된 JSON을 전달할 경우, LLM에게는 "정답이 맞춰진 이지 모드(Easy Mode)"가 됩니다.
실제로 LLM 자신에게 물어보아도 그렇게 대답해 주었습니다.
문맥을 깊게 읽어낼 필요 없이, 'pitch_std'나 'energy_mean' 수치의 스파이크(Spike)를 보는 것만으로도 단번에 감정의 기복이나 중요 장면을 특정할 수 있기 때문입니다.
그래프의 수치를 읽어내는 산수 문제로 변형되기 때문에, 분석의 정밀도뿐만 아니라 출력의 안정성도 극적으로 향상됩니다.
텍스트라는 1차원 정보에 음향이라는 다차원 보조선이 처음부터 깔끔하게 바인딩(Binding)되어 있다는 것은, LLM에게 음성의 뉘앙스를 "커닝"하게 만들기 위한 매우 궁합이 좋은 인터페이스입니다.
이 구조화된 데이터(Structured Data)를 외부로 출력할 수 있게 되면, 텍스트 변환 그 너머의 자동화나 지적 생산의 폭이 단번에 넓어집니다.
예를 들어, ExtendScript 등의 스크립트와 이 JSON을 조합함으로써, "'pitch_std'(기복)가 50 이상인 세그먼트는 감정이 고조된 것으로 판단하여 자막(Telop)의 폰트 크기를 자동으로 2배로 키우고, 색상을 빨간색으로 변경하여 타임라인에 정확히 배치한다"와 같은 감정 동기화형 자막 초안 자동화가 현실이 됩니다.
Markdown 출력 기능을 사용하여 노트 앱으로 가져오고, 프로퍼티(Property, 메타데이터)로서 JSON 수치를 다룬다면, Dataview 등의 플러그인을 이용해 "과거 회의록 중에서 참가자의 열량('pitch_std')이나 토론의 긴박감('energy_mean')이 일정 수준 이상이었던 중요 장면만을 쿼리(Query)로 추출한다"와 같은 운용이 가능합니다.
단순한 텍스트 검색이 아니라, "대화의 열량으로 검색할 수 있는 진정한 지적 자산 창고"를 만들 수 있습니다.
세상에는 뛰어난 텍스트 변환 도구나 화자 분리(Speaker Diarization) 도구가 많이 있습니다.
하지만 그들 중 상당수는 "깔끔하고 정확한 텍스트(또는 자막)를 출력하는 것"을 목표로 합니다.
FFTrans Neu 3.x는 거기서 한 걸음 더 나아가, "대화 그 자체를 AI나 스크립트로 활용 가능한 구조화된 데이터로서 배급하는 허브(Hub)"
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기