Speech Utilities

 Voice Activity Detection (VAD)


우리가 전화할 때를 생각해 보면 통화할 때 거의 절반 정도는 침묵하고 있습니다. 즉, 상대방이 말을 하면 나는 듣기만 하고, 반면 내가 말을 하면 상대방은 듣기만 합니다. 

이때 기존의 회선교환망 환경에서는 이렇게 말을 하지 않더라도 채널이 비어 있는 상태로 전송될 뿐 그 채널을 다른 통화 요청자에게 할당하지는 못했습니다. 하지만 패킷망 환경에서는 이렇게 송화자가 침묵할 경우에는 패킷을 생성하지 않을 수도 있습니다. 이렇게 되면 일시적으로 음성이 대역폭을 사용하지 않고, 남는 대역폭을 다른 응용프로그램들이 사용할 수 있게 해 줄 수 있습니다. 이와 같이 입력 신호의 특성을 분석해서 음성 신호 구간인지 배경 잡음 구간인지를 결정하는 것이 Voice Activity Detection (VAD)의 기능입니다.

VAD를 사용하면 말의 시작 부분이나 음성의 진폭이 떨어지는 말의 끝 부분이 잘려나갈 수 있는데, 이것을 Clipping이라고 합니다. 나선(nahsun)의 VAD 엔진은 이런 클리핑에 의해서 음질이 나빠질 수 있는 경우를 최소한으로 줄여줍니다.

VAD concept

 

지원 성능 특성

 

  • 지원 프레임 크기  : 10, 20 ms
  • 샘플링 주파수 (KHz) : 8, 16

 

지원 소프트웨어 특성

 

  • 재진입이 가능한(reentrant) 코드. 다중스레드(multithread)와 동적인 메모리 할당.
  • 지원되는 라이브러리 포맷
    • ADS 1.2
    • RealView 4.0
    • WinCE (Embedded Visual C)
    • Android
    • iOS
  • Data 메모리 : 실시간으로 할당 가능
  • API : C에서 호출이 가능한 API

 

 

Bandwidth Entension (BWE)

일반적으로 음성신호를 기존의 유선 전화 또는 휴대전화를  이용하여 송/수신하려면 송/수신 데이터의 용량제한으로 인해 사람이 최소한으로 인식할 수 있는 협대역 음성신호인 300Hz - 3.4kHz로 대역폭이 제한되어 송/수신됩니다.

하지만, 일반적으로 사람이 듣고 인식할 수 있는 사람 음성의 대역은 가청 주파수 대역인 20Hz ~ 20kHz이다. 하지만, 주파수 대역폭이 제한됨으로써 손실되는 하위 대역(20Hz - 300Hz)및 상위 대역(3.4kHz - 20kHz) 음성신호의 손실은 음질 열화를 가져 옵니다.

그래서 이런 품질 열화를 개선하기 위해 50Hz에서 7kHz까지의 영역 및 그 이상까지 확장하는 광대역 음성 기술이 개발되었고 3G에서 LTE망으로 전환하면서 VoLTE(Voice Over LTE) 서비스를 통해서 HD-Voice라는 이름으로 상용화 되었습니다. 하지만,  이런 광대역 음성 기술 도입의 장벽중의 하나는 광대역 음성 기술을 사용하는 가입자가 기존의 협대역 음성 기술을 사용하는 기존 통신망의 가입자와 통신을 할 경우에는 기존의 3G 서킷망이나 PSTN 수준의 음질을 경험할 수 밖에 없기 때문에 이런 경우에는 새로운 서비스의 가입자들이 음질의 차이를 경험하기 힘들다는 점입니다. 나선 랩스의 대역 확장(band-width extension) 기술은 이런 문제점을 해결하기 위한 대안입니다.

나선(nahsun)의 BWE 엔진은 기존의 BWE 엔진들이 가지고 있던 인공 잡음 문제를 해결하여 좀 더 자연스럽게 협대역 음성 신호를 광대역 음성 신호에 가까운 소리로 변환해 줍니다.

BWE concept

    • 협대역 (Narrow Band) 음성 신호 

 

    •  협대역 음성 신호을 대역확장(BWE)한 음성 신호

 

지원 성능 특성

  • 협대역 신호를 광대역 신호로 변환
  • 샘플링 주파수 (KHz) : 8 --> 16

지원 소프트웨어 특성

  • 재진입이 가능한(reentrant) 코드. 다중스레드(multithread)와 동적인 메모리 할당.
  • 지원되는 라이브러리 포맷
    • ADS 1.2
    • RealView 4.0
    • WinCE (Embedded Visual C)
    • Android
    • iOS
  • Data 메모리 : 실시간으로 할당 가능
  • API : C에서 호출이 가능한 API