KR102048893B1 - 산술연산 로직 유닛 아키텍처 - Google Patents

산술연산 로직 유닛 아키텍처 Download PDF

Info

Publication number
KR102048893B1
KR102048893B1 KR1020147020295A KR20147020295A KR102048893B1 KR 102048893 B1 KR102048893 B1 KR 102048893B1 KR 1020147020295 A KR1020147020295 A KR 1020147020295A KR 20147020295 A KR20147020295 A KR 20147020295A KR 102048893 B1 KR102048893 B1 KR 102048893B1
Authority
KR
South Korea
Prior art keywords
value
feature vector
probability distribution
gaussian probability
computing
Prior art date
Application number
KR1020147020295A
Other languages
English (en)
Other versions
KR20140107537A (ko
Inventor
리차드 패스토우
젠스 올손
벤 마이클 쇼햄
Original Assignee
사이프레스 세미컨덕터 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 사이프레스 세미컨덕터 코포레이션 filed Critical 사이프레스 세미컨덕터 코포레이션
Publication of KR20140107537A publication Critical patent/KR20140107537A/ko
Application granted granted Critical
Publication of KR102048893B1 publication Critical patent/KR102048893B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/28Constructional details of speech recognition systems
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/02Feature extraction for speech recognition; Selection of recognition unit
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/14Speech classification or search using statistical models, e.g. Hidden Markov Models [HMMs]
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/18Speech classification or search using natural language modelling
    • G10L15/183Speech classification or search using natural language modelling using context dependencies, e.g. language models
    • G10L15/187Phonemic context, e.g. pronunciation rules, phonotactical constraints or phoneme n-grams

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Acoustics & Sound (AREA)
  • Human Computer Interaction (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)
  • User Interface Of Digital Computer (AREA)
  • Machine Translation (AREA)
  • Artificial Intelligence (AREA)
  • Telephone Function (AREA)

Abstract

본 발명의 실시예들은 음향 모델링을 위한 장치, 방법 및 시스템을 포함한다. 일 실시예에서, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛이 제공된다. 이러한 산술연산 로직 유닛은, 가우시안 확률 분포 벡터의 차원과 관련된 평균 값 및 분산 값 그리고 특징 벡터의 차원에 근거하여 제1의 값을 컴퓨터연산하도록 구성된 컴퓨터연산 로직 유닛과, 이러한 분산 값에 근거하여 제2의 값을 출력하도록 구성된 참조 테이블 모듈과, 그리고 1차원 점수를 발생시키기 위해 제1의 값과 제2의 값을 결합시키도록 구성된 결합 모듈을 포함한다.

Description

산술연산 로직 유닛 아키텍처{ARITHMETIC LOGIC UNIT ARCHITECTURE}
본 발명의 실시예들은 일반적으로 음성 인식(speech recognition)에 관한 것이다. 보다 구체적으로, 본 발명의 실시예들은 전용 프로세싱 유닛(processing unit) 상에서의 음향 모델링 프로세스(acoustic modeling process)의 구현에 관한 것이다.
실시간 데이터 패턴 인식(real-time data pattern recognition)은 전자 시스템에서 데이터 스트림(data stream)들을 분석하기 위해 그 사용이 점점 늘고 있다. 수천 수만 개 이상의 단어들을 갖는 어휘들에 관해, 음성 인식 시스템들은 향상된 정확도를 달성해 오고 있는바, 이는 전자 시스템들에 대해 매력적인 특징이 되고 있다. 예를 들어, 음성 인식 시스템들은 예컨대, 모바일 디바이스, 서버, 자동차, 및 PC 시장과 같은 데이터 패턴 인식 애플리케이션들을 타겟으로 하는 소비자 시장(consumer market)에서 점점더 일반화되고 있다.
음성 인식 시스템들에서의 향상된 정확도에도 불구하고, 음성 인식 프로세스에는 상당량의 컴퓨터연산 리소스(computing resource)들이 제공돼야 하고, 이것은 또한, 예를 들어, 다중사용자/다중프로그래밍 환경과 같은 컴퓨터연산 시스템에 상당량의 부하를 부가하게 된다. 다중프로그래밍 컴퓨터연산 시스템들은 다양한 애플리케이션들로부터의 데이터를 동시에 프로세싱하는바, 결과적으로 음성 인식 프로세스에 의해 이러한 컴퓨터연산 시스템들에 부가되는 부하는 컴퓨터연산 시스템들이 그 들어오는 음성 신호들, 뿐만 아니라 다른 애플리케이션들로부터의 데이터를 프로세싱할 수 있는 속도에 영향을 미치게 된다. 더욱이, 전형적으로 (데스크탑 컴퓨터연산 시스템(desktop computing systems)과 비교하여) 한정된 메모리 리소스들을 포함하는 핸드헬드 디바이스(handheld device)들에 있어서, 음성 인식 애플리케이션들은 핸드헬드 디바이스의 컴퓨터연산 리소스들에 상당량의 부하를 부가할 뿐만 아니라 핸드헬드 디바이스의 메모리 리소스들 중 상당량의 부분을 소비한다. 프로세싱 능력, 속도, 및 메모리 리소스들에 관한 앞서의 음성 인식 시스템 문제들은, 실시간으로 혹은 실질적으로 실시간에 가깝게 그 들어오는 음성 신호들을 프로세싱하려는 요구로 인해 더욱 악화되고 있다.
따라서, 음성 인식 시스템들이 컴퓨터연산 시스템들의 프로세싱 능력, 속도, 및 메모리 리소스들에 부가하는 로드를 개선시킬 필요성이 존재한다.
일 실시예에서, 특징 벡터(feature vector)와 가우시안 확률 분포 벡터(Gaussian probability distribution vector) 간의 1차원 점수(one-dimensional score)를 컴퓨터연산하기 위한 산술연산 로직 유닛(arithmetic logic unit)이 제공된다. 이러한 산술연산 로직 유닛은, 가우시안 확률 분포 벡터의 차원과 관련된 평균 값 및 분산 값 그리고 특징 벡터의 차원에 근거하여 제1의 값을 컴퓨터연산하도록 구성된 컴퓨터연산 로직 유닛(computational logic unit)과, 이러한 분산 값에 근거하여 제2의 값을 출력하도록 구성된 참조 테이블 모듈(look up table module)과, 그리고 1차원 점수를 발생시키기 위해 제1의 값과 제2의 값을 결합시키도록 구성된 결합 모듈을 포함한다.
본 발명의 또 다른 실시예는 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하는 방법을 포함한다. 이 방법은, 가우시안 확률 분포 벡터의 차원과 관련된 평균 값 및 분산 값 그리고 특징 벡터의 차원에 근거하여 제1의 값을 컴퓨터연산하는 단계와, 참조 테이블 모듈로부터 분산 값에 근거하여 제2의 값을 검색(retrieving)하는 단계와, 그리고 1차원 점수를 발생시키기 위해 제1의 값과 제2의 값을 결합시키는 단계를 포함한다.
본 발명의 실시예들의 추가적 특징 및 장점, 뿐만 아니라 본 발명의 다양한 실시예들의 동작 및 구조가, 본 명세서에 첨부되는 도면을 참조하여 아래에서 상세히 설명된다. 본 발명이 본 명세서에서 설명되는 특정 실시예들로만 한정되는 것이 아님에 유의해야 한다. 이러한 실시예들은 오로지 예시적 목적으로 본 명세서에 제시된다. 본 발명의 관련 기술분야에서 숙련된 자들에게는 본 명세서에 포함된 가르침에 근거하여 추가적인 실시예들이 있을 수 있음이 명백하게 될 것이다.
본 명세서의 일부분을 형성하며 여기에 통합되는 첨부되는 도면들은 본 발명의 실시예들을 예시하며, 그 제공되는 설명과 함께, 또한 본 발명의 원리를 설명하는 역할을 함과 아울러 본 발명의 관련 기술분야에서 숙련된 자가 본 발명을 제조 및 사용할 수 있도록 하는 역할을 한다.
도 1은 본 발명의 실시예에 따른 음성 인식 프로세스의 예시적인 흐름도를 나타낸 도면이다.
도 2는 종래의 음성 인식 시스템을 나타낸 도면이다.
도 3은 개개의 프로세싱 유닛에 의해 수행되는 음성 인식 프로세스들을 갖는 종래의 음성 인식 시스템을 나타낸 도면이다.
도 4는 음향 프로세싱 유닛(Acoustic Processing Unit, APU) 및 중앙 프로세싱 유닛(Central Processing Unit, CPU)에 의해 수행되는 음성 인식 프로세스들의 실시예를 나타낸 도면이다.
도 5는 음성 인식 시스템을 위한 주변장치 제어기 인터페이스(Peripheral Controller Interface, PCI) 버스 아키텍처의 실시예를 나타낸 도면이다.
도 6은 음성 인식 시스템을 위한 진보된 주변장치 버스(Advanced Peripheral Bus, APB) 아키텍처의 실시예를 나타낸 도면이다.
도 7은 음성 인식 시스템을 위한 저전력 이중 데이터 전송률(Low Power Double Data Rate, LPDDR) 버스 아키텍처의 실시예를 나타낸 도면이다.
도 8은 음성 인식 시스템을 위한 시스템-레벨 아키텍처의 실시예를 나타낸 도면이다.
도 9는 데이터 패턴 분석을 위한 방법의 실시예를 나타낸 도면이다.
도 10은 애플리케이션-특정 집적 회로(Application-Specific Integrated Circuit, ASIC)와 메모리 디바이스가 통합된 음성 인식 시스템을 위한 시스템-레벨 아키텍처의 실시예를 나타낸 도면이다.
도 11은 애플리케이션-특정 집적 회로(ASIC)와 휘발성 메모리 디바이스와 비-휘발성 메모리 디바이스가 통합된 음성 인식 시스템을 위한 시스템-레벨 아키텍처의 실시예를 나타낸 도면이다.
도 12는 애플리케이션-특정 집적 회로(ASIC)와 중앙 프로세싱 유닛(CPU)을 포함하는 시스템-온-칩(System-On-Chip, SOC)을 구비한 음성 인식 시스템을 위한 시스템-레벨 아키텍처의 실시예를 나타낸 도면이다.
도 13은 애플리케이션-특정 집적 회로(ASIC)와 중앙 프로세싱 유닛(CPU)을 포함하는 시스템-온-칩(SOC)을 구비한 음성 인식 시스템을 위한 시스템-레벨 아키텍처의 또 다른 실시예를 나타낸 도면이다.
도 14는 음향 프로세싱 유닛(Acoustic Processing Unit, APU)의 실시예를 나타낸 도면이다.
도 15는 음향 프로세싱 유닛(APU)을 위한 세논 점수화 유닛(Senone Scoring Unit, SSU) 제어기의 실시예를 나타낸 도면이다.
도 16은 음향 프로세싱 유닛(APU)을 위한 거리 계산기의 실시예를 나타낸 도면이다.
도 17은 음향 프로세싱 유닛(APU)을 위한 음향 모델링 프로세스의 방법의 실시예를 나타낸 도면이다.
도 18은 본 발명의 실시예에 따른 산술연산 로직 유닛(arithmetic logic unit)의 실시예를 나타낸 도면이다.
도 19는 본 발명의 실시예에 따른 도 18에 제시된 산술연산 로직 유닛의 실시예를 나타낸 도면이다.
도 20은 본 발명의 실시예에 따른 컴퓨터연산 유닛(computational unit)의 실시예를 나타낸 도면이다.
도 21은 일-차원 거리 점수를 컴퓨터연산하기 위한 방법의 실시예를 나타낸 도면이다.
도 22 및 도 23은 음향 프로세싱 시스템의 실시예를 나타낸 도면이다.
도 24는 하드웨어 가속기의 실시예를 나타낸 도면이다.
도 25는 APU 소프트웨어 스택을 예시하는 블록도이다.
도 26은 동시실행 프로세싱의 실시예를 나타낸 도면이다.
도 27은 음향 프로세싱의 방법의 실시예를 나타낸 도면이다.
도 28은 본 발명의 실시예들 혹은 그 일부분들이 컴퓨터 판독가능 코드로서 구현될 수 있는 그러한 예시적인 컴퓨터 시스템의 실시예를 나타낸 도면이다.
다음의 상세한 설명은 첨부되는 도면들을 참조하는바, 이 도면들은 본 발명과 일관되는 예시적인 실시예들을 나타낸다. 다른 실시예들이 가능하며, 본 발명의 사상 및 범위 내에서 이러한 실시예들에 대한 수정이 행해질 수 있다. 따라서, 이러한 상세한 설명은 본 발명의 범위를 한정시키고자 하는 것이 아니다. 오히려, 본 발명의 범위는 첨부되는 특허청구범위에 의해 정의된다.
아래에서 설명되는 바와 같이 본 발명이 소프트웨어, 하드웨어, 펌웨어 그리고/또는 도면에서 예시되는 엔티티들의 다수의 다양한 실시예들로 구현될 수 있음은 본 발명의 관련 기술분야에서 숙련된 사람에게는 명백할 것이다. 따라서, 본 발명의 실시예들의 동작 행태는 본 명세서에 제시되는 수준의 상세한 설명이 주어지는 경우 이러한 실시예들의 수정 및 변형이 가능하다는 이해 하에서 기술될 것이다.
본 명세서는 본 발명의 특징들을 포함하고 있는 하나 이상의 실시예들을 개시한다. 개시되는 이러한 실시예들은 단지 본 발명의 예일 뿐이다. 본 발명의 범위는 개시되는 이러한 실시예들로 한정되지 않는다. 본 발명은 본 명세서에 첨부되는 특허청구범위에 의해 정의된다.
본 명세서에서 "일 실시예", "실시예", "예시적 실시예" 등으로 지칭되면서 설명되는 실시예들은 그 설명되는 실시예들이 특유의 특징, 구조, 혹은 특성을 포함할 수 있음을 표시하지만, 모든 실시예가 반드시 이러한 특유의 특징, 구조, 혹은 특성을 포함할 필요는 없음을 표시하는 것이다. 더욱이, 이러한 어구들이 동일한 실시예를 반드시 말하는 것도 아니다. 또한, 특유의 특징, 구조, 혹은 특성이 실시예와 연계되어 설명되는 경우, 이는 이러한 특징, 구조, 혹은 특성이 다른 실시예들과 연계되어 실행가능하다는 것은 이러한 것이 명시적으로 기술되어 있는지 혹은 없는지에 상관없이 본 발명의 기술분야에서 숙련된 자의 지식 범위 내에 있는 것임을 이해해야 한다.
1. 음성 인식 프로세스( Speech Recognition Process )
도 1은 본 발명의 실시예에 따른 음성 인식 프로세스(100)의 예시적인 흐름도를 나타낸 도면이다. 음성 인식 프로세스(100)는 신호 프로세싱 스테이지(signal processing stage)(110), 음향 모델링 스테이지(acoustic modeling stage)(120), 음소 평가 스테이지(phoneme evaluation stage)(130), 그리고 단어 모델링 스테이지(word modeling stage)(140)를 포함한다.
신호 프로세싱 스테이지(110)에서, 임의의 들어오는 음성 신호(105)의 아날로그 신호 표현은 인간의 귀가 들을 수 있는 주파수 범위 밖에 있는 신호의 고주파 성분을 제거하기 위해 필터링될 수 있다. 그 다음에 필터링된 신호는 본 발명의 관련 기술분야에서 숙련된 사람에게 잘 알려져 있는 샘플링 및 양자화 기법들을 사용하여 디지털화된다. 디지털화된 파형으로부터 하나 이상의 매개변수적 디지털 표현(이것은 또한 본 명세서에서 "특징 벡터(feature vector)들(115)"로 지칭됨)이 예를 들어 선형 예측 코딩(linear predictive coding) 및 고속 퓨리에 변환(fast fourier transforms)과 같은 기법들을 사용하여 추출될 수 있다. 이러한 추출은 예를 들어, 대략 10ms의 규칙적인 시간 간격들 혹은 프레임들에서 일어날 수 있다.
음향 모델링 스테이지(120)에서, 신호 프로세싱 스테이지(110)로부터의 특징 벡터들(115)은 메모리에 저장된 하나 이상의 다변수 가우시안 확률 분포들(이것은 또한, 본 명세서에서 "가우시안 확률 분포들"로 지칭됨)과 비교된다. 메모리에 저장된 하나 이상의 가우시안 확률 분포들은 음향 라이브러리(acoustic library)의 일부일 수 있고, 여기서 가우시안 확률 분포들은 세논들을 나타낸다. 본 발명의 관련 기술분야에서 숙련된 사람이 이해하는 바와 같이, 세논은 관심 있는 언어에 대한 서브-음성 단위(sub-phonetic unit)를 말한다. 개개의 세논은 예를 들어, 8개의 성분들로 이루어질 수 있고, 이러한 성분들 각각은 39-차원 가우시안 확률 분포를 나타낼 수 있다.
음향 모델링 스테이지(120)는 예를 들어, 1000개 이상의 세논들을 프로세싱할 수 있다. 결과적으로, 특징 벡터들(115)을 하나 이상의 가우시안 확률 분포들과 비교하는 것은 컴퓨터연산-집약적인 태스크(computationally-intensive task)일 수 있는데, 왜냐하면 예를 들어, 수천 개의 가우시안 확률 분포들이 매 시간 간격 혹은 프레임(예를 들어, 10ms)마다 특징 벡터들(115)과 비교될 수 있기 때문이다. 음향 라이브러리에서 나타내어진 세논들 각각에 대한 점수들의 세트(이것은 또한 본 명세서에서 "세논 점수(senone score)들"로 지칭됨)는 특징 벡터들(115) 각각을 하나 이상의 가우시안 확률 분포들 각각과 비교한 결과로부터 나온 것이다. 음향 모델링 스테이지(120)는 세논 점수들(125)을 음소 평가 스테이지(130)에 제공한다.
세논 평가 스테이지(130)에서, 은닉 마르코프 모델(Hidden Markov Model, HMM)들은, 상태들의 세트, 그리고 이러한 상태들 각각 간의 전이 확률들(transition probabilities)의 선험적 세트로서 음소를 특징짓기 위해 사용될 수 있으며, 여기서 상태는 세논과 관련된다. 소정의 관측된 세논들의 시퀀스에 대해서, 대응하는 HMM에서의 가장-가능성있는(most-likely) 상태들의 시퀀스가 존재한다. 이러한 대응하는 HMM은 임의의 관측된 음소와 관련될 수 있다. 각각의 HMM이 음소에 대응할 가능성(likelihood)을 찾기 위해 비터비 알고리즘(Viterbi algorithm)이 사용될 수 있다.
비터비 알고리즘은 컴퓨터연산을 수행하고, 이러한 컴퓨터연산은 제 1 프레임으로 시작하여 시간-동기 방식(time-synchronous manner)으로 한번에 하나씩 후속 프레임들로 진행한다. 확률 점수는 고려되고 있는 HMM들 내의 각각의 세논에 대해 컴퓨터연산된다. 따라서, 비터비 알고리즘이 순차적 프레임들을 분석함에 따라 그 가능한 세논 시퀀스들 각각에 대한 누적되는 확률 점수가 연속적으로 컴퓨터연산될 수 있다. 음소 평가 스테이지(130)는 음소 가능성 혹은 확률(이것은 또한 본 명세서에서 "음소 점수(phoneme score)"로 지칭됨)을 단어 모델링 스테이지(140)에 제공한다.
단어 모델링 스테이지(140)에서는, 시간 경과에 따른 음소들의 가장-가능성있는 스트링(string) 및 후속하는 단어들을 결정하기 위해 탐색 기법들이 사용된다. 예를 들어, 트리-기반의 알고리즘(tree-based algorithm)들과 같은 탐색 기법들이 음소들의 가장-가능성있는 스트링을 결정하기 위해 사용될 수 있다.
2. 종래의 음성 인식 시스템( Conventional Speech Recognition System )
도 2는 종래의 음성 인식 시스템(200)을 나타낸 도면이다. 음성 인식 시스템(200)은 입력 디바이스(210), 프로세싱 유닛(220), 메모리 디바이스(230), 및 데이터 버스(240)를 포함하는바, 이들 모두는 개별적 물리적 컴포넌트들이다. 메모리 디바이스(230)는 예를 들어, 프로세싱 유닛(220) 외부에 있는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM) 디바이스일 수 있으며 데이터 버스(240)를 통해 프로세싱 유닛(220)과 통신을 한다. 입력 디바이스(210)는 또한 데이터 버스(240)를 통해 프로세싱 유닛(220)과 통신을 한다. 데이터 버스(240)는 전형적인 버스 폭을 갖는바, 예를 들어, 8개 내지 32개의 비트들의 버스 폭을 갖는다.
입력 디바이스(210)는 임의의 들어오는 음성 신호(예를 들어, 도 1의 들어오는 음성 신호(105))를 수신하여 그 들어오는 음성 신호와 관련된 음향 진동(acoustical vibration)들을 아날로그 신호로 변환하도록 구성된다. 이러한 아날로그 신호는 아날로그 디지털 변환기(analog to digital converter)(도 2에서는 도시되지 않음)를 사용하여 디지털화되고, 그 결과적인 디지털 신호가 데이터 버스(240)를 통해 프로세싱 유닛(220)에 전달된다. 입력 디바이스(210)는 예를 들어, 마이크로폰(microphone)일 수 있다.
프로세싱 유닛(220)은 도 1과 관련하여 앞서 설명된, 신호 프로세싱 스테이지(110), 음향 모델링 스테이지(120), 음소 평가 스테이지(130), 및 단어 모델화기 스테이지(140)에 따라 이러한 디지털 입력 신호를 프로세싱하도록 구성된다. 도 3은 프로세싱 유닛(220)에 의해 수행되는 음성 인식 모듈들을 갖는 음성 인식 시스템(200)을 나타낸 도면이다. 프로세싱 유닛은, 신호 프로세싱 모듈(310), 음향 모델링 모듈(320), 음소 평가 모듈(330), 및 단어 모델링 모듈(340)을 포함하고, 이들은 도 1의 신호 프로세싱 스테이지(110), 음향 모델링 스테이지(120), 음소 평가 스테이지(130), 및 단어 모델화기 스테이지(140)와 유사한 방식으로 각각 동작한다.
도 3을 참조하면, 신호 프로세싱 모듈(310)은 (예를 들어, 입력 디바이스(210)로부터의) 들어오는 음성 신호(305)의 디지털 입력 신호 표현을 하나 이상의 특징 벡터들(315)로 변환시킬 수 있다. 음향 모델링 모듈(320)은 하나 이상의 특징 벡터들(315)을 메모리 디바이스(330) 내의 음향 라이브러리에 저장된 하나 이상의 가우시안 확률 분포들과 비교한다. 즉, 하나 이상의 특징 벡터들(315)의 하나 이상의 가우시안 확률 분포들과의 비교들 각각을 위해, 프로세싱 유닛(220)은 데이터 버스(240)를 통해 메모리 디바이스(230)에 액세스한다. 수천 개의 세논들을 갖는 음향 라이브러리에 대해(여기서 세논들 각각은 복수의 가우시안 확률 분포들로 구성됨), 음향 모델링 모듈(320)에 의해 수행되는 비교들은 컴퓨터연산-집약적일뿐만아니라, 데이터 버스(240)를 통한 음향 모델링 모듈(320)에 의한 메모리 디바이스(230)로의 수천 번의 액세스들도 또한 컴퓨터연산-집약적이고 시간 소모가 크다. 메모리 디바이스(230)에 대한 수천 번의 액세스들은 또한 데이터 버스(240)의 버스 폭에 의해 악화되는바, 여기서 메모리 디바이스(230)에 대한 복수의 액세스들은 각각의 가우시안 확률 분포에 액세스하기 위해 음향 모델링 모듈(320)에 의해 요구될 수 있다. 더욱이, 데이터 버스(240)와 관련된 배선간 기생(interconnect parasitics)은 메모리 디바이스(230)와 음향 모델링 모듈(320) 간의 데이터 전달에 오류를 일으킬 수 있다.
음소 평가 모듈(330)은 음향 모델링 모듈(320)로부터 세논 점수들(325)을 수신한다. 도 1의 음성 인식 프로세스(100)와 관련하여 앞서 설명된 바와 같이, HMM들은 상태들의 세트, 그리고 이러한 상태들 각각 간의 전이 확률들의 선험적 세트로서 음소를 특징짓기 위해 사용될 수 있으며, 여기서 상태는 세논들의 시퀀스로 구성된다. 음소 평가 모듈(330)에 의해 사용되는 상태들의 세트들, 그리고 전이 확률들의 선험적 세트들은 메모리 디바이스(230) 내에 저장될 수 있다. 음소 평가 모듈(330)은 음소 점수들(335)을 단어 모델링 모듈(340)에 제공한다.
단어 모델링 모듈(340)은, 시간 경과에 따른 음소들의 가장-가능성있는 스트링(예를 들어, 가장-가능성있는 음소들(335)) 및 후속하는 단어들을 결정하기 위해 예를 들어, 트리-기반의 알고리즘들과 같은 탐색 기법들을 사용한다.
도 3의 종래의 음성 인식 시스템(300)이 갖는 문제는 다른 것들 중에서도, 음향 모델링 프로세스로 인한 프로세싱 유닛(220)에 부가되는 상당량의 부하이다. 예를 들어, 메모리 디바이스(220)에 저장된 하나 이상의 가우시안 확률 분포들과 하나 이상의 특징 벡터들(315)의 각각의 비교를 위해, 메모리 디바이스(220)는 프로세싱 유닛(220)에 의해 액세스된다. 결과적으로, 상당량의 컴퓨터연산 리소스들이 음향 모델링 프로세스에 제공되게 되고, 이것은 또한 프로세싱 유닛(220)에 상당량의 부하를 부가하게 된다. 음향 모델링 프로세스에 의해 프로세싱 유닛(220)에 부가되는 부하는 프로세싱 유닛(220)이 입력 디바이스(210)로부터의 디지털 신호들뿐만 아니라 다른 애플리케이션들로부터의 데이터를 프로세싱할 수 있는 속도에 영향을 미치게 된다(예를 들어, 프로세싱 유닛(220)은 복수의 애플리케이션들로부터의 데이터를 동시에 프로세싱하는 다중사용자/다중프로그래밍 환경에서 동작할 수 있음). 더욱이, 한정된 메모리 리소스들을 갖는 컴퓨터연산 시스템들(예를 들어, 핸드헬드 디바이스들)에 있어서, 음향 모델링 프로세스는 프로세싱 유닛(220)에 상당량의 부하를 부가할 뿐만 아니라 데이터 버스(240)의 대역폭 및 메모리 디바이스(230)의 상당량의 부분을 소비한다. 다른 것들 중에서도 프로세싱 능력, 속도, 및 메모리 리소스들과 관련된 이러한 문제점들은, 다수의 애플리케이션들에서 실시간으로 혹은 실질적으로 실시간에 가깝게 그 들어오는 음성 신호들을 프로세싱하려는 요구로 인해 더욱 악화되고 있다.
3. 음향 프로세싱 유닛을 갖는 음성 인식 시스템들( Speech Recognition Systems with an Acoustic Processing Unit )
본 발명의 실시예들은 도 2 및 도 3의 종래의 음성 인식 시스템들(200 및 300) 각각에 관하여 앞서 설명된 문제들에 대처한다. 일 실시예에서, 음향 모델링 프로세스는 전용 프로세싱 유닛(이것은 또한 본 명세서에서 "음향 프로세싱 유닛(Acoustic Processing Unit)" 혹은 "APU"로 지칭됨)에 의해 수행된다. APU는 도 3의 프로세싱 유닛(220)(이것은 또한 본 명세서에서 "중앙 프로세싱 유닛(Central Processing Unit)" 혹은 "CPU"로 지칭됨)과 함께 동작한다. 예를 들어, APU는 CPU로부터 하나 이상의 특징 벡터들(예를 들어, 도 3의 특징 벡터들(315))을 수신하고, 하나 이상의 가우시안 확률 분포들에 근거하여 세논 점수(예를 들어, 도 3의 세논 점수(325))를 계산하고, 그리고 세논 점수를 CPU에 출력한다. 일 실시예에서, 하나 이상의 가우시안 확률 분포들은 APU 내에 저장될 수 있다. 대안적으로, 또 다른 실시예에서, 하나 이상의 가우시안 확률 분포들은 APU 외부에 저장될 수 있는바, 여기서 APU는 하나 이상의 가우시안 확률 분포들을 외부 메모리 디바이스로부터 수신하게 된다. 아래에서 더 상세히 설명되는 APU의 아키텍처에 근거하여, 세논 점수에 대한 가속화된 계산이 달성된다.
비록 본 개시내용의 일부분이 음성 인식 시스템과 관련지어 설명되지만, 본 발명의 관련 기술분야에서 숙련된 사람은 본 명세서에서 설명되는 실시예들이 본 명세서에서의 설명을 기반으로 하여 임의의 데이터 패턴 인식 애플리케이션들에 적용가능하다는 것을 알 수 있을 것이다. 이러한 다른 데이터 패턴 인식 애플리케이션들은 이미지 프로세싱(image processing), 오디오 프로세싱(audio processing), 및 필기 인식(handwriting recognition)을 포함하지만 이러한 것으로 한정되는 것은 아니다. 이러한 다른 데이터 패턴 인식 애플리케이션들은 본 명세서에 개시되는 실시예들의 사상 및 범위 내에 있다.
도 4는 APU 및 CPU에 의해 수행되는 음성 인식 프로세스(400)의 실시예를 나타낸 도면이다. 일 실시예에서, CPU는 신호 프로세싱 프로세스(410), 음소 평가 프로세스(430), 및 단어 모델링 프로세스(440)를 수행한다. APU는 음향 모델링 프로세스(420)를 수행한다. 신호 프로세싱 프로세스(410), 음향 모델링 프로세스(420), 음소 평가 프로세스(430), 및 단어 모델링 프로세스(440)는 본 명세서에서 달리 설명되는 점을 제외하고는, 도 1의 신호 프로세싱 스테이지(110), 음향 모델링 스테이지(120), 음소 평가 스테이지(130), 및 단어 모델화기 스테이지(140) 각각과 유사한 방식으로 동작한다.
도 4의 실시예를 참조하면, 피드백(feedback)(450)은 음성 인식 프로세스(400)의 선택적 특징인바, 이러한 피드백(450)에서 음소 평가 프로세스(430)는 본 발명의 실시예에 따라, 활성 세논 목록(active senone list)을 음향 모델링 프로세스(420)에 제공할 수 있다. APU는 활성 세논 목록 내에 표시된 하나 이상의 세논들과 하나 이상의 특징 벡터들을 비교할 수 있다. 이러한 피드백(450)은 아래에서 더 설명된다.
또 다른 실시예에서, 음향 모델링 프로세스(420)는 음향 라이브러리와 관련된 모든 세논들을 하나 이상의 특징 벡터들과 비교할 수 있다. 이러한 경우에, 피드백(450)은 요구되지 않는데, 왜냐하면 음소 평가 프로세스(430)는 후속 프로세싱을 위해 APU로부터 세논 점수들의 전체 세트를 수신하기 때문이다(예를 들어, "모두 점수화(score all)" 기능).
A. 음향 프로세싱 유닛을 갖는 음성 인식 시스템들을 위한 시스템 버스 아키텍처들( System Bus Architectures for Speech Recognition Systems with an Acoustic Processing Unit )
일 실시예에서, APU와 CPU는, 직렬 주변장치 인터페이스(Serial Peripheral Interface, SPI) 버스, 주변장치 제어기 인터페이스(Peripheral Controller Interface, PCI) 버스, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API) 버스, 진보된 마이크로제어기 버스 아키텍처 고-성능 버스(Advanced Microcontroller Bus Architecture High-Performance Bus, AHB), 진보된 주변장치 버스(Advanced Peripheral Bus, APB), 메모리 버스, 혹은 임의의 다른 타입의 버스를 통해, 서로 통신할 수 있다. 예를 들어, 도 4의 음성 인식 프로세스(400)를 위한 시스템 버스 아키텍처들의 비-한정적 실시예들이 아래에서 더 상세히 설명된다.
도 5는 음성 인식 시스템(500)을 위한 버스 아키텍처의 실시예를 나타낸 도면이다. 음성 인식 시스템(500)은 APU(510), CPU(520), 프로세서/메모리 버스(530), 캐쉬(cache)(540), 시스템 제어기(550), 메인 메모리(main memory)(560), 복수의 PCI 디바이스들(5701-570M), 입력/출력(Input/Output, I/O) 버스(580), 및 PCI 브리지(PCI bridge)(590)를 포함한다. 예를 들어, 캐쉬(540)는 정적 랜덤 액세스 메모리(Static Random Access Memory, SRAM) 디바이스 상에 구현되는 제 2 레벨 캐쉬(second-level cache)일 수 있다. 더욱이, 메인 메모리(560)는 예를 들어, 동적 랜덤 액세스 메모리(DRAM) 디바이스일 수 있다. 음성 인식 시스템(500)은 본 발명의 실시예에 따라, 시스템-온-칩(System-On-Chip, SOC)으로서 구현될 수 있다.
도 5에 예시되는 바와 같이, APU(510)는 PCI 브리지(590)를 통해 I/O 버스(580)에 통신가능하게 결합된다. I/O 버스(580)는 예를 들어, PCI 버스일 수 있다. PCI 브리지(590) 및 I/O 버스(580)를 통해, APU(510)는 시스템 제어기(550) 및 CPU(520)에 통신가능하게 결합된다. (도 5에는 도시되지 않은) 또 다른 실시예에서, APU(510)는 프로세서/메모리 버스(530)에 직접 결합될 수 있고 이에 따라 CPU(520)와 통신가능하게 결합될 수 있다.
도 6은 음성 인식 시스템(600)을 위한 버스 아키텍처의 또 다른 실시예를 나타낸 도면이다. 음성 인식 시스템(600)은 APU(510), CPU(520), 캐쉬(540), AHB(610), 시스템 제어기(620), 비-휘발성 메모리 디바이스(630), 메인 메모리(640), APB 브리지(650), APB(660), 및 복수의 디바이스들(6701-670M)을 포함한다. 비-휘발성 메모리 디바이스(630)는 예를 들어, 플래시 메모리 디바이스(Flash memory device)일 수 있다. 메인 메모리(640)는 예를 들어, DRAM 디바이스일 수 있다. CPU(520)는 예를 들어, (ARM 홀딩스 피엘씨(Holdings plc)에 의해 개발된) ARM 프로세서일 수 있다. 음성 인식 시스템(600)은 본 발명의 실시예에 따라, SOC로서 구현될 수 있다.
도 6에 예시되는 바와 같이, APU(510)는 APB 브리지(650) 및 APB(660)를 통해 시스템 제어기(620)에 통신가능하게 결합된다. 시스템 제어기(620)는 또한 AHB(610)를 통해 CPU(520)에 통신가능하게 결합된다. 또한, 시스템 제어기(620)는 AHB(610)를 통해 CPU(520)에 통신가능하게 결합된다.
도 7은 음성 인식 시스템(700)을 위한 버스 아키텍처의 또 다른 실시예를 나타낸 도면이다. 음성 인식 시스템(700)은 APU(510), CPU(520), 캐쉬(540), AHB(610), 시스템 제어기(620), 비-휘발성 메모리 디바이스(630), 저전력 이중 데이터 전송률(Low Power Double Data Rate, LPDDR) 인터페이스(710), LPDDR 메모리 버스(720), 및 메인 메모리(730)를 포함한다. 메인 메모리(730)는 예를 들어, DRAM 디바이스일 수 있다. CPU(520)는 예를 들어, (ARM 홀딩스 피엘씨에 의해 개발된) ARM 프로세서일 수 있다. 음성 인식 시스템(700)은 본 발명의 실시예에 따라, SOC로서 구현될 수 있다.
도 7에 예시되는 바와 같이, APU(510) 및 메인 메모리(730)는 LPDDR 메모리 버스(720)를 통해 LPDDR 인터페이스(710)에 통신가능하게 결합된다. APU(510)는 또한 LPDDR 메모리 버스(720) 및 LPDDR 인터페이스(710)를 통해 시스템 제어기(620)에 통신가능하게 결합된다. 또한, 시스템 제어기(620)는 AHB(610)를 통해 CPU(520)에 통신가능하게 결합된다.
B. 음향 프로세싱 유닛을 갖는 음성 인식 시스템들을 위한 시스템-레벨 아키텍처들( System - Level Architectures for Speech Recognition Systems with an Acoustic Processing Unit )
도 8은 음성 인식 시스템(800)을 위한 시스템-레벨 아키텍처의 실시예를 나타낸 도면이다. 음성 인식 시스템(800)은 APU(810), 메모리 제어기(820), 비-휘발성 메모리 디바이스(830), 및 휘발성 메모리 디바이스(840)를 포함한다. 메모리 제어기(820)는 버스(815)를 통해 APU(810)에 통신가능하게 결합되고, 버스(825)(이것은 특정 실시예들에서 둘 이상의 버스들을 나타낼 수 있음)를 통해 비-휘발성 메모리 디바이스(830) 및 휘발성 메모리 디바이스(850)에 통신가능하게 결합된다. 일 실시예에서, APU(810) 및 메모리 제어기(820)는 단일 칩 상에 집적된다. 대안적으로, 일 실시예에서, APU(810) 및 메모리 제어기(820)는 개별 칩들 상에 집적된다. 비-휘발성 메모리 디바이스(830)는 NAND 메모리 모듈, NOR 메모리 모듈, 혹은 또 다른 타입의 비-휘발성 메모리 디바이스일 수 있다. 일 실시예에서, 휘발성 메모리 디바이스(840)는 DRAM 디바이스일 수 있다. 더욱이, APU(810)는, 본 발명의 실시예에 따라, 예를 들어, 도 5 내지 도 7에 관하여 앞서 설명된 버스 아키텍처들 중 하나를 사용하여 CPU(도 8에서는 도시되지 않음)와 통신할 수 있다.
비-휘발성 메모리 디바이스(830)는 음성 인식 프로세스에서 사용될 음향 라이브러리를 저장할 수 있는바, 여기서 음향 라이브러리는 본 발명의 실시예에 따라, 1000개 이상의 세논들을 포함할 수 있다. 일 실시예에서, 세논 요청이 음성 인식 시스템(800)에 의해 수신되는 경우, 메모리 제어기(820)는 음향 라이브러리를 비-휘발성 메모리 디바이스(830)로부터 버스(825)를 통해 휘발성 메모리 디바이스(840)로 복사(copy)한다. 비-휘발성 메모리 디바이스와 휘발성 메모리 디바이스 간의 음향 라이브러리 전달 프로세스는 예를 들어, 다이렉트 메모리 액세스(Direct Memory Access, DMA) 동작을 사용하여 구현될 수 있다.
일 실시예에서, 음성 인식 시스템(800)은 세논 점수화 요청을 예측하여 파워온(power on)될 수 있다. 파워업(power up) 이후, 비-휘발성 메모리 디바이스(830)로부터의 음향 라이브러리는 휘발성 메모리 디바이스(840)에 바로 복사된다. 휘발성 메모리 디바이스(840)가 음향 라이브러리를 수신하면, APU(810)는 휘발성 메모리 디바이스(840)에 저장된 음향 라이브러리를 사용하여 세논 점수화 요청들의 프로세싱(예를 들어, 도 4의 음향 모델링 프로세스(420))을 시작할 준비를 한다.
세논 점수화 요청이 APU(810)에 의해 수신되는 경우, 음향 라이브러리로부터의 임의의 선택된 세논은 휘발성 메모리 디바이스(840)로부터 메모리 제어기(820)를 통해 APU(810)에 복사된다. APU(810)는 APU(810)에 의해 수신된 데이터 스트림(data stream) 및 그 선택된 세논에 근거하여 세논 점수(예를 들어, 도 3의 하나 이상의 특징 벡터들(315))를 계산한다. 계산이 완료된 이후, APU(810)는 세논 점수를 그 요청을 한 시스템(예를 들어, CPU)에 전달한다.
일 실시예에서, 미리결정된 시간의 무활동(inactivity) 상태(예를 들어, APU(810)에 의한 세논 점수화 무활동 상태) 이후, 휘발성 메모리 디바이스(840)는 파워다운(power down)될 수 있다. 결과적으로, 음성 인식 시스템(800)에서의 파워 효율은 향상될 수 있는데, 왜냐하면 휘발성 메모리 디바이스(840) 내의 메모리 셀들의 주기적인 리프레시(refresh)가 요구되지 않기 때문이다. 여기서, 음향 라이브러리는 비-휘발성 메모리 디바이스(830)에 여전히 저장되어 있는바, 이에 따라 음향 라이브러리는 휘발성 메모리 디바이스(840)가 파워다운되는 경우에도 유지될 수 있게 된다. 본 발명의 기술분야에서 숙련된 사람이 이해하는 바와 같이, 휘발성 메모리 디바이스(840)가 파워다운되는 경우, 그 안에 저장된 콘텐츠들(예를 들어, 음향 라이브러리)은 손실될 것이다. 일 실시예에서, 휘발성 메모리 디바이스(840)가 파워다운되는 경우, 음성 인식 시스템(800)의 다른 컴포넌트들도 또한 파워다운될 수 있다.
도 9는 데이터 패턴 분석을 위한 방법(900)의 실시예를 나타낸 도면이다. 도 8의 음성 인식 시스템(800)은 예를 들어, 방법(900)의 단계들을 수행하기 위해 사용될 수 있다. 일 실시예에서, 방법(900)은 도 4의 음향 모델링 프로세스(420)를 수행하기 위해 사용될 수 있다. 본 명세서에서의 설명을 기반으로 하여, 본 발명의 관련 기술분야에서 숙련된 사람은 방법(900)이 예를 들어, 이미지 프로세싱, 오디오 프로세싱, 및 필기 인식과 같은 다른 데이터 패턴 인식 애플리케이션들에서 사용될 수 있음을 이해할 것이다.
단계(910)에서, 복수의 데이터 패턴들이 비-휘발성 메모리 디바이스(예를 들어, 도 8의 비-휘발성 메모리 디바이스(830))로부터 휘발성 메모리 디바이스(예를 들어, 도 8의 휘발성 메모리 디바이스(840))로 복사된다. 일 실시예에서, 복수의 데이터 패턴들은 음향 라이브러리와 관련된 하나 이상의 세논들일 수 있다.
단계(920)에서, 휘발성 메모리 디바이스로부터의 데이터 패턴은 컴퓨터연산 유닛(예를 들어, 도 8의 APU(810))에 의해 요청되고, 메모리 제어기(예를 들어, 도 8의 메모리 제어기(820)) 및 버스(예를 들어, 도 8의 버스(825))를 통해 컴퓨터연산 유닛으로 전달된다. 일 실시예에서, 그 요청된 데이터 패턴은 휘발성 메모리 디바이스에 저장된 음향 라이브러리로부터의 세논이다.
단계(930)에서는, 요청된 데이터 패턴을 수신한 이후, 컴퓨터연산 유닛(예를 들어, 도 8의 APU(810))이 컴퓨터연산 유닛에 의해 수신된 데이터 스트림에 관해 데이터 패턴 분석을 수행한다. 일 실시예에서, 데이터 패턴 분석은 컴퓨터연산 유닛에 의해 수신된 데이터 스트림 및 선택된 세논에 근거하는 세논 점수 계산이다(예를 들어, 도 3의 하나 이상의 특징 벡터들(315)). 데이터 패턴 분석을 완료한 이후, 컴퓨터연산 유닛은 데이터 패턴 분석 결과를 그 요청을 한 시스템(예를 들어, CPU)에 전달한다.
단계(940)에서, 휘발성 메모리 디바이스는 파워다운된다. 일 실시예에서, 휘발성 메모리 디바이스는, 미리결정된 시간의 무활동 상태(예를 들어, 컴퓨터연산 유닛에 의한 데이터 패턴 분석에서의 무활동 상태) 이후, 파워다운된다. 결과적으로, 파워 효율은 향상될 수 있는데, 왜냐하면 휘발성 메모리 디바이스 내의 메모리 셀들의 주기적인 리프레시가 요구되지 않기 때문이다. 일 실시예에서, 휘발성 메모리 디바이스가 파워다운되는 경우, 시스템의 다른 컴포넌트들(예를 들어, 음성 인식 시스템(800)의 다른 컴포넌트들)도 또한 파워다운될 수 있다.
도 10은 음성 인식 시스템(1000)을 위한 시스템-레벨 아키텍처의 또 다른 실시예를 나타낸 도면이다. 음성 인식 시스템(1000)은 APU(1010), SOC(1040), DRAM 디바이스(1060), 플래시 메모리 디바이스(1070), 및 I/O 버스(1080)를 포함한다. 일 실시예에서, APU(1010)는 음향 라이브러리를 저장하도록 구성된 메모리 디바이스(1020)와, 그리고 음향 모델링 프로세스(예를 들어, 도 4의 음향 모델링 프로세스(420))를 수행하도록 구성된 애플리케이션-특정 집적 회로(ASIC)(1030)를 포함하는 통합된 칩이다. 또 다른 실시예에서, ASIC(1030) 및 메모리 디바이스(1020)는 두 개의 별개의 칩들 상에 집적될 수 있다. SOC(1040)는 본 발명의 실시예에 따라, 신호 프로세싱 프로세스, 음소 평가 프로세스, 및 단어 모델링 프로세스(예를 들어, 도 4의 신호 프로세싱 프로세스(410), 음소 평가 프로세스(430), 및 단어 모델링 프로세스(440) 각각과 같은 것)을 수행하도록 구성된 CPU(1050)를 포함한다. 일 실시예에서, APU(1010) 및 SOC(1040)는 두 개의 별개의 칩들 상에 집적된다.
도 11은 음성 인식 시스템(1100)을 위한 시스템-레벨 아키텍처의 또 다른 실시예를 나타낸 도면이다. 음성 인식 시스템(1100)은 APU(1110), SOC(1040), DRAM 디바이스(1060), 플래시 메모리 디바이스(1070), 및 I/O 버스(1080)를 포함한다. 일 실시예에서, APU(1110)는 ASIC(1120), 휘발성 메모리 디바이스(1130), 및 비-휘발성 메모리 디바이스(1140)를 포함하는 통합된 칩이다. 또 다른 실시예에서, ASIC(1120), 휘발성 메모리 디바이스(1130), 그리고 비-휘발성 메모리 디바이스(1140)는 두 개의 칩들 상에 집적될 수 있는바, 예를 들어, 하나의 칩 상에는 ASIC(1120) 및 메모리 디바이스(1130)가 집적되고 다른 칩 상에는 비-휘발성 메모리 디바이스(1140)가 집적되거나; 또는 하나의 칩 상에는 ASIC(1120)가 집적되고 다른 칩 상에는 휘발성 메모리 디바이스(1130) 및 비-휘발성 메모리 디바이스(1140)가 집적되거나; 또는 하나의 칩 상에는 ASIC(1120) 및 비-휘발성 메모리 디바이스(1140)가 집적되고 다른 칩 상에는 휘발성 메모리 디바이스(1130)가 집적될 수 있다. 또 다른 실시예에서, ASIC(1120), 휘발성 메모리 디바이스(1130), 및 비-휘발성 메모리 디바이스(1140) 각각은 별개의 칩들 상에 집적될 수 있는바, 즉 세 개의 개별 칩들 상에 집적될 수 있다.
비-휘발성 메모리 디바이스(1140)는 본 발명의 실시예에 따라, APU(1010)가 파워-업되면 휘발성 메모리 디바이스(1130)에 복사되는 음향 모델을 저장하도록 구성될 수 있다. 일 실시예에서, 비-휘발성 메모리 디바이스는 플래시 메모리 디바이스일 수 있고, 휘발성 메모리 디바이스(1130)는 DRAM 디바이스일 수 있다. 더욱이, ASIC(1120)는 본 발명의 실시예에 따라, 음향 모델링 프로세스(예를 들어, 도 4의 음향 모델링 프로세스(420))를 수행하도록 구성될 수 있다.
도 12는 음성 인식 시스템(1200)을 위한 시스템-레벨 아키텍처의 또 다른 실시예를 나타낸 도면이다. 음성 인식 시스템(1200)은 DRAM 디바이스(1060), 플래시 메모리 디바이스(1070), I/O 인터페이스(1080), 메모리 디바이스(1210), 및 SOC(1220)를 포함한다. 일 실시예에서, SOC(1220)는 ASIC(1230) 및 CPU(1240)를 포함하는 통합된 칩이다. ASIC(1230)는 음향 모델링 프로세스(예를 들어, 도 4의 음향 모델링 프로세스(420))를 수행하도록 구성될 수 있고, CPU(1240)는 본 발명의 실시예에 따라, 신호 프로세싱 프로세스, 음소 평가 프로세스, 및 단어 모델링 프로세스(예를 들어, 도 4의 신호 프로세싱 프로세스(410), 음소 평가 프로세스(430), 및 단어 모델링 프로세스(440) 각각과 같은 것)을 수행하도록 구성될 수 있다.
메모리 디바이스(1210)는 본 발명의 실시예에 따라, 음향 라이브러리를 저장하도록 구성될 수 있고 아울러, 하나 이상의 세논들을 I/O 버스(1215)를 통해 ASIC(1230)에 전달하도록 구성될 수 있다. 일 실시예에서, 메모리 디바이스(1210)는 DRAM 디바이스 또는 플래시 메모리 디바이스일 수 있다. 또 다른 실시예에서, 음향 라이브러리는 메모리 디바이스(1210)에 저장되는 것이 아니라, ASIC(1230) 내에 위치한 메모리 디바이스(도 12에서는 도시되지 않음)에 저장될 수 있다. 또 다른 실시예에서, 음향 라이브러리는 SOC(1220)을 위한 시스템 메모리(예를 들어, DRAM 디바이스(1060))에 저장될 수 있다.
도 13은 음성 인식 시스템(1300)을 위한 시스템-레벨 아키텍처의 또 다른 실시예를 나타낸 도면이다. 음성 인식 시스템(1300)은 DRAM 디바이스(1060), 플래시 메모리 디바이스(1070), I/O 인터페이스(1080), 메모리 디바이스(1210), 및 SOC(1220)를 포함한다. DRAM 디바이스(1060)는 본 발명의 실시예에 따라, 음향 라이브러리를 저장하도록 구성될 수 있고 아울러, 하나 이상의 세논들을 I/O 버스(1315)를 통해 ASIC(1230)에 전달하도록 구성될 수 있다.
4. 음향 프로세싱 유닛 아키텍처( Acoustic Processing Unit Architecture )
도 14는 APU(1400)의 실시예를 나타낸 도면이다. 일 실시예에서, APU(1400)는 메모리 모듈(1420)과 세논 점수화 유닛(Senone Scoring Unit, SSU)(1430)을 포함하는 통합된 칩이다. 또 다른 실시예에서, 메모리 모듈(1420)과 SSU(1430)는 두 개의 별개의 칩들 상에 집적될 수 있다.
APU(1400)는 I/O 신호들(1410)을 통해 CPU(도 14에서는 도시되지 않음)와 통신하며, 여기서 APU(1400)는 본 발명의 실시예에 따라, 음향 모델링 프로세스(예를 들어, 도 4의 음향 모델링 프로세스(420))를 수행하도록 구성된다. 일 실시예에서, I/O 신호들(1410)은, 특징 벡터 정보를 위한 입력 특징 벡터 데이터 라인, 입력 클럭 신호, 입력 APU 인에이블 신호, 세논 점수 정보를 위한 출력 세논 점수 데이터 라인, 그리고 APU(1400)에 대한 다른 I/O 제어 신호들을 포함할 수 있다. 본 발명의 실시예에 따라, APU(1400)는 CPU로부터 특징 벡터 데이터 라인을 통해 (CPU에 의해 계산된) 하나 이상의 특징 벡터들을 수신하도록 구성될 수 있음과 아울러, 후속 프로세싱을 위해 세논 점수를 세논 점수 데이터 라인을 통해 CPU로 전송하도록 구성될 수 있다. 일 실시예에서, I/O 신호들(1410)은, APU(1400)와 CPU 간의 통신 경로를 제공하기 위해, 예를 들어, SPI 버스, PCI 버스, API 버스, AHB, APB, 메모리 버스, 혹은 임의의 다른 타입의 버스로서 구현될 수 있다(예를 들어, 도 5 내지 도 7과 그 관련 설명부분 참조). APU(1400)와 CPU 간의 인터페이스, 뿐만 아니라 이러한 인터페이스를 위한 제어 신호들은 아래에서 더 상세히 설명된다.
일 실시예에서, 메모리 모듈(1420)과 SSU(1430)는 두 개의 상이한 클럭 도메인(clock domain)들에서 동작할 수 있다. 본 발명의 실시예에 따라, 메모리 모듈(1420)은 (예를 들어, I/O 신호들(1410)로부터의) APU(1400)에 대한 입력 클럭 신호와 관련된 클럭 주파수에서 동작할 수 있고, SSU(1430)는 이러한 입력 클럭 신호에 근거하는 더 빠른 클럭 주파수에서 동작할 수 있다. 예를 들어, 만약 입력 클럭 신호와 관련된 클럭 주파수가 12 MHz이면, SSU(1430)는 (입력 클럭 신호와 관련된 클럭 주파수보다 5배 더 빠른 주파수인) 60 MHz의 클럭-분할 주파수(clock-divided frequency)에서 동작할 수 있다. 클럭 분할기(clock divider)들을 구현하기 위한 기법들 및 방법들은 본 발명의 관련 기술분야에서 숙련된 사람에게 알려져 있다. 아래에서 더 상세히 설명되는 바와 같이, SSU(1430)의 아키텍처는 SSU(1430)가 동작하는 클럭 도메인에 근거할 수 있다.
도 14를 참조하면, 메모리 모듈(1420)은 버스 제어기(1422), 메모리 제어기(1424), 메모리 디바이스(1426), 및 브리지 제어기(1428)를 포함한다. 메모리 디바이스(1426)는 음성 인식 프로세스에서 사용될 음향 모델을 저장하도록 구성된다. 일 실시예에서, 메모리 디바이스(1426)는 예를 들어, 플래시 메모리 디바이스와 같은 비-휘발성 메모리 디바이스일 수 있다. 음향 라이브러리는 APU(1400)의 동작 이전에(예를 들어, APU(1400)의 제조(manufacturing) 및/또는 테스트(testing) 동안) 비-휘발성 메모리 디바이스에 사전-로드(pre-load)될 수 있다.
또 다른 실시예에서, 메모리 디바이스(1426)는 예를 들어, DRAM 디바이스와 같은 휘발성 메모리 디바이스일 수 있다. 일 실시예에서, 세논 요청이 APU(1400)에 의해 수신되는 경우, 메모리 제어기(1424)는 음향 라이브러리를 (APU(1400)와 동일한 칩 상에 통합된 혹은 APU(1400) 외부에 위치한) 비-휘발성 메모리 디바이스로부터 휘발성 메모리 디바이스로 복사할 수 있다. 비-휘발성 메모리 디바이스와 휘발성 메모리 디바이스 간의 음향 라이브러리 전달 프로세스는 예를 들어, DMA 동작을 사용하여 구현될 수 있다.
버스 제어기(1422)는 APU(1400)와 외부 CPU 간의 데이터 전달을 제어하도록 구성된다. 일 실시예에서, 버스 제어기(1422)는 CPU로부터의 특징 벡터들의 수신 및 세논 점수들의 APU(1400)로부터 CPU로의 전송을 제어할 수 있다. 일 실시예에서, 버스 제어기(1422)는 하나 이상의 특징 벡터들을 CPU로부터 브리지 제어기(1428)로 전달하도록 구성되는바, 여기서 브리지 제어기(1428)는 메모리 모듈(1420)과 SSU(1430) 간의 인터페이스로서의 역할을 한다. 또한, 브리지 제어기(1428)는 후속 프로세싱을 위해 하나 이상의 특징 벡터들을 SSU(1430)에 전달한다. 본 발명의 실시예에 따라, 세논 점수가 계산되면, 세논 점수는 브리지 제어기(1428)를 통해 SSU(1430)로부터 메모리 모듈(1420)로 전달된다.
일 실시예에서, 버스 제어기(1422)는 활성 세논 목록을 제공하는 제어 신호를 (I/O 신호들(1410)을 통해) 수신할 수 있다. 일 실시예에서, CPU에 의해 수행된 음소 평가 프로세스(예를 들어, 도 4의 음소 평가 프로세스(430))의 결과로서, 활성 세논 목록은 APU에 전달될 수 있다. 즉, 일 실시예에서, APU(1400)에 의해 수행되는 음향 모델링 프로세스와 CPU에 의해 수행되는 음소 평가 프로세스 간의 피드백 프로세스(예를 들어, 도 4의 피드백(450))가 일어날 수 있다. 본 발명의 실시예에 따라, 활성 세논 목록은 APU(1400)로의 그 들어오는 피처 벡터들에 대한 세논 점수 계산에서 사용될 수 있다.
활성 세논 목록은 세논 점수 계산에서 사용될 (메모리 디바이스(1426)에 저장된) 하나 이상의 세논들을 표시한다. 일 실시예에서, 활성 세논 목록은 메모리 디바이스(1426)의 어드레스 공간(address space)과 관련된 베이스 어드레스(base address), 그리고 하나 이상의 세논들이 메모리 디바이스(1426) 내에서 위치하고 있는 그 베이스 어드레스에 대한 인덱스들(indices)의 목록을 포함할 수 있다. 버스 제어기(1422)는 활성 세논 목록을 브리지 제어기(1428)를 통해 SSU(1430)에 전송할 수 있는바, 여기서 SSU(1430)는 활성 세논 목록과 관련된 하나 이상의 세논들에 액세스하기 위해 (메모리 제어기(1424)를 통해) 메모리 디바이스(1426)와 통신한다.
또 다른 실시예에서, 버스 제어기(1422)는 제어 신호를 (I/O 신호들(1410)을 통해) 수신할 수 있는바, 이러한 제어 신호는 APU(1400)에게 음향 라이브러리에 포함된 모든 세논들을 사용하여 세논 점수 계산을 수행하도록 명령한다(예를 들어, "모두 점수화" 기능). 버스 제어기(1422)는 "모두 점수화" 명령을 브리지 제어기(1428)를 통해 SSU(1430)에게 전송하고, 여기서 SSU(1430)는 음향 라이브러리와 관련된 모든 세논들에 액세스하기 위해 (메모리 제어기(1424)를 통해) 메모리 디바이스(1426)와 통신한다.
종래의 음성 인식 시스템들은, 세논 점수 계산에서 사용되는 세논들의 수를 제한하기 위해 CPU 내에 음향 모델링 모듈(예를 들어, 도 3의 음향 모델링 모듈(320))과 음소 평가 모듈(예를 들어, 도 3의 음소 평가 모듈(330)) 간의 피드백 루프(feedback loop)를 전형적으로 포함하고 있다. 이는 도 3의 음성 인식 시스템(300)에 관하여 앞서 설명된 바와 같이, 수천 개의 세논들이 특징 벡터들과 비교될 수 있는 음향 모델링 프로세스에 상당량의 컴퓨터연산 리소스들이 제공되기 때문이다. 이것은 세논들을 메모리 디바이스(예를 들어, 도 3의 메모리 디바이스(230))로부터 CPU로 전달하는 데이터 버스(예를 들어, 도 3의 데이터 버스(240))의 대역폭 및 CPU에 상당량의 부하를 부가한다. 따라서, 종래의 음성 인식 시스템들에 있어서, 활성 세논 목록들은 음향 모델링 프로세스가 CPU에 미치는 영향을 제한하기 위해 사용된다. 그러나, CPU에 의한 활성 세논 목록들의 사용은 실시간으로 혹은 실질적으로 실시간에 가깝게 그 들어오는 음성 신호들을 프로세싱하려는 요구에 여러 제약들을 가할 수 있다.
APU(1400)의 "모두 점수화" 기능은 데이터 버스의 대역폭 및 CPU에 부가되는 부하를 완화시킬 뿐만 아니라 실시간으로 혹은 실질적으로 실시간에 가깝게 그 들어오는 음성 신호들의 프로세싱을 제공한다. 아래에서 더 상세히 설명되는 바와 같이, 예를 들어, 데이터 버스(1427)의 버스 폭과 같은 APU(1400)의 특징들, 그리고 도 14의 거리 계산기(distance calculator)(1436)의 아키텍처는 실시간 혹은 실질적으로 실시간에 가까운 음성 인식을 위한 시스템을 제공한다.
도 14를 참조하면, SSU(1430)는 출력 버퍼(output buffer)(1432), SSU 제어 모듈(1434), 특징 벡터 행렬 모듈(feature vector matrix module)(1435), 거리 계산기(1436), 및 합산 모듈(addition module)(1438)을 포함한다. SSU(1430)는 본 발명의 실시예에 따라, 메모리 디바이스(1426)에 저장된 하나 이상의 세논들과 하나 이상의 특징 벡터들 간의 마할라노비스 거리(Mahalanobis distance)를 계산하도록 구성된다. 하나 이상의 특징 벡터들 각각은 N개의 차원들로 구성될 수 있는바, 여기서 N은 예를 들어, 39일 수 있다. 일 실시예의 경우, 하나 이상의 특징 벡터들에서의 N개의 차원들 각각은 16-비트 평균값(16-bit mean value)일 수 있다.
더욱이, 메모리 디바이스(1426)에 저장된 하나 이상의 세논들 각각은 하나 이상의 가우시안 확률 분포들로 구성되며, 여기서 하나 이상의 가우시안 확률 분포들 각각은 하나 이상의 특징 벡터들 각각과 동일한 수의 차원들(예를 들어, N개의 차원들)을 갖는다. 메모리 디바이스(1426)에 저장된 하나 이상의 세논들 각각은 예를 들어, 32개의 가우시안 확률 분포들을 가질 수 있다.
앞서 설명된 바와 같이, 메모리 모듈(1420)과 SSU(1430)는 두 개의 상이한 클럭 도메인들에서 동작할 수 있다. 일 실시예에서, SSU 제어 모듈(1434)은 클럭 신호를 브리지 제어기(1428)를 통해 메모리 모듈(1420)로부터 수신하도록 구성된다. 본 발명의 실시예에 따라, SSU 제어 모듈(1434)에 의해 수신된 클럭 신호의 주파수는 APU(1400)에 대한 입력 클럭 신호(예를 들어, I/O 신호들(1410)로부터의 입력 클럭 신호)와 관련된 클럭 주파수와 동일하거나 혹은 실질적으로 동일할 수 있다.
일 실시예에서, SSU 제어 모듈(1434)은 그 들어오는 클럭 신호의 주파수를 분할하고 분할된 클럭 신호를 SSU(1430)의 다른 컴포넌트들(예를 들어, 출력 버퍼(1432), 특징 벡터 행렬 모듈(1435), 거리 계산기(1436), 및 합산 모듈(1438))에게 분배할 수 있으며, 이에 따라 이러한 다른 컴포넌트들은 클럭-분할 주파수에서 동작하게 된다. 예를 들어, 만약 (예를 들어, I/O 신호들(1410)로부터의) 입력 클럭 신호와 관련된 클럭 주파수가 12 MHz이면, SSU 제어 모듈(1434)은 브리지 제어기(1428)로부터 동일한 혹은 실질적으로 동일한 클럭 신호를 수신할 수 있고, 공지된 클럭-분할 기법들 및 방법들을 사용하여 그 클럭 주파수를 예를 들어, 60 MHz의 주파수로 분할할 수 있다. SSU 제어 모듈(1434)은 이러한 클럭-분할 신호를 SSU(1430)의 다른 컴포넌트들에 분배할 수 있고, 이에 따라 이러한 다른 컴포넌트들은 예를 들어, (입력 클럭 신호와 관련된 클럭 주파수보다 5배 더 빠른 주파수인) 60 MHz에서 동작하게 된다.
간결한 설명 목적으로, SSU 제어 모듈(1434)로부터 SSU(1430)의 다른 컴포넌트들로 분배된 클럭 신호들은 도 14에서는 예시되지 않았다. 참조의 편의를 위해, 이러한 클럭 신호와 관련된 주파수는 또한 본 명세서에서 "SSU 클럭 주파수"로 지칭된다. 더욱이, 참조의 편의를 위해, SSU 제어 모듈(1434)로의 입력 클럭 신호와 관련된 주파수는 또한 본 명세서에서 "메모리 모듈 클럭 주파수(memory module clock frequency)"로 지칭된다.
도 15는 SSU 제어 모듈(1434)의 실시예를 나타낸 도면이다. SSU 제어 모듈(1434)은 입력 버퍼(1510) 및 제어 유닛(1520)을 포함한다. SSU 제어 모듈(1434)은 메모리 모듈(1420)로부터 브리지 제어기(1428)를 통해 하나 이상의 제어 신호들을 수신하도록 구성된다. 일 실시예에서, 하나 이상의 제어 신호들은 I/O 신호들(1410)과 관련될 수 있고, 아울러 메모리 디바이스(1426)에 의해 출력된 가우시안 확률 분포와 관련된 제어 정보와 관련될 수 있다. I/O 신호들(1410)과 관련된 제어 신호들은 예를 들어, 활성 세논 목록 및 "모두 점수화" 기능을 포함할 수 있다. 가우시안 확률 분포와 관련된 제어 정보는 예를 들어, 메모리 디바이스(1426)에 의해 출력될 후속의 가우시안 확률 분포에 대한 어드레스 정보를 포함할 수 있다.
도 14를 참조하면, 일 실시예에서, 버스 제어기(1422)가 활성 세논 목록을 I/O 신호들(1410)을 통해 수신할 때, 메모리 디바이스(1426)의 어드레스 공간과 관련된 베이스 어드레스, 그리고 하나 이상의 세논들이 메모리 디바이스(1426) 내에서 위치하고 있는 그 베이스 어드레스에 대한 인덱스들의 목록이 도 15의 입력 버퍼(1510)에 저장될 수 있다. 제어 유닛(1520)은, 세논 점수 계산에서 도 14의 거리 계산기(1436)에 의해 적용될 세논들의 목록을 모니터링(monitoring)하기 위해, 입력 버퍼(1510)와 통신한다.
예를 들어, 활성 세논 목록은, 메모리 디바이스(1426)의 어드레스 공간과 관련된 베이스 어드레스, 그리고 메모리 디바이스(1426)에 저장된 100개의 세논들을 포인팅(pointing)하는 100개의 인덱스들을 포함할 수 있다. 본 발명의 관련 기술분야에서 숙련된 사람이 이해할 수 있는 바와 같이, 인덱스들은 메모리 디바이스(1426)의 어드레스 공간과 관련된 베이스 어드레스에 대한 포인터(pointer)들 혹은 메모리 어드레스 오프셋(memory address offset)들을 지칭할 수 있다. 더욱이, 앞서 설명된 바와 같이, 세논은 하나 이상의 가우시안 확률 분포들로 구성될 수 있고, 여기서 하나 이상의 가우시안 확률 분포들 각각은 APU(1400)에 의해 수신되는 하나 이상의 특징 벡터들 각각과 동일한 수의 차원들(예를 들어, N개의 차원들)을 갖는다. 설명 목적으로, 본 예에서는 메모리 디바이스(1426)에 저장된 각각의 세논이 32개의 가우시안 확률 분포들로 구성된다고 가정한다. 본 명세서에서의 설명을 기반으로 하여, 본 발명의 관련 기술분야에서 숙련된 사람은 세논들 각각이 32개보다 더 많거나 더 적은 가우시안 확률 분포들로 구성될 수 있음을 이해할 것이다.
일 실시예에서, 활성 세논 목록 내의 제 1 세논에 대해, 제어 유닛(1520)은 활성 세논 목록 내에 포함된 베이스 어드레스 및 제 1 인덱스 정보에 근거하여 메모리 디바이스(1426) 내의 제 1 세논에 액세스하기 위해 도 14의 메모리 제어기(1424)와 통신한다. 본 발명의 실시예에 따라, 제 1 인덱스와 관련된 세논은 그 세논과 관련된 첫 번째 2개의 가우시안 확률 분포들의 메모리 어드레스 정보를 포함할 수 있다. 또한, 메모리 디바이스(1426)는 예를 들어, 순차적으로, 제 1 세논과 관련된 2개의 가우시안 확률 분포들에 액세스한다. 예를 들어, 메모리 디바이스(1426)는 제 1 가우시안 확률 분포에 액세스하고 이러한 가우시안 확률 분포를 데이터 버스(1427)를 통해 거리 계산기(1436)에 출력한다. 메모리 디바이스(1426)가 제 1 가우시안 확률 분포를 출력함에 따라, 메모리 디바이스(1426)는 또한 제 2 가우시안 확률 분포에 액세스할 수 있다.
일 실시예에서, 제 2 가우시안 확률 분포는 메모리 디바이스(1426)에 의해 액세스될 제 3 가우시안 확률 분포에 대한 메모리 어드레스 정보를 포함할 수 있다. 메모리 디바이스(1426)는 이러한 메모리 어드레스 정보를 도 14의 브리지 제어기(1428)를 통해 도 15의 제어 유닛(1520)에 전달할 수 있다. 제어 유닛(1520)은, 또한, 제 3 가우시안 확률 분포에 액세스하기 위해 도 14의 메모리 제어기(1424)와 통신한다. 일 실시예에서, 제 3 가우시안 확률 분포가 메모리 디바이스(1426)에 의해 액세스되고 있음에 따라, 제 2 가우시안 확률 분포가 데이터 버스(1427)를 통해 거리 계산기(1436)에 출력될 수 있다. 현재의 가우시안 확률 분포를 출력하면서 후속의 가우시안 확률 분포에 액세스하는 이러한 반복적 오버랩핑 프로세스(iterative, overlapping process)는 세논과 관련된 모든 가우시안 확률 분포들에 대해 수행된다(예를 들어, 세논과 관련된 32개의 가우시안 확률 분포들 모두에 대해 수행됨). 이러한 반복적 오버랩핑(혹은 병렬) 프로세싱의 이점은 다른 것들 중에서도, 세논 점수 계산에서의 더 빠른 성능이다.
본 발명의 실시예에 따라, 도 15의 제어 유닛(1520)은 메모리 디바이스(1426)로부터 거리 계산기(1436)로의 가우시안 확률 분포들의 전달 프로세스를 모니터링하고 이에 따라 메모리 액세스 및 전달 프로세스는 파이프라인 방식(pipeline manner)으로 일어나게 된다. 제 1 세논과 관련된 32개의 가우시안 확률 분포들이 도 14의 거리 계산기(1436)에 출력된 이후에, 제어 유닛(1520)은 활성 세논 목록 내의 하나 이상의 잔존하는 세논들에 대해 앞서의 프로세스를 반복한다.
본 발명의 실시예에 따라, 활성 세논 목록 내의 세논들이 현재의 특징 벡터들에 대한 세논 점수 계산에서 사용된 이후, 메모리 모듈(1420)은 현재의 특징 벡터로부터의 활성 세논 목록이 후속의 특징 벡터에 대한 세논 점수 계산에서 사용될 것임을 표시하는 제어 신호를 I/O 신호들(1410)을 통해 수신할 수 있다. 이러한 제어 신호를 메모리 모듈(1420)로부터 브리지 제어기(1428)를 통해 수신하면, SSU 제어 모듈(1434)은 현재의 특징 벡터로부터의 동일한 활성 세논 목록을 후속의 특징 벡터에 대한 세논 점수 계산에서 사용한다. 특히, 도 15의 제어 유닛(1520)은 동일한 베이스 어드레스, 그리고 입력 버퍼(1510)에 저장된 그 베이스 어드레스에 대한 인덱스들의 목록을 후속의 특징 벡터에 적용한다. 활성 세논 목록 예에 관하여 앞서 설명된 방식과 유사한 방식으로, 도 15의 제어 유닛(1520)은 후속의 특징 벡터에 대해 메모리 디바이스(1426)로부터 거리 계산기(1436)로의 가우시안 확률 분포들의 전달 프로세스를 모니터링한다.
또 다른 실시예에서, 메모리 모듈(1420)은 "모두 점수화" 동작을 표시하는 제어 신호를 I/O 신호들(1410)을 통해 수신할 수 있다. 앞서 설명된 바와 같이, "모두 점수화" 기능은 특징 벡터가 메모리 디바이스(1426)에 저장된 음향 라이브러리에 포함된 모든 세논들과 비교되는 동작을 나타낸다. 일 실시예에서, 도 15의 제어 유닛(1520)은 메모리 디바이스(1426) 내의 제 1 세논에 액세스하기 위해 도 14의 메모리 제어기(1424)와 통신한다. 제 1 세논은 예를 들어, 메모리 디바이스(1426)의 어드레스 공간과 관련된 시작하는 메모리 어드레스에 위치할 수 있다. 앞서의 활성 세논 목록 예와 유사하게, 본 발명의 실시예에 따라, 메모리 디바이스(1426) 내의 제 1 세논은 그 세논과 관련된 첫 번째 2개의 가우시안 확률 분포들의 메모리 어드레스 정보를 포함할 수 있다. 또한, 메모리 디바이스(1426)는 예를 들어, 순차적으로, 제 1 세논과 관련된 2개의 가우시안 확률 분포들에 액세스한다.
일 실시예에서, 앞서의 활성 세논 목록과 유사하게, 제 2 가우시안 확률 분포는 메모리 디바이스(1426)에 의해 액세스될 제 3 가우시안 확률 분포에 관한 메모리 어드레스 정보를 포함할 수 있다. 메모리 디바이스(1426)는 이러한 메모리 어드레스 정보를 도 14의 브리지 제어기(1428)를 통해 도 15의 제어 유닛(1520)에 전달할 수 있다. 제어 유닛(1520)은, 또한, 제 3 가우시안 확률 분포에 액세스하기 위해 도 14의 메모리 제어기(1424)와 통신한다. 일 실시예에서, 제 3 가우시안 확률 분포가 메모리 디바이스(1426)에 의해 액세스되고 있음에 따라, 제 2 가우시안 확률 분포가 데이터 버스(1427)를 통해 거리 계산기(1436)에 출력될 수 있다. 현재의 가우시안 확률 분포를 출력하면서 후속의 가우시안 확률 분포에 액세스하는 이러한 반복적 오버랩핑 프로세스는 세논과 관련된 모든 가우시안 확률 분포들에 대해 수행된다(예를 들어, 세논과 관련된 32개의 가우시안 확률 분포들 모두에 대해 수행됨).
본 발명의 실시예에 따라, 도 15의 제어 유닛(1520)은 메모리 디바이스(1426)로부터 거리 계산기(1436)로의 가우시안 확률 분포들의 전달 프로세스를 모니터링하고 이에 따라 메모리 액세스 및 전달 프로세스는 파이프라인 방식으로 일어나게 된다. 제 1 세논과 관련된 가우시안 확률 분포들이 도 14의 거리 계산기(1436)에 출력된 이후에, 제어 유닛(1520)은 음향 라이브러리 내의 하나 이상의 잔존하는 세논들에 대해 앞서의 프로세스를 반복한다.
도 14를 참조하면, 특징 벡터 행렬 모듈(1435)은 APU(1400)에서 화자 조정(speaker adaptation)용으로 사용된다. 일 실시예에서, 특징 벡터 행렬 모듈(1435)은 특징 벡터 변환 행렬(Feature Vector Transform Matrix, FVTM)를 I/O 신호들(1410)을 통해 CPU로부터 수신한다. FVTM은 주기적으로, 예를 들어, 발성(utterance) 당 한번, 특징 벡터 행렬 모듈(1435)에 로드될 수 있다. 일 실시예에서, FVTM은 특징 벡터 행렬 모듈(1435) 내에 위치하는 정적 랜덤 액세스 메모리(SRAM) 디바이스에 저장될 수 있다.
본 발명의 실시예에 따라, 메모리 디바이스(1426) 내의 각각의 세논에 대해 저장된 평균 값 및 분산 값과 함께, 각각의 세논에 대한 인덱스가 또한 저장될 수 있으며, 여기서 인덱스는 FVTM 내의 행(row)을 포인팅한다. FVTM 내의 행들의 수는 다양할 수 있고(예를 들어, 10개의 행들, 50개의 행들, 혹은 100개의 행들), 그리고 APU(1400)를 구현하는 음성 인식 시스템에 특정될 수 있다. 본 발명의 실시예에 따라, FVTM 내의 각각의 행은 특징 벡터에 대한 차원들의 수 N과 동일한 수의 엔트리(entry)들을 가질 수 있는바(예를 들어, 39개), 여기서 엔트리들 각각은 새로운 특징 벡터를 발생시키기 위해 그 대응하는 특징 벡터 차원에 곱해지는 크기조정 계수(scaling factor)다. 아래에서 더 상세히 설명되는 바와 같이, FVTM으로부터의 선택된 행(예를 들어, 그 선택된 행의 39개의 크기조정 계수들)은 데이터 버스(1439)를 통해 거리 계산기(1436)로 전달되고, 여기서 거리 계산기(1436)는 새로운 특징 벡터를 발생시키기 위해 곱셈 동작을 수행한다.
일 실시예에서, SSU 제어 모듈(1434)은 CPU로부터 수신된 특징 벡터, 그리고 세논과 관련된 인덱스를 특징 벡터 행렬 모듈(1435)에 제공한다. 인덱스는 특징 벡터를 크기조정(scaling)하기 위한 FVTM 내의 특정 행을 표시한다. 예를 들어, FVTM은 100개의 행들을 가질 수 있고, 인덱스 값은 10일 수 있다. 이러한 경우에, 39개의 차원들을 갖는 특징 벡터에 대해, FVTM의 10번째 행은 39개의 크기조정 계수들을 포함하고, 이 행의 크기조정 계수들은 새로운 특징 벡터를 발생시키기 위해 거리 계산기(1436)로 전달된다.
도 14를 참조하면, 거리 계산기(1436)는 메모리 디바이스(1426)에 저장된 세논의 하나 이상의 차원들과 특징 벡터의 대응하는 하나 이상의 차원들 간의 거리를 계산하도록 구성된다. 도 16은 거리 계산기(1436)의 실시예를 나타낸 도면이다. 거리 계산기(1436)는 데이터경로 멀티플렉서(multiplexer)(MUX)(1610), 특징 벡터 버퍼(1620), 산술연산 로직 유닛(ALU)들(16301-16308) 그리고 누산기(accumulator)(1640)를 포함한다.
데이터경로 MUX(1610)는 가우시안 확률 분포를 데이터 버스(1427)를 통해 도 14의 메모리 디바이스(1426)로부터 수신하도록 구성된다. 일 실시예에서, 데이터 버스(1427)의 폭은 하나의 가우시안 확률 분포와 관련된 비트들의 수와 동일하다. 예를 들어, 만약 하나의 가우시안 확률 분포가 768개의 비트들이라면, 데이터 버스(1427)의 폭도 또한 768개의 비트들이다. 복수의 가우시안 확률 분포 차원들에 걸쳐, 가우시안 확률 분포와 관련된 768개의 비트들은 16-비트 평균 값, 16-비트 분산 값, 그리고 가우시안 확률 분포 차원에 관한 다른 속성 값들에 할당될 수 있다. 앞서 설명된 바와 같이, 가우시안 확률 분포는 특징 벡터와 동일한 수의 차원들을 가질 수 있다(예를 들어, 39개의 차원들). 또 다른 실시예에서, 데이터 버스(1427)의 폭은 256개의 비트들보다 더 클 수 있다.
더욱이, 일 실시예에서, 메모리 디바이스(1426)와 거리 계산기(1436)는 동일한 칩 상에 통합될 수 있는바, 여기서 데이터 버스(1427)는 메모리 디바이스(1426)로부터 거리 계산기(1436)로의 가우시안 확률 분포의 데이터 전달을 제공하기 위해 그 칩 상에 통합되는 (앞서 설명된 폭을 갖는) 광폭 버스(wide bus)이다. 또 다른 실시예에서, 메모리 디바이스(1426)와 거리 계산기(1436)는 두 개의 별개의 칩들 상에 집적될 수 있는바, 여기서 데이터 버스(1427)는 노이즈 영향 및 배선간 기생 영향으로 인한 데이터의 질저하가 최소화되도록 두 개의 칩들 사이에 밀착 결합되는(tightly coupled) (앞서 설명된 폭을 갖는) 광폭 버스이다. 아래에서 설명되는 바와 같이, (앞서 설명된 폭을 갖는) 광폭 데이터 버스(1427)의 이점은, 다른 것들 중에서도, 세논 점수들의 계산시 APU(1400)의 성능을 증가시킨다는 것이다.
데이터경로 MUX(1610)는 또한, 데이터 버스(1427)를 통해 SSU 제어 모듈(1434)로부터 하나 이상의 제어 신호들 및 특징 벡터를 수신하도록 구성될 뿐만 아니라 특징 벡터 버퍼(1620)로부터 특징 벡터 크기조정 계수들을 수신하도록 구성된다. 일 실시예에서, 특징 벡터 버퍼(1620)는 데이터 버스(1439)를 통해 특징 벡터 행렬 모듈(1435)로부터 전달된 (FVTM의 선택된 행과 관련된) 크기조정 계수들을 저장하도록 구성될 수 있다. 또 다른 실시예에서, 특징 벡터 버퍼(1620)는 FVTM을 저장하도록 구성될 수 있다. 이 경우, 데이터 버스(1437)를 통한 SSU 제어 모듈(1434)로부터의 하나 이상의 제어 신호들은 FVTM의 행을 선택하기 위해 사용될 수 있다. 데이터경로 MUX(1610)는 후속 프로세싱을 위해, 특징 벡터, FVTM으로부터의 선택된 특징 벡터 크기조정 계수들, 그리고 가우시안 확률 분포 정보를 데이터 버스(1612)를 통해 ALU들(16301-16308)에 출력한다.
일 실시예에서, 데이터경로 MUX(1610)는 또한, 데이터 버스(1437)를 통해 SSU 제어 모듈(1434)로부터의 하나 이상의 제어 신호들로부터 가우시안 가중치부여 계수(Gaussian weighting factor)를 수신하도록 구성된다. 데이터경로 MUX(1610)는 후속 프로세싱을 위해 가우시안 가중치부여 계수를 누산기(1640)에 출력하도록 구성된다.
도 16을 참조하면, 본 발명의 실시예에 따라, ALU들(16301-16308) 각각은, 매 SSU 클럭 싸이클에 대해, 데이터경로 MUX(1610)로부터 수신된 가우시안 확률 분포의 차원과 특징 벡터의 대응하는 차원 간의 거리 점수를 계산하도록 구성된다. 일 실시예에서, ALU들(16301-16308)은, (예를 들어, 가우시안 확률 분포를 거리 계산기(1436)로 전달하기 위한) 도 14의 메모리 디바이스(1426)로부터의 매 판독 동작 마다에 대해, 가우시안 확률 분포와 관련된 거리 점수(이것은 또한 본 명세서에서 "가우시안 거리 점수(Gaussian distance score)"로 지칭됨)가 거리 계산기(1436)로부터 합산 모듈(1438)로 출력되도록 SSU 클럭 주파수(예를 들어, 메모리 모듈 클럭 주파수보다 5배 더 빠른 주파수)에서 동작할 수 있다.
일 실시예에서, 데이터경로 MUX(1610)는, 하나의 차원과 관련된 특징 벡터 정보, 가우시안 확률 분포의 대응하는 차원과 관련된 평균 값, 가우시안 확률의 대응하는 차원과 관련된 분산 값, 그리고 특징 벡터 크기조정 계수들을 ALU들(16301-16308) 각각에 배분하도록 구성된다. 각각의 ALU에 할당된 특징 벡터 크기조정 계수들 및 특징 벡터 정보에 근거하여, ALU들(16301-16308) 각각은 특징 벡터의 차원들에 각각의 크기조정 계수들을 곱함으로써 새로운 특징 벡터를 발생시키도록 구성된다.
일 실시예에서, 특징 벡터들의 차원들과 그 대응하는 크기조정 계수들의 곱셈은 "온-더-플라이(on-the-fly)"로 수행되는바, 여기서 "온-더-플라이"의 의미는 거리 점수의 계산 동안 이러한 곱셈 동작이 수행됨을 의미한다. 이것은, FVTM 내의 행들 각각에 대해 곱셈 동작이 수행되는 것, 그리고 그 곱셈 동작의 결과들이 ALU들(16301-16308) 각각에 의해 이후에 액세스될 메모리에 저장되는 것과는 대조적인 것이다. "온-더-플라이" 곱셈 동작의 이점은, 다른 것들 중에서도, FVTM의 비-인덱싱된(non-indexed)(혹은 비-선택된(non-selected)) 행들과 관련된 곱셈 동작의 결과들에 대해서는 메모리 저장이 요구되지 않는다는 것이다. 이에 따라, 이것은, 결과적으로 새로운 특징 벡터가 더 빠르게 발생되게 하며(왜냐하면 비-인덱싱된 행들과 관련된 특징 벡터 크기조정 결과들을 메모리에 저장하기 위한 추가적인 클럭 싸이클들이 요구되지 않기 때문), 이것은 또한, 결과적으로 ALU들(16301-16308)을 위한 다이 크기 면적이 더 작아지게 한다.
본 발명의 실시예에 따라, 각각의 ALU에 대한 새로운 특징 벡터, 평균 값, 및 분산 값에 근거하여, ALU들(16301-16308) 각각은 매 SSU 클럭 싸이클에 대해 특징 벡터 차원 및 대응하는 가우시안 확률 분포 차원에 근거하는 거리 점수를 계산하도록 구성된다. 누적적으로(cumulatively), 하나의 클럭 싸이클에서, ALU들(16301-16308)은 8개의 차원들에 대한 거리 점수들을 발생시킨다(즉, ALU 당 1 차원 계산). ALU의 아키텍처 및 동작은 아래에서 더 상세히 설명된다.
본 발명의 실시예에 따라, 거리 계산기(1436) 내의 ALU들의 수는 앞서 설명된 SSU 클럭 주파수 및 메모리 모듈 클럭 주파수에 따라 달라질 수 있고, 이에 따라 거리 계산기(1436)는 메모리 디바이스(1426)에 대한 매 판독 액세스 마다에 대해 하나의 가우시안 확률 분포에 대한 거리 점수를 출력하게 된다. 예를 들어, 메모리 모듈 클럭 주파수는 12 MHz의 동작 주파수를 가질 수 있고, 여기서 메모리 디바이스(1426)는 또한, (예를 들어, 대략 83 ns의 판독 액세스를 위해) 12 MHz에서 동작한다. SSU(1430)는 예를 들어, 60 MHz의 SSU 클럭 주파수를 가질 수 있고, 이에 따라 메모리 모듈 클럭 주파수보다 5배 더 빠른 주파수에서 동작하게 된다. 39개의 차원들을 갖는 특징 벡터 그리고 8개의 ALU들에 있어서, 하나의 가우시안 확률 분포들에 대한 가우시안 거리 점수는 5개의 SSU 클럭 싸이클들에서 계산될 수 있거나 혹은 1개의 메모리 모듈 클럭 싸이클에서 계산될 수 있다. 따라서, 설계적으로, 5개의 SSU 클럭 싸이클들은 1개의 메모리 모듈 클럭 싸이클에 대응하는 미리결정된 개수의 클럭 싸이클들인바, 이 경우 하나의 가우시안 확률 분포가 1개의 메모리 모듈 클럭 싸이클에서 메모리 디바이스로부터 판독됨에 따라, 또 다른 가우시안 확률 분포에 대한 가우시안 거리 점수가 누산기(1640)에 의해 계산된다.
일 실시예에서, ALU들(16301-16308) 중 일부분은 SSU 클럭 싸이클의 상승 에지(rising edge)에서 활성화될 수 있고, ALU들(16301-16308) 중 나머지 부분은 SSU 클럭 싸이클의 하강 에지(falling edge)에서 활성화될 수 있다. 예를 들어, ALU들(16301-16304)은 SSU 클럭 싸이클의 상승 에지에서 활성화될 수 있고, ALU들(16305-16308)은 SSU 클럭 싸이클의 하강 에지에서 활성화될 수 있다. ALU들(16301-16308)의 활성화를 스태거링(staggering)시킨 결과로서, 거리 계산기(1436)에 의해 발생된 피크 전류(peak current)(및 피크 파워(peak power))는 최소화될 수 있고, 따라서 거리 계산기(1436)에서의 신뢰성 문제의 민감도(susceptibility)가 감소하게 된다.
본 명세서에서의 설명을 기반으로 하여, 본 발명의 관련 기술분야에서 숙련된 사람은 거리 계산기(1436)의 아키텍처가 앞서의 예로만 한정되는 것이 아님을 이해할 것이다. 오히려, 본 발명의 관련 기술분야에서 숙련된 사람이 이해할 수 있는 바와 같이, 거리 계산기(1436)는 60 MHz의 클럭 주파수보다 더 빠른 주파수 혹은 더 느린 주파수에서 동작할 수 있고, 이러한 거리 계산기(1436)는 8개보다 더 많거나 더 적은 ALU들을 포함할 수 있다.
도 16을 참조하면, 누산기(1640)는 ALU들(16301-16308) 각각으로부터의 출력들을 수신함과 아울러 (데이터 버스(1614)를 통해) 데이터경로 MUX(1610)로부터 가우시안 가중치부여 계수를 수신하도록 구성된다. 앞서 설명된 바와 같이, 일 실시예에서, 매 SSU 클럭 싸이클 마다에 대해, 가우시안 확률 분포 차원에 대한 거리 점수가 ALU들(16301-16308) 각각에 의해 출력된다. ALU들(16301-16308) 각각으로부터의 이러한 거리 점수들은 가우시안 확률 분포 차원에 대한 거리 점수 혹은 가우시안 거리 점수를 발생시키기 위해 누산기(1640)에 의해 저장 및 누적된다(예를 들어, 누산기(1640)는 SSU 클럭 싸이클 단위로 ALU들(16301-16308)에 의해 계산된 각각의 거리 점수들을 합산함).
가우시안 확률 분포 차원들 모두와 관련된 가우시안 거리 점수들이 누산기(1640)에 누적된 이후(예를 들어, 39개의 차원들), 누산기(1640)는 가중치부여된 가우시안 거리 점수(weighted Gaussian distance score)를 발생시키기 위해 그 총합(total sum)과 가우시안 가중치부여 계수를 곱한다. 일 실시예에서, 가우시안 가중치부여 계수는 선택적인 것(optional)이며, 이 경우 누산기(1640)는 가우시안 거리 점수를 출력한다. 또 다른 실시예에서, 가우시안 가중치부여 계수는 각각의 가우시안에 특정된 것이고, 메모리 디바이스(1426)에 저장된다.
합산 모듈(1438)은 세논 점수를 발생시키기 위해 하나 이상의 가우시안 거리 점수들(혹은 가중치부여된 가우시안 거리 점수들)을 합산하도록 구성된다. 앞서 설명된 바와 같이, 각각의 세논은 하나 이상의 가우시안 확률 분포들로 구성될 수 있고, 여기서 각각의 가우시안 확률 분포는 가우시안 거리 점수와 관련될 수 있다. 복수의 가우시안 확률 분포들(예를 들어, 32개의 가우시안 확률 분포들)을 갖는 세논에 대해, 합산 모듈(1438)은 세논 점수를 발생시키기 위해 모든 가우시안 확률 분포들과 관련된 가우시안 거리 점수들을 합산한다. 일 실시예에서, 합산 모듈(1438)은 세논 점수를 발생시키기 위해 로그 도메인(log domain)에서 합산 동작을 수행하도록 구성된다.
출력 버퍼(1432)는 합산 모듈(1438)로부터 세논 점수를 수신하여 세논 점수를 브리지 제어기(1428)에 전달하도록 구성된다. 브리지 제어기(1428)는 또한, 세논 점수를 버스 제어기(1422)를 통해 외부 CPU에 전달한다. 일 실시예에서, 출력 버퍼(1432)는 복수의 메모리 버퍼들을 포함할 수 있어, 제 1 메모리 버퍼 내의 제 1 세논 점수가 브리지 제어기(1428)에 전달되고 있음에 따라 합산 모듈(1438)에 의해 발생된 제 2 세논 점수는 브리지 제어기(1428)로의 후속 전달을 위해 제 2 메모리 버퍼에 전달될 수 있게 된다.
도 17은 음향 모델링을 위한 방법(1700)의 실시예를 나타낸 도면이다. 방법(1700)의 단계들은 예를 들어, 도 14의 APU(1400)를 사용하여 수행될 수 있다.
단계(1710)에서, 복수의 가우시안 확률 분포들은 적어도 하나의 가우시안 확률 분포의 폭을 갖는 데이터 버스를 통해 수신되고 외부 컴퓨터연산 디바이스로부터 특징 벡터가 수신된다. 가우시안 확률 분포는 예를 들어, 768개의 비트들로 구성될 수 있는바, 이 경우 데이터 버스의 폭은 적어도 768개의 비트들이다. 더욱이, 도 14의 APU(1400)는 외부 컴퓨터연산 디바이스(예를 들어, 도 14의 I/O 신호들(1410)을 통해 APU(1400)와 통신하는 CPU)로부터 특징 벡터를 수신할 수 있다.
일 실시예에서, 특징 벡터의 복수의 차원들과 관련된 정보, 적어도 하나의 가우시안 확률 분포의 대응하는 복수의 차원들과 관련된 복수의 평균 값들, 그리고 적어도 하나의 가우시안 확률 분포의 대응하는 복수의 차원들과 관련된 복수의 분산 값들이 예를 들어, 산술연산 로직 유닛들(예를 들어, 도 16의 ALU들(16301-16308)에 배분된다.
단계(1720)에서, 특징 벡터의 복수의 차원들, 그리고 적어도 하나의 가우시안 확률 분포의 대응하는 복수의 차원들에 근거하여 복수의 차원 거리 점수들이 계산된다. 일 실시예에서, 이러한 거리 점수 계산은 활성 세논 목록으로부터의 적어도 하나의 세논에 근거하고 있다. 활성 세논 목록은 메모리 디바이스의 어드레스 공간과 관련된 베이스 어드레스, 그리고 적어도 하나의 세논이 메모리 디바이스 내에서 위치하고 있는 그 베이스 어드레스에 대한 인덱스들을 포함할 수 있다. 더욱이, 특징 벡터의 복수의 차원들에 대한 복수의 크기조정 계수들이 저장되는바, 여기서 복수의 크기조정 계수들은 복수의 차원 거리 점수들의 계산 동안 특징 벡터의 복수의 차원들에 적용된다. 단계(1720)는 예를 들어, 도 14의 거리 계산기(1436)에 의해 수행될 수 있다.
단계(1730)에서, 복수의 차원 거리 점수들은 적어도 하나의 가우시안 확률 분포에 대한 가우시안 거리 점수를 발생시키기 위해 합산된다. 일 실시예에서, 가우시안 거리 점수는 미리결정된 개수의 세논 점수화 유닛(SSU) 클럭 싸이클들에 걸쳐 발생된다. 미리결정된 개수의 SSU 클럭 싸이클들은 메모리 디바이스로부터의 적어도 하나의 가우시안 확률 분포의 판독 액세스 시간과 같을 수 있다. 단계(1730)는 예를 들어, 도 14의 거리 계산기(1436)에 의해 수행될 수 있다.
단계(1740)에서, 복수의 가우시안 확률 분포들에 대응하는 복수의 가우시안 거리 점수들이 세논 점수를 발생시키기 위해 합산된다. 단계(1740)는 예를 들어, 도 14의 거리 계산기(1436)에 의해 수행될 수 있다.
본 발명의 실시예들은 도 3의 종래의 음성 인식 시스템(200)에 관하여 앞서 설명된 문제들에 대처하며 이러한 문제들을 해결한다. 요약하면, 음향 모델링 프로세스는 예를 들어, 도 14의 APU(1400)에 의해 수행된다. APU는 CPU와 함께 동작하는바, 여기서 APU는 CPU로부터 하나 이상의 특징 벡터들(예를 들어, 도 3의 특징 벡터들(315))을 수신할 수 있고, 하나 이상의 가우시안 확률 분포들에 근거하여 세논 점수(예를 들어, 도 3의 세논 점수(325))를 계산할 수 있으며, 그리고 세논 점수를 CPU에 출력할 수 있다. 일 실시예에서, 하나 이상의 가우시안 확률 분포들은 APU 내에 저장될 수 있다. 대안적으로, 또 다른 실시예에서, 하나 이상의 가우시안 확률 분포들은 APU 외부에 저장될 수 있는바, 여기서 APU는 하나 이상의 가우시안 확률 분포들을 외부 메모리 디바이스로부터 수신하게 된다. 앞서 설명된 APU의 아키텍처의 실시예들에 근거하여, 세논 점수에 대한 가속화된 계산이 달성된다.
5. 산술연산 로직 유닛 아키텍처( Arithmetic Logic Unit Architecture )
도 18은 본 발명의 실시예에 따른 ALU(1800)의 블록도이다. 일 실시예에서, ALU들(16301-16308) 중 하나 이상은 도 18에 제시된 아키텍처에 따라 구현될 수 있다. ALU(1800)는 특징 벡터와 가우시안 확률 분포 벡터 간의 일-차원 거리 점수를 컴퓨터연산하도록 구성된다. 예를 들어, ALU(1800)는 아래의 방정식 (1)과 같은 식으로 일-차원 거리 점수를 계산하도록 구성될 수 있고,
[방정식 (1)]
Figure 112014067866811-pct00001
여기서,
ij = xi - μij이고,
varij는 j번째 가우시안 확률 분포 벡터의 i번째 차원의 분산 값이고,
M1 및 M2는 크기조정 계수들이고,
xi는 i번째 차원에서의 특징 벡터의 값이고, 그리고
μij는 j번째 가우시안 확률 분포 벡터의 i번째 차원의 평균 값이다.
따라서, 일 실시예에서, 소정의 차원 및 소정의 가우시안 확률 분포에 대해서, ALU(1800)에 의해 출력된 일-차원 거리 점수는 세 개의 변수들, 즉, xi, μij, 및 varij에 따라 달라진다. 이러한 방정식을 소프트웨어로 구현하기 위한 한 가지 기법은 이러한 세 개의 변수들로 인덱싱된 참조 테이블(Look Up Table, LUT)을 발생시키는 것이다. 더욱이, 점수는 xi의 값과 μij의 값에 따라 특정적으로 달라지는 것이 아니라 오히려 이들 간의 차이, 즉 △ij의 값에 따라 특정적으로 달라지기 때문에, 이러한 LUT은 △ij 및 varij에 의해 인덱싱된 이-차원 LUT로 더 단순화될 수 있다. 따라서, 이-차원 LUT가 ALU들(16301-16308)을 구현하기 위해 사용될 수 있다.
그러나, 이-차원 LUT가 만약 도 16의 하드웨어 구현으로 ALU들(16301-16308)을 구현하기 위해 사용된다면 상당량의 결점들을 가질 수 있다. 특히, 예를 들어, 여덟 개의 ALU들(16301-16308)(이들 각각은 각각의 일-차원 거리 점수를 컴퓨터연산함)이 존재하기 때문에, 이러한 이-차원 LUT의 여덟 개의 복사본들이 있어야만 한다. 일 실시예에서, 이러한 이-차원 LUT는 대략 32 킬로바이트(Kbytes)이며, 하지만 다른 실시예들 및 애플리케이션들은 더 큰 LUT들을 요구할 수 있다. 따라서, 이러한 실시예에서, 32킬로바이트 LUT의 여덟 개의 복사본들이 필요하다. 만약 이러한 방식으로 구현된다면, SSU를 위한 전체 보드 공간 중 상당한 부분이 오로지 여덟 개의 이-차원 LUT들에게만 할당될 것이다. 이러한 문제는 더 큰 LUT들이 요구되거나 필요하다면 악화될 것이다.
일 실시예에서, ALU(1800)는 컴퓨터연산 로직과 일-차원 LUT의 결합체를 사용하여 점수화 기능을 구현함으로써 이-차원 LUT들의 이러한 결점을 극복한다. 중요한 것으로, 방정식 (1)은 두 부분, 즉 aluij 부분과 LUTij 부분으로 분할될 수 있고, 이들 각각은 아래와 같은 방정식으로 특정된다.
[방정식 (2)]
Figure 112014067866811-pct00002
[방정식 (3)]
Figure 112014067866811-pct00003
따라서, ALU(1800)는 aluij를 컴퓨터연산하고, 그리고 이러한 컴퓨터연산과 병렬로, LUTij를 검색한다. 그 다음에, aluij 및 LUTij는 거리 점수를 형성하기 위해 결합된다. 특히, 도 18에 제시된 바와 같이, ALU(1800)는 컴퓨터연산 로직 유닛(1802) 및 LUT 모듈(1804)을 포함한다. 아래에서 더 상세히 설명되는 바와 같이, 컴퓨터연산 로직 유닛(1802)은 aluij의 값을 컴퓨터연산할 수 있고, LUT 모듈(1804)은 LUTij의 값을 검색하기 위해 사용될 수 있다. 더욱이, ALU(1800)는 추가적으로 결합 모듈(combination module)(1806)을 포함한다. 결합 모듈(1806)은 컴퓨터연산 유닛(1802)의 출력과 LUT 모듈(1804)의 출력을 결합하여 거리 점수를 출력한다.
컴퓨터연산 로직 유닛(1802)과 LUT 모듈(1804)은 이들의 각각의 값을 결정하기 위해 필요한 입력만을 수신한다. 구체적으로, 앞서 설명된 바와 같이, aluij는 세 개의 변수들, 즉, xi, μij, 및 varij에 따라 달라진다. 따라서, 도 18에 제시된 바와 같이, 컴퓨터연산 로직 유닛(1802)은 입력으로서 이러한 세 개의 값들을 수신한다. 더욱이, LUT 모듈(1804)로부터 검색된 값들은 varij의 값만을 사용하여 인덱싱된다. 따라서, 도 18에서 제시되는 바와 같이, LUT 모듈(1804)은 varij의 값만을 수신한다.
도 19는 본 발명의 실시예에 따른 ALU(1800)의 상세한 블록도를 보여준다. 도 19의 실시예에서, 컴퓨터연산 로직 유닛(1802)은 감산 모듈(subtraction module)(1910), 제곱화 모듈(squaring module)(1912), LUT(1914), 승산기(multiplier)(1916), 그리고 포맷팅 모듈(formatting module)(1918)을 포함한다. 감산 모듈(1910)은 xi와 μij 간의 차이값(difference)을 컴퓨터연산하는바, 즉 감산 모듈(1910)은 △ij를 컴퓨터연산한다. 제곱화 모듈(1912)은 감산 모듈(1910)에 의해 출력된 차이값을 제곱하여 △2 ij를 나타내는 정수(integer)를 발생시킨다.
일 실시예에서, LUT(1914)는
Figure 112014067866811-pct00004
에 대응하는 값을 출력한다. 승산기(1916)는 두 개의 항의 곱(product), 즉 (1) LUT(1914)로부터 검색된 값과 (2) 제곱화 모듈(1912)에 의해 출력된 제곱값의 곱을 컴퓨터연산한다. 따라서, 승산기(1916)의 출력은
Figure 112014067866811-pct00005
이다. 이러한 곱의 값은 포맷팅 모듈(1918)에 의해 수신되는 바, 포맷팅 모듈(1918)은 LUT 모듈(1804)의 출력과 효과적으로 결합될 수 있도록 그 결과를 포맷팅한다.
도 19에서 제시되는 바와 같이, LUT 모듈(1804)은 LUT(1920)와 포맷팅 모듈(1922)을 포함한다. LUT(1920)는 방정식 (3)에서 표현된 바와 같이 LUTij에 대응하는 값들을 저장하고 varij를 사용하여 인덱싱된다. LUT(1920)로부터 수신된 값은 포맷팅 모듈(1922)에 의해 수신된다. 포맷팅 모듈(1922)은 컴퓨터연산 로직 유닛(1802)의 출력과 효과적으로 결합될 수 있도록 LUT(1920)의 출력을 포맷팅한다.
컴퓨터연산 유닛(1802)로부터의 출력과 LUT 모듈(1804)로부터의 출력은 결합 모듈(1806)에서 수신된다. 결합 모듈(1806)은 합산기(adder)(1930), 시프트 모듈(shift module)(1932), 라운딩 모듈(rounding module)(1934) 및 포화 모듈(saturation module)(1936)을 포함한다. 합산기(1930)는 두 개의 수신된 값들의 합(sum)을 컴퓨터연산하여 그 합을 출력한다. 시프트 모듈(1932)은 합산기(1930)에 의해 출력된 합의 분수 부분(fractional part)을 제거하도록 구성된다. 라운딩 모듈(1934)은 시프트 모듈(1932)의 출력을 라운드 다운(round down)하도록 구성된다. 포화 모듈(1936)은 라운딩된 합의 값을 수신하여 이 값을 특정 개수의 비트들로 포화시키도록 구성된다. 따라서, 포화 모듈(1936)의 출력은 특정 개수의 비트들을 갖는 값이 되며, 이 값은 일-차원 거리 점수를 나타낸다.
도 20은 본 발명의 또 다른 실시예에 따른 컴퓨터연산 유닛(1802)의 블록도이다. 도 20에 제시된 실시예는 도 19의 실시예와 유사하며, 차이점은 도 20의 실시예가 추가적으로 변환 모듈(transform module)(2002), 예외 처리 모듈(exception handling module)(2012), 포맷팅 모듈(2014), 및 멀티플렉서(2018)를 포함한다는 것이다.
변환 모듈(2002)은 승산기(2020), 스케일 비트 모듈(scale bit module)(2022), 및 포화 모듈(2024)을 포함한다. 앞서 설명된 바와 같이, 특징 벡터의 값들은 예를 들어, 화자의 학습된 특성들을 설명하기 위해 특징 벡터 변환 행렬 내의 각각의 엔트리들에 의해 변환될 수 있다. 일 실시예에서, 변환 모듈(2002)은 개개의 특징 벡터 값들 xi를 대응하는 변환 값들 αi에 의해 크기조정하도록 구성될 수 있다. 구체적으로, 승산기(2020)는 특징 벡터 값 xi와 그 대응하는 변환 값 αi의 곱을 컴퓨터연산하고 임의의 값을 스케일 비트 모듈(2022)에 출력한다. 스케일 비트 모듈(2022)은 우측으로의 시프트를 행하고 그 결과로 나오는 정수를 포화 모듈(2024)에 출력한다. 포화 모듈(2024)은 도 19를 참조하여 설명된 포화 모듈(1936)과 유사하며 수신된 값을 특정 개수의 비트들로 포화시킨다. 따라서, 포화 모듈(2024)의 출력은 크기조정된 특징 벡터 값을 나타내는 값이다.
예외 처리 모듈(2012) 및 멀티플렉서(2018)는 LUT(1914) 내에 존재하는 특정 에러들에 대처하도록 구성된다. 예를 들어, 공간을 절약하기 위해서, LUT(1914)의 크기는 감소될 수 있다. 이러한 크기 감소로 인해 LUT(1914)의 특정 값들은 에러를 가질 수 있다. 이러한 실시예에서, 예외 처리 모듈(2012)은 LUT(1914)의 출력이 이러한 값들 중 하나일 것인지를 인식할 수 있고 올바른 값을 출력할 수 있다. 달리 말하면, 예외 처리 모듈(2012)은 크기 제약으로 인해 에러를 가질 수 있는 LUT(1914)의 각각의 엔트리에 대한 임의의 엔트리를 포함하는 LUT로서 동작할 수 있다. LUT(1914)가 varij에 근거하여 인덱싱되기 때문에, 예외 처리 모듈(2012)은 LUT(1914)의 출력이 varij의 값에 근거하여 정정될 필요가 있는지 여부를 인식할 수 있다.
또 다른 실시예에서, 예외 처리 모듈(2012)은 △ij를 또한 수신하는 이-차원 LUT로서 동작할 수 있다. 이러한 실시예에서, 예외 처리 모듈(2012)은 (예를 들어, LUT(1914)로부터의 대응하는 엔트리와는 대조적으로) aluij의 특정 값들을 출력할 수 있다. LUT(1914) 내의 이러한 가능한 에러들의 개수는 상대적으로 작기 때문에, 예외 처리 모듈(2012)은 상당량의 공간을 점유하지 않게 되는데, 다른 커다란 이-차원 LUT들에 대해서도 마찬가지 일 수 있다. 더욱이, 부호 비트 모듈(sign bit module)(1918)의 출력 대신에 예외 처리 모듈(2012)의 출력을 출력하도록 멀티플렉서(2018)를 제어함으로써, 예외 처리 모듈(2012)은 LUT(1914)의 올바르지 않은 출력을 사용하여 계산된 aluij의 값이 아니라 aluij에 대한 저장된 값이 최종적으로 결합 모듈(1806)에 출력되도록 보장할 수 있다.
포맷팅 모듈(2014)은 승산기(1916)에 의해 컴퓨터연산된 곱을 수신한다. 일 실시예에서, 포맷팅 모듈(2014)은 그 결과에서의 비트들의 개수를 감소시키도록 구성된다. 필연적인 것은 아니지만, 이러한 동작은 출력 상에서의 비트들의 개수를 감소시킴으로써 공간 및 파워를 절약할 수 있다.
더욱이, 도 20의 실시예에서 감산 모듈(1810)은 멀티플렉서들(2004 및 2006), 비교 모듈(2008), 및 감산기(2010)를 포함하는 것으로 제시되어 있다. 일 실시예에서, 제곱화 모듈(1912)은 특정적으로 양의 값들을 제곱화하도록 구성될 수 있다. 따라서, 이러한 실시예에서 감산 모듈(1910)의 출력은 양의 값이어야만 한다. 이러한 결과를 달성하기 위해, 두 개의 오퍼랜드(operand)들, 즉 특징 벡터 값(선택에 따라서는 변환 값 αi로 크기조정됨)과 평균 값 μij가 비교 모듈(2008)에 의해 비교될 수 있다. 그 다음에, 비교 모듈(2008)은 감산기(2010)로의 제 1 오퍼랜드가 제 2 오퍼랜드와 비교해 적어도 제 2 오퍼랜드만큼 큰 것을 보장하기 위해 멀티플렉서들(2004 및 2006)에게 제어 신호를 출력한다.
도 21은 일-차원 거리 점수를 컴퓨터연산하기 위한 방법(2100)의 실시예를 나타낸 도면이다. 방법(2100)의 단계들은 예를 들어, 도 18에 제시된 ALU(1800)를 사용하여 수행될 수 있다. 단계(2102)에서, 특징 벡터 차원은 변환 값에 의해 크기조정된다. 단계(2104)에서, 제1의 값이 특징 벡터 값, 그리고 가우시안 확률 분포 벡터와 관련된 평균 및 분산에 근거하여 컴퓨터연산된다. 단계(2106)에서, 제2의 값이 분산 값에 근거하여 검색된다. 예를 들어, 도 19에서, LUT 모듈(1804)은 분산 값을 검색하기 위해 사용될 수 있다. 단계(2108)에서, 제1의 값과 제2의 값은 일-차원 점수를 발생시키기 위해 결합된다.
6. 음향 프로세싱 유닛 인터페이스( Acoustic Processing Unit Interface )
A. 시스템 개요( System Overview )
도 22는 본 발명의 실시예에 따른 음향 프로세싱 시스템(2200)의 블록도이다. 음향 모델링 프로세스(420)는 중앙 프로세싱 유닛(CPU)(2210) 및 음향 프로세싱 유닛(APU)(2220)을 포함한다. CPU(2210) 상에서 실행되고 있는 것은 애플리케이션(2212), 음성 인식 엔진(2214), 그리고 API(2216)이다. 음성 인식 엔진(2214)은 적어도 두 개의 쓰레드(thread)들, 즉 탐색 쓰레드(search thread)(2250) 및 거리 쓰레드(distance thread)(2260)를 포함하는 프로세스이다.
APU(2220)는 음향 모델 메모리(2222), 제 1 버스(2224), 메모리 버퍼(2226), 제 2 버스(2228), 및 세논 점수화 유닛(2230)을 포함한다. 음향 모델 메모리(2222)는 하나 이상의 음향 모델들을 함께 형성하는 복수의 세논들을 저장하도록 구성될 수 있다. 제 1 버스(2224)는 음향 모델 메모리로 하여금 전체 가우시안 확률 분포 벡터를 메모리 버퍼(2226)에 출력할 수 있도록 구성된 광폭 버스이다. 세논 점수화 유닛(2230)은 CPU(2210)로부터 수신된 특징 벡터에 대비하여 세논 점수를 생성하는 점수화를 행한다. 세논 점수화 유닛(2230)은 앞서 설명된 바와 같이 구현될 수 있다. 예를 들어, 세논 점수화 유닛은 도 15에 제시된 바와 같이 구현될 수 있다. 세논 점수화 유닛(2230)에 관한 더 많은 정보에 대해서는 앞에서 설명된 섹션 4 부분을 참조하기 바란다.
메모리 버퍼(2226)는 세논 점수화 유닛(2230)이 가우시안 확률 분포 벡터에 대해 가우시안 거리 점수를 컴퓨터연산할 준비가 될 때까지 가우시안 확률 분포 벡터를 보유할 수 있다. 즉, 만약 세논 점수화 유닛(2230)이, CPU(2210)로부터 수신된 특징 벡터를 가우시안 확률 분포 벡터 q에 대비하여 점수화한다면, 메모리 버퍼(2226)는 점수화될 다음 가우시안 확률 분포 벡터, 즉 벡터 q+1를 보유할 수 있다.
도 22에서 제시되는 바와 같이, APU(2220)에 대한 입력들은 특정 세논에 대한 참조(세논 #) 및 특징 벡터를 포함한다. 세논 # 입력은 음향 모델 메모리 내의 그 특정 세논에 대응하는 저장된 벡터 정보를 어드레스(address)한다. APU(2220)의 출력은 세논 점수이고, 여기서 세논 점수는 참조된 세논이 소정의 시간 프레임에서 특징 벡터를 방출할 확률을 나타낸다. 일 실시예에서, 음향 모델 메모리(2222)는 병렬 판독 아키텍처 및 매우 큰 내부 대역폭 버스(2224)를 사용한다. 병렬로 판독된 비트들의 개수는 256개보다 더 크다(예를 들어, 768개의 비트들을 갖는 폭은 전체 가우시안 확률 분포 벡터를 한번에 로드하기에 충분함). 그 다음에 음향 모델 메모리(2222)로부터 판독된 값들은 매우 큰 대역폭 버스(2224)를 사용하여 메모리 버퍼(2226)에 래치(latch)된다. 메모리 버퍼(2226)로부터의 출력과 관측 벡터 정보 모두가 세논 점수화 유닛(2230)에 입력되는바, 여기서 세논 점수 유닛(2230)은 세논 점수를 컴퓨터연산하기 위해 요구되는 곱셈 및 덧셈을 수행한다. 메모리 버퍼(2226)가 세논 점수화 유닛(2230)과 통신시 사용하는 버스(2228)는 실질적으로 버스(2224)와 유사하다.
앞에서 언급된 바와 같이, 세논 점수는 N 차원의 J개의 가우시안 확률 분포 벡터들의 점수들을 계산함으로써, 그리고 그 다음에 전체 점수를 얻기 위해 이들을 함께 합산함으로써 컴퓨터연산된다. 그러나, 일부 점수화 알고리즘들은 컴퓨터연산의 속도를 증가시키기 위해 계산시 가장 중요한 가우시안(most significant Gaussian)들만을 사용한다. 가우시안들의 부분적 세트에 근거하는 알고리즘들을 이용하는 경우, 요구된 가우시안들과 관련된 그러한 비트들만이 음향 모델 메모리로부터 세논 점수화 유닛(2230)으로 전달될 필요가 있다. 달리 말하면, 세논 점수화 유닛(2230)에 의해 항상 요구되는 메모리 내의 인접하는 비트들의 최대 개수는 단일 가우시안 확률 분포 벡터를 저장하기 위해 사용되는 비트들의 개수와 동일하다. 메모리 버스의 대역폭 요건들, 뿐만 아니라 병렬로 판독될 필요가 있는 비트들의 개수는 각각의 전달시 단일 가우시안 확률 분포 벡터를 구성하는 그러한 비트들만을 전달함으로써 최소화될 수 있다. 각각의 전달에 대해 이러한 개수의 비트들을 사용하면, APU(2220)의 파워 요건들은 감소될 수 있고, 세논 점수화 유닛(2230)으로의 필요한 데이터의 전달 속도는 증가될 것이며, 이것은 결과적으로 전체 시스템 성능을 향상시키게 된다. 달리 말하면, 각각의 전달에서의 비트들의 개수를 감소시킴으로써, APU(2220)의 파워 요건들은 감소될 수 있고, 세논 점수화 유닛(2230)으로의 필요한 데이터의 전달 속도가 또한 증가될 수 있으며, 이것은 결과적으로 전체 시스템 성능을 향상시키게 된다.
앞에서 논의된 바와 같이, 음향 모델링은 음성 인식 시스템의 많은 타입들(즉, 키워드 인식(keyword recognition) 혹은 다량의 어휘 연속 음성 인식(large vocabulary continuous speech recognition))에서 중대한 장애물들 중 하나이다. 비교 및 계산의 횟수가 크기 때문에, 고성능 및/또는 병렬 마이크로프로세서들이 일반적으로 사용되고, 음향 모델들을 저장하는 메모리와 프로세서들 간의 고 대역폭 버스가 요구된다. 도 22의 실시예에서, 음향 모델 메모리(2222)는 APU(2220)에 통합될 수 있는바, 여기서 음향 모델 메모리(2222)는 세논 점수화 유닛(2230)과 함께 단일 다이 내에 통합되게 되고, 이들 모두는 데이터 전달 속도를 향상시키기 위해 광폭의 고 대역폭 내부 버스들(2224 및 2228)을 사용하여 연결된다. 그러나, 각각의 전달에 대해 비트들의 개수를 증가시키는 것이 데이터 전달 속도를 향상시킬 수는 있지만 이것이 언제나 전체 시스템 성능을 향상시키는 것은 아니다.
각각의 전달에 있어서의 비트들의 개수는 또한 음향 모델링을 위해 사용되는 알고리즘들에 따라 달라질 수 있다. 가우시안들의 부분적 세트에 근거하는 점수화 알고리즘들이 사용되는 경우(즉, 가우시안 선택(Gaussian Selection)), 각각의 전달에 있어서의 비트들의 개수는 알고리즘에 의해 사용된 가우시안의 크기와 동일할 수 있다. 각각의 전달에 있어서의 더 적은 개수의 비트들은 가우시안을 구성하는 데이터를 전달하기 위해 복수의 싸이클들을 요구하고, 각각의 전달에 있어서의 더 많은 개수의 비트들은 데이터 비-집약성(data non-locality)으로 인해 비효율적이다.
일 실시예에서, 점수화 알고리즘들이 가우시안들의 부분적 세트에 적어도 부분적으로 근거하여 사용되는 경우(즉, 가우시안 선택), 음향 모델링 하드웨어 가속기들을 위한 아키텍처가 사용된다. 이러한 최적화된 아키텍처는 결과적으로 다른 아키텍처들과 비교하여 전체 시스템 성능이 크게 향상되게 할 수 있다.
도 23은 본 발명의 실시예에 따른 음향 프로세싱 시스템(2300)의 블록도이다. 음향 프로세싱 시스템(2300)은 프로세서(2310), 전용 DRAM 모듈(2302), DRAM 모듈(2304), 및 비-휘발성 메모리 모듈(2306)을 포함한다. 비-휘발성 메모리 모듈(2306)은 예를 들어, 임베디드 플래시 메모리 블록(embedded FLASH memory block)으로서 구현될 수 있다. 프로세서(2310)는 CPU(2312), 하드웨어 가속기(2314), 및 메모리 인터페이스(2316)를 포함한다. 하드웨어 가속기(2314)는 세논 점수화 유닛(2230)을 포함한다. 세논 점수화 유닛(2230)은 앞서 설명된 바와 같이 구현될 수 있다. 예를 들어, 세논 점수화 유닛은 도 15에 제시된 바와 같이 구현될 수 있다.
일 실시예에서, 전용 DRAM 모듈(2302)은 예를 들어, 세논들을 저장하기 위해 세논 점수화 유닛(2230)에 의해 전용으로 사용된다. 따라서, 메모리 인터페이스(2316)는 세논 점수화 유닛(2230)을 전용 DRAM 모듈(2302)에 결합시킬 수 있다.
도 24는 본 발명의 실시예에 따른 하드웨어 가속기(2400)의 블록도이다. 하드웨어 가속기(2400)는 프로세서(2402) 및 전용 DRAM 모듈(2404)을 포함한다. 프로세서(2402)는 직렬 주변장치 인터페이스(Serial Peripheral Interface, SPI) 버스 인터페이스 모듈(2412), 세논 점수화 유닛(2414), 그리고 메모리 인터페이스(2416)를 포함한다. 세논 점수화 유닛(2414)은 앞에서 설명된 바와 같이(예를 들어, 도 15에 제시된 바와 같이) 구현될 수 있다. 도 24에서 제시되는 바와 같이, 전용 DRAM 모듈(2404)은 하나 이상의 음향 모델들을 저장한다. 대안적 실시예에서, DRAM 모듈(2404)은 대신에 비-휘발성 메모리 모듈, 예를 들어, 플래시 메모리 모듈일 수 있다. 또 다른 실시예에서, DRAM 모듈(2404)은 대신에 휘발성 메모리 모듈(예를 들어, DRAM)과 비-휘발성 메모리 모듈(예를 들어, 플래시)을 포함하는 메모리 모듈일 수 있다. 이러한 실시예에서, 음향 모델은 초기에 비-휘발성 메모리 모듈에 저장될 수 있고, 세논 점수화를 위해 휘발성 메모리 모듈로 복사될 수 있다.
SPI 인터페이스 모듈(2412)은 SPI 버스에 대한 인터페이스를 제공할 수 있는바, SPI 버스는 또한 하드웨어 가속기(2400)를 CPU에 결합시킬 수 있다. 메모리 인터페이스(2416)는 세논 점수화 유닛(2414)을 전용 DRAM 모듈(2404)에 결합시킨다. 일 실시예에서, 음성-인식 시스템은 클라우드-기반의 해법(cloud-based solution)으로 구현될 수 있는바, 이 해법에서 음성-인식을 위해 필요한 세논 점수화 및 프로세싱은 클라우드-기반의 음성-인식 애플리케이션에서 수행된다.
B. 소프트웨어 스택( Software Stack )
도 25는 본 발명의 실시예에 따른 APU 소프트웨어 스택(2500)을 예시하는 블록도이다. 소프트웨어 스택(2500)은 음향 프로세싱 시스템(예를 들어, 도 22를 참조하여 설명된 음향 프로세싱 시스템(2200))에서의 컴포넌트들 간의 통신들을 개념적으로 예시하기 위해 사용될 수 있다. 스택(2500)은 애플리케이션(2502), 음성 인식 엔진(2504), 애플리케이션 프로그래밍 인터페이스(API)(2550), SPI 버스 제어기(2512), SPI 버스(2514), 그리고 APU(2516)를 포함한다. API(2550)는 범용 DCA(Generic DCA)(2506), 로우 레벨 드라이버(Low Level Driver, LLD)(2508), 그리고 하드웨어 추상화 계층(Hardware Abstraction Layer, HAL)(2510)을 포함한다. 일 실시예에서, 애플리케이션(2502), 음성 인식 엔진(2504), API(2550) 및 APU(2516)는 도 22의 애플리케이션(2212), 음성 인식 엔진(2214), API(2216) 및 APU(2220)에 각각 대응할 수 있다.
소프트웨어 스택(2500)에서, 애플리케이션(2502)은 음성 인식 엔진(2504)과 통신하고, 음성 인식 엔진(2504)은 또한 범용 DCA(2506)와 통신한다. 일 실시예에서, 음성 인식 엔진(2504)은 DCA API를 통해 범용 DCA(2506)에 결합된다. 범용 DCA(2506)는 LLD API를 통해 LLD(2508)에 결합될 수 있다. LLD(2508)는 HAL API를 통해 HAL(2510)에 결합될 수 있다. HAL(2510)은 SPI 버스(2514)에 통신가능하게 결합된 SPI 버스 제어기(2512)에 통신가능하게 결합된다. APU(2516)는 SPI 버스(2514)에 통신가능하게 결합되고, 버스 제어기(2512) 및 SPI 버스(2514)를 통해 HAL(2510)에 통신가능하게 결합된다.
일 실시예에서, 소프트웨어 스택(2500)은 APU(2516)와 애플리케이션(2502)(예를 들어, 음성 인식을 사용하는 애플리케이션) 간에 소프트웨어 인터페이스를 제공한다. 특히, 애플리케이션(2502)과 음성 인식 엔진(2504)은 "하드웨어에 무관(hardware agnostic)"할 수 있다. 즉, 애플리케이션(2502)과 음성 인식 엔진(2504)은 거리, 혹은 세논, 점수화가 어떻게 일어나는지에 관한 세부 정보 없이도 그 각각의 동작들을 완료할 수 있다.
범용 DCA(2506), LLD 계층(2508) 및 HAL 계층(2510)은 하드웨어에 특정된 API 호출(hardware-specific API call)들을 포함한다. 일 실시예에서, HAL(2510)의 API 호출들은 그것이 연결된 제어기의 타입에 따라 달라진다. 일 실시예에서, APU(2516)에 대한 버스 인터페이스는 (상이한 API 호출들을 갖는) 상이한 HAL을 요구하는 상이한 버스와 제어기 결합일 수 있다.
범용 DCA(2506)는 거리 컴퓨터연산 API이다. DCA는 소프트웨어 개발자에 의해 정의될 수 있다. 일 실시예에서, DCA API는 음성 인식 엔진(2504)과 같은 음성 인식 엔진을 지원하도록 특정적으로 정의된다. 또한, 범용 DCA(2506)는 APU(2516)에 대해 특정적으로 구현될 수 있다. 더욱이, LLD(2508)는 세논 점수화 유닛 커맨드들의 기능적 추상화(functional abstraction)일 수 있고, 세논 점수화 유닛 커맨드들에 대한 일-대-일 맵핑(one-to-one mapping)일 수 있다. 도 25에 제시된 바와 같이, 로우-레벨 드라이버(2508)는 HAL(2510)에 결합된다.
DCA API는 다음과 같은 다섯 개의 함수들, 즉, 생성(Create) 함수, 종료(Close) 함수, 특징 설정(Set Feature) 함수, 거리 점수 컴퓨터연산(Compute Distance Score) 함수, 및 점수 충전(Fill Scores) 함수를 포함할 수 있다. 일 실시예에서, 생성 함수는 어떤 음향 모델이 사용될 것인지를 특정한다. 메모리에 저장된 하나 이상의 음향 모델들(예를 들어, 각각의 언어에 대한 하나 이상의 음향 모델들)이 존재할 수 있다. 예를 들어, 도 22를 참조하여 앞에서 설명된 바와 같이, APU의 전용 음향 모델 메모리(2222)는 음향 모델(예를 들어, 세논 라이브러리(들))을 저장할 수 있다. 더욱이, 음향 모델(예를 들어, 다양한 세논들에 대응하는 사운드의 가우시안 분포를 저장하는 세논들의 라이브러리) 및 특징 벡터가 주어지는 경우, 생성 함수는 특징 벡터 내의 차원들의 개수를 특정할 수 있다. 일 실시예에서, 영어에 있어 특징 벡터는 39개의 차원들을 가질 수 있다. 또 다른 실시예에서, 다른 언어들에 대해서, 특징 벡터는 또 다른 개수의 차원들을 가질 수 있다. 더 일반적으로는, 차원들의 개수는 음성 인식 프로세싱을 위해 선택된 특정 음성 언어(specific spoken language)에 따라 변할 수 있다. 따라서, 생성 함수는 선택되는 음향 모델, 차원들의 개수, 그리고 세논들의 개수를 특정한다. 종료 함수는 특징 벡터들의 전달, 오디오 샘플 부분들, 하드웨어 가속기(예를 들어, APU(2516))에 대한 세논 점수화 요청들을 끝내는 함수이다.
일 실시예에서, 특징 설정 함수는 특정 프레임ID(frameID), 패스ID(passID), 및 특징 벡터를 패스(pass)시킴으로써 세논 점수화 요청들을 이들의 각각의 프레임들에 설정하는데 사용된다. 앞서 언급된 바와 같이, 입력 오디오 신호는 (예를 들어, 음성 인식 엔진(2504)에 의해) 프레임들로 해체(break up)될 수 있다. 예시적 프레임은 오디오 입력 신호의 일부분의 스펙트럼 특성(spectral characteristic)들을 포함한다. 일 실시예에서, 프레임의 길이는 12 밀리초(milliseconds)(ms)일 수 있다. 특징 설정 함수는 각각의 프레임을 39개의 차원들(예를 들어, 39개의 8-비트 값들)로 변환시킬 수 있다. 특징 설정 함수는 특정 프레임의 ID 및 관련된 특징 벡터를 특정할 수 있다.
일 실시예에서, 거리 컴퓨터연산 점수화 함수는 세논 점수(예를 들어, 가우시안 확률)를 계산하는바, 이는 앞서 언급된 바와 같이, 거리 계산으로서 구현될 수 있다. 이러한 함수는 세논 점수화를 시작 및 준비하기 위해 사용될 수 있다. 예를 들어, 특징 벡터가 APU(2516)에 입력될 수 있고, APU(2516)는 음향 모델에 저장된 모든 세논들 혹은 적어도 세논들의 선택된 부분에 대비하여 점수화를 행할 것이다. 그 다음에, 이러한 점수는 상위 계층에 되돌려지게 될 것이다. 일 실시예에서, 거리 컴퓨터연산 점수화 함수는 세논 점수화를 위해 일부 음향 모델이 사용될 것인지 혹은 전체 음향 모델이 사용될 것인지를 특정할 수 있다.
일 실시예에서, 점수 충전 함수는 세논 점수화 결과를 획득하여 이것을 (애플리케이션(2502) 및 음성 인식 엔진(2504)을 포함하는) 상위 소프트웨어 계층들에 리턴(return)한다.
일 실시예에서, 음성 인식 엔진(2504)은 임의의 패턴 인식 형태(예를 들어, 패턴 인식을 위해 은닉 마르코프 모델을 사용하는 패턴 인식 형태들)를 위해 사용될 수 있다. 또 다른 실시예에서, 다른 형태의 패턴 인식이 또한 가우시안 계산들을 사용한다. 패턴 인식의 예들은, 앞서 설명된 음성 인식을 위한 세논 점수화, 이미지 프로세싱 및 필기 인식을 포함할 수 있지만 이러한 것으로 한정되는 것은 아니다.
앞서 언급된 바와 같이, 애플리케이션(2502) 및 음성 인식 엔진(2504)은 세논 점수를 결정하기 위해 사용되는 임의의 하드웨어에 무관하다. 일 실시예에서, 특정 APU는 애플리케이션(2502) 및 음성 인식 엔진(2504)에 관한 정보 혹은 작동 방식 정보 없이 상이한 하드웨어로 교환(swap out)될 수 있다. 애플리케이션(2502) 및 음성 인식 엔진(2504)이 세논 점수화를 사용되는 임의 타입의 하드웨어에 무관한 경우, 제 1 하드웨어 가속기는 애플리케이션(2502) 및 음성 인식 엔진(2504)의 그 어떤 재설계를 요구함이 없이 상이한 설계의 제 2 하드웨어 가속기로 대체될 수 있다. 달리 말하면, 본 명세서에서 논의되는 바와 같이, 호출들의 APU 라이브러리는 사용되는 하드웨어 가속기의 타입 및 설계에 특정되지만, 범용 DCA 라이브러리 호출들은 하드웨어에 특정되지 않는다.
일 실시예에서, 도 25에 예시된 바와 같은 소프트웨어 아키텍처는 도 25에 예시된 소프트웨어 스택을 통한 데이터 및 제어 흐름을 설명함으로써 기술될 수 있다. 애플리케이션(2502)은 음성 인식 엔진을 사용하는 임의의 애플리케이션일 수 있다. 일 실시예에서, 음성 인식 엔진(2504)은 뉘앙스 사(Nuance, Inc)에 의해 제공되는 보콘 엔진(Vocon Engine)이다. 대안적 실시예에서는, 확률 추정을 위해 가우시안 혼합 모델(Gaussian Mixture Model, GMM)을 사용하는 다른 음성 인식 엔진들 혹은 패턴 인식 엔진들이 사용될 수 있다.
일 실시예에서, APU(2516)는 가우시안 혼합 모델을 사용하여 세논 점수들을 컴퓨터연산한다. APU(2516)는 임베디드 프로세서(예를 들어, 코텍스 A8 임베디드 프로세서(cortex A8 embedded processor))보다 훨씬 더 빨리(예를 들어, 10의 배수만큼 더 빨리) 이러한 점수들을 컴퓨터연산할 수 있고, 이는 APU(2516)를 갖는 온-보드 음성 인식 시스템들에서 음성 인식이 더 실용적이게 한다. 세논 점수화(혹은 거리 컴퓨터연산)를 APU(2516)에 오프로드(offload)시키는 것은 (컴퓨터연산 레이턴시(computational latency)를 감소시킴으로써) 사용자 경험을 향상시키고 뿐만 아니라 CPU(2210)가 시스템 내의 다른 태스크(task)들을 처리할 수 있게 한다. 소프트웨어 아키텍처는 CPU 부하 및 레이턴시를 감소시키는 데 있어 중요한 역할을 한다.
일 실시예에서, 음성 인식 엔진(2504)은 APU(2516)를 직접적으로 인식하지 않는다. 예를 들어, 음성 인식 엔진(2504)은 거리들(이것은 또한 세논 점수들로 지칭됨)을 컴퓨터연산하기 위해 범용 DCA API(2506)를 사용할 수 있다. 본 명세서에서 논의된 범용 DCA 라이브러리의 특정 구현예는 (아래에서 논의되는 APU에 대한 복수의 함수 호출들을 갖는) APU(2516)를 사용하도록 특정적으로 설계되었다. 이것은 범용 DCA 라이브러리의 완전한 소프트웨어 구현예와는 다른 것이다. 이러한 특정 구현예는 범용 DCA 라이브러리 호출들을 APU 라이브러리 호출들의 시퀀스로 변환한다. 이러한 구현예의 상세한 설명이 아래에서 기술된다. APU 라이브러리의 정의 및 구현은 APU의 현재 구현되고 있는 것에 특정되고, 이것도 또한 아래에서 기술된다.
일 실시예에서, 범용 DCA(2506)는 음성 인식 엔진(2504)과 APU(2516) 간의 인터페이스 계층으로서 동작한다. 예를 들어, 음성 인식 엔진(2504)은 세논 점수화를 요청하기 위해 범용 DCA에 대한 범용 API 호출들을 이용할 수 있다. 그 다음에, 범용 DCA(2506)는 APU 하드웨어 가속기로 하여금 그 요청된 세논 점수화를 수행하도록 지시하기 위해 아래에서 더 설명되는 API 호출들의 APU-특정 라이브러리(APU-specific library)를 이용한다. 음성 인식 엔진(2504)이 APU(2516)를 인식하지 못하기 때문에, 음성 인식 엔진(2504)은 다음과 같은 혜택의 이점을 가질 수 있다. 예를 들어, 음성 인식 엔진(2504)은 APU(2516)의 메시지 패스 포맷(message passing format)들만을 알면 된다. 음성 인식 엔진(2504)은 또한, APU(2516)에 의해 수행될 태스크들을 알 필요가 없다. 더욱이, 교환 혜택(swap-out benefit)이 존재한다. 즉, APU(2516)는 음성 인식 엔진(2504)의 그 어떤 재설계도 요구함이 없이 대체 혹은 재설계될 수 있다. 본 실시예의 범용 DCA(2506)에서, 음성 인식 엔진(2504)과 APU(2516) 간의 요구된 상호운용성(interoperability)을 보장하기 위해, 오로지 인터페이스만이 하드웨어 특정 API 호출들을 가질 필요가 있다.
하나의 예시적 실시예에서, 범용 DCA 라이브러리는 함수들의 다음과 같은 목록을 포함한다.
함수 명칭: distance_computation_create
입력 파라미터들:
Figure 112014067866811-pct00006
음향 모델
Figure 112014067866811-pct00007
특징 벡터에서의 차원들의 개수
Figure 112014067866811-pct00008
음향 모델에서의 세논들의 총 개수
설명: 이러한 파라미터들을 거리 컴퓨터연산의 상태의 일부분으로서 저장함.
함수 명칭: distance_computation_setfeature
Figure 112014067866811-pct00009
입력 파라미터들:
o 프레임 Id
o 특징 벡터
설명: 프레임 Id에 대응하는 특징 벡터를 저장함.
함수 명칭: distance_computation_computescores
Figure 112014067866811-pct00010
입력 파라미터들:
o 프레임 Id
o 점수화할 세논들의 목록
설명: 소정의 프레임에 대해 점수화될 세논들을 특정함.
함수 명칭: distance_computation_fillscores
Figure 112014067866811-pct00011
입력 파라미터들:
o 점수들을 포함하고 있는 버퍼
설명: 세논 점수들을 버퍼에 저장함.
함수 명칭: distance_computation_setfeaturematrix
o 입력 파라미터들:
o p행렬(pMatrix)
설명: APU 내의 "p행렬(pMatrix)"에 의해 주어진 특징 벡터 변환 행렬을 저장함
distance_computation_setfeaturematrix 함수는 특정 화자에 대한 인식을 조정하기 위해 발성(utterance)들 사이에 호출된다. APU는 다음 발성에 대한 세논 점수들을 컴퓨터연산할 때 이 행렬을 사용한다.
일 실시예에서, "distance_computation_computescores" 및 "distance_computation_fillscores"는 컴퓨터연산 레이턴시 및 CPU 부하가 최소화되도록 구현될 수 있다. 예를 들어, 이러한 함수들은 도 26에 구현된 동시실행 동작이 달성되도록 구현될 수 있다.
하나의 예시적 실시예에서, APU 라이브러리는 다음과 같은 함수들을 지원한다.
함수 명칭: apu_set_acoustic_model
Figure 112014067866811-pct00012
입력 파라미터들:
o 음향 모델
Figure 112014067866811-pct00013
설명: 세논 점수화를 위해 사용될 음향 모델을 설정함.
함수 명칭: apu_load_feature_vector
Figure 112014067866811-pct00014
입력 파라미터들:
o 특징 벡터
Figure 112014067866811-pct00015
설명: 특징 벡터를 APU에 로드함.
함수 명칭: apu_score_senone_chunk
Figure 112014067866811-pct00016
입력 파라미터들:
o 세논 목록
Figure 112014067866811-pct00017
설명: 점수화를 위해 세논 목록을 APU에 로드함.
함수 명칭: apu_score_range
Figure 112014067866811-pct00018
입력 파라미터들:
o 첫 번째 인덱스와 마지막 인덱스에 의해 특정된 세논들의 범위
Figure 112014067866811-pct00019
설명: APU로 하여금 해당 범위 내의 모든 세논들을 점수화하도록 명령함.
함수 명칭: apu_read_senone_scores
Figure 112014067866811-pct00020
입력 파라미터들:
o 판독할 점수들의 개수
o 목적지 버퍼(Destination buffer)
Figure 112014067866811-pct00021
설명: 점수들을 판독하고 목적지 버퍼에 저장함.
함수 명칭: apu_check_score_ready_status
Figure 112014067866811-pct00022
입력 파라미터들:
o 없음(none)
Figure 112014067866811-pct00023
설명: 점수들이 APU로부터 판독될 준비가 되어있는지 여부를 점검함.
함수 명칭: apu_read_score_length
Figure 112014067866811-pct00024
입력 파라미터들:
o 없음(none)
Figure 112014067866811-pct00025
설명: 이용가능한 점수 엔트리들의 개수를 찾기 위해 상태 레지스터(status register)를 판독함.
함수 명칭: apu_read_status
Figure 112014067866811-pct00026
입력 파라미터들:
o 레지스터 인덱스(Register index)
Figure 112014067866811-pct00027
설명: 레지스터 인덱스에 의해 특정된 상태 레지스터를 판독함.
함수 명칭: apu_read_configuration
Figure 112014067866811-pct00028
입력 파라미터들:
o 없음(none)
Figure 112014067866811-pct00029
설명: 구성 레지스터(configuration register)를 판독함.
함수 명칭: apu_write_configuration
Figure 112014067866811-pct00030
입력 파라미터들:
o 구성 데이터(Configuration data)
Figure 112014067866811-pct00031
설명: 구성 레지스터에 기입을 행함.
일 실시예에서, APU는 소정의 발성의 각각의 프레임에 대해 세논들을 점수화하기 위해 사용될 수 있다. 선택된 음향 모델이 distance_computation_create 함수의 일부로서 시작시 APU에 전달된다. 소정의 프레임에 대한 특징 벡터는 distance_computation_setfeature 함수를 통해 APU에 패스된다. 소정의 프레임에 대해 점수화될 세논들은 distance_computation_computescores 함수를 통해 APU에 패스된다. APU에 의해 컴퓨터연산되는 실제 점수들은 distance_computation_fillscores 함수를 통해 엔진(음성 인식 엔진)으로 백(back) 패스될 수 있다.
도 25에 예시된 스택(2500)의 상부에서 하부로 제어는 흐른다. 모든 함수들은 동기화되어 있고, distance_computation_computescores 함수를 제외하고 이들은 리턴을 행하기 전에 완료된다. 아래에서 언급되는 바와 같이, 점수화는 앞에서 설명된 바와 같이 거리 컴퓨터연산 및 탐색의 동시실행을 최대화하기 위해 개별 쓰레드로서 구현될 수 있다. 이러한 쓰레드는 APU(2220)가 거리 컴퓨터연산을 완료하는 것을 기다릴 때마다 음성 인식 엔진(2214)의 나머지에 CPU를 양보한다. 이러한 비동기 컴퓨터연산은 레이턴시를 최소화시키기 위해서, 뿐만 아니라 CPU 부하를 최소화시키기 위해서 중요하다.
C. 동시실행되는 탐색 및 거리 점수 컴퓨터연산( Concurrent Search and Distance Score Computation )
일 실시예에서, 애플리케이션(2502) 혹은 음성 인식 엔진(2504)에 의해 실행되고 있는 쓰레드와는 별개의 쓰레드(예를 들어, 실행가능한 프로세스)가 APU(2516)를 위해 생성될 수 있다. 별개의 쓰레드들이 존재하도록 하기 위해서, 종속성(dependency)(제 1 액터(actor)의 후속 액션(action)이 제 2 액터의 액션들에 따라 달라지는 것)이 존재하면 안 된다. 애플리케이션(2502)과 음성 인식 엔진(2504)과 APU(2516) 간의 임의의 종속성을 끊어버리는 것(breaking)은 애플리케이션(2502) 및 음성 인식 엔진(2504)으로 하여금 APU(2516)와 병렬로 동작할 수 있게 한다. 하나의 예시적 실시예에서, 한편으로는 음성 인식 엔진(2504)과 애플리케이션(2502) 간의 종속성, 그리고 다른 한편으로는 APU(2516)와 애플리케이션(2502) 간의 종속성은 예를 들어 대략 10-12ms 지속되는 프레임들의 사용을 통해 피해질 수 있다(하지만, 본 발명이 이러한 실시예로만 한정되는 것은 아님). 예를 들어, 애플리케이션(2502)이 프레임 n에 대한 세논 점수를 사용하고 있을 때, APU(2516)는 프레임 n+1에 대한 세논 점수를 수행하고 있을 수 있다.
더 구체적으로, 음성 인식 동작은 두 개의 개별 동작들(점수화 및 탐색)을 요구한다. 앞에서 설명된 바와 같이, 점수화 동작은 특정 프레임에 대응하는 특징 벡터를 갖는 세논의 가우시안 확률 분포 벡터들 간의 비교를 포함한다. 일 실시예에서, 소프트웨어 스택(2500)은 이러한 두 개의 동작들이 병렬로 일어나도록 구성될 수 있다. 특히, 도 22에 제시된 바와 같이, 음성 인식 엔진(2214)은 탐색 쓰레드(2250) 및 거리 쓰레드(2260)를 포함할 수 있다. 거리 쓰레드(2260)는 APU(2220) 상에서 완료된 거리 계산들을 관리할 수 있고, 탐색 쓰레드(2250)는 (예를 들어, 최상의 매칭을 결정하기 위해 세논 점수들의 라이브러리를 탐색함으로써) 어떤 사운드가 수신되었는지를 결정하기 위해 거리 계산들의 결과들을 사용할 수 있다. 거리 쓰레드(2260)가 탐색 쓰레드(2250)보다 우선순위가 더 높도록 설정함으로써, 거리 쓰레드(2260)는 APU(2220) 상에서의 점수화 동작을 시작하기 위해 필요한 동작들을 수행할 수 있다. 그 다음에, 거리 쓰레드(2260)는 수면(sleep) 상태에 놓일 수 있다. 수면 상태 동안, 탐색 쓰레드(2250)는 활성화될 수 있고 마지막 거리 연산동작의 결과들을 사용하여 탐색을 행할 수 있다. 거리 컴퓨터연산을 완료하기 위해 필요한 시간의 길이가 상대적으로 예측가능하기 때문에, 거리 쓰레드는 미리결정된 양의 시간 동안 수면 상태에 놓일 수 있다. 대안적 실시예들에서, 거리 쓰레드(2260)는 무기한으로(indefinitely) 수면 상태에 놓일 수 있고, APU(2220)로부터의 인터럽트(interrupt)가 거리 쓰레드(2260)를 깨우기(wake up) 위해 대신 사용될 수 있다. 이렇게 하는 경우, CPU(2210)가 프레임 n에 대해 이전에 계산된 점수를 사용하여 탐색 동작을 수행하는 동안, APU(2220)는 프레임 n+1에 대한 거리 점수를 컴퓨터연산하기 위해 사용될 수 있다.
임의의 소정의 프레임에 대해, 탐색은 도 26에 예시된 바와 같은 거리 컴퓨터연산을 따를 수 있다. 특히, 프레임 (i+1)에 대한 거리 컴퓨터연산은 프레임 i에 대한 탐색이 행해지고 있는 동안 수행될 수 있다. 따라서, 도 26에 예시된 바와 같이, APU에 의해 수행되는 거리 컴퓨터연산은 CPU에 의해 수행되는 탐색 기능과 동시에 수행될 수 있다. 일 실시예에서, DCA 라이브러리에 대한 호출 시퀀스는 이러한 동작이 실행되도록 구성된다. 또 다른 실시예에서, 범용 DCA는 탐색 컴퓨터연산 및 거리 컴퓨터연산의 동시실행이 최대화되도록 구현된다. 일 실시예에서, 범용 DCA 라이브러리의 구현예는 APU 라이브러리에 의해 증명된 API를 사용한다.
도 27은 음향 프로세싱을 위한 방법(2700)의 실시예를 나타낸 도면이다. 방법(2700)의 단계들은 예를 들어, 도 25에 제시된 소프트웨어 스택(2500)과 함께, 도 22에 제시된 음향 프로세싱 시스템(2200)을 사용하여 수행될 수 있다.
단계(2702)에서는, 수신된 오디오 신호가 프레임들로 분할된다. 예를 들어, 도 22에서, 음성 인식 엔진(2214)은 수신된 오디오 신호를 예를 들어, 그 길이가 10-12ms인 프레임들로 분할할 수 있다.
단계(2704)에서, 탐색 쓰레드 및 거리 컴퓨터연산 쓰레드가 생성된다. 예를 들어, 도 22에서, 음성 인식 엔진(2214)은 탐색 쓰레드(2250) 및 거리 쓰레드(2260)를 생성할 수 있다.
단계(2706)에서, 거리 점수는 APU를 사용하여 컴퓨터연산된다. 예를 들어, 도 22에서, 거리 쓰레드(2260)의 지시 하에, APU(2220)의 세논 점수화 유닛(2230)은 프레임에 대응하는 특징 벡터와 가우시안 확률 분포 벡터 간의 거리 점수를 컴퓨터연산할 수 있다.
단계(2708)에서, 프레임에 대한 컴퓨터연산된 점수를 사용하여 탐색 동작이 수행된다. 예를 들어, 도 22에서, 탐색 쓰레드(2250)는 단계(2706)에서 컴퓨터연산된 거리 점수를 사용하여 어떤 사운드가 프레임 내에 포함되었는지의 결정을 위한 상이한 세논들의 탐색을 행할 수 있다.
단계(2710)에서, 프레임이 오디오 신호의 마지막 프레임이었는지 여부가 결정된다. 만약 그렇다면, 방법(2700)은 종료된다. 만약 그렇지 않다면, 방법(2700)은 단계(2712)로 진행한다.
단계(2712)에서, 단계(2708)의 탐색 동작과 동시에, 다음 프레임에 대한 거리 점수가 APU를 사용하여 컴퓨터연산된다. 예를 들어, 도 22에서, APU(2220)는 프레임 i에 대한 거리 점수를 사용하여 탐색 동작을 수행하는 탐색 쓰레드(2250)와 동시에 프레임 i+1에 대한 거리 점수를 컴퓨터연산하기 위해 사용될 수 있다.
7. 예시적인 컴퓨터 시스템( Exemplary Computer System )
본 발명의 다양한 실시형태들이 소프트웨어, 펌웨어, 하드웨어 혹은 이들의 조합으로 구현될 수 있다. 도 28은 예시적인 컴퓨터 시스템(2800)을 나타낸 것이고, 여기서 본 발명의 실시예들 혹은 그 일부분들은 컴퓨터-판독가능 코드로서 구현될 수 있다. 예를 들어, 도 9의 흐름도(900)에 의해 예시된 방법, 도 17의 흐름도(1700)에 의해 예시된 방법, 도 21의 흐름도(2100)에 의해 예시된 방법, 도 25에 예시된 소프트웨어 스택(2500), 그리고/또는 도 27의 흐름도(2700)에 의해 예시된 방법은 시스템(2800) 내에 구현될 수 있다. 본 발명의 다양한 실시예들이 본 예시적 컴퓨터 시스템(2800)에 관하여 설명된다. 이러한 설명을 판독한 이후, 본 발명의 관련 기술분야에서 숙련된 사람에게는 다른 컴퓨터 시스템들 및/또는 컴퓨터 아키텍처들을 사용하는 본 발명의 실시예들의 구현 방법이 명백하게 될 것이다.
본 발명의 다양한 실시예들의 시뮬레이션(simulation), 합성(synthesis) 및/또는 제조(manufacture)는 컴퓨터 판독가능 코드(여기에는 범용 프로그래밍 언어(예를 들어, C 혹은 C++), 하드웨어 기술 언어(Hardware Description Languages, HDL)(예를 들어, 베리로그 HDL(Verilog HDL), VHDL, 알테라 HDL(Altera HDL, AHDL)과 같은 것), 혹은 다른 이용가능한 프로그래밍 언어가 포함됨), 및/또는 스키메틱 캡처 툴(schematic capture tool)들(예를 들어, 회로 캡처 툴(circuit capture tool)들)의 사용을 통해 부분적으로 달성될 수 있음에 유의해야 한다. 이러한 컴퓨터 판독가능 코드는 임의의 알려진 컴퓨터-사용가능 매체(여기에는 반도체, 자기 디스크, 광학 디스크(예를 들어, CD-ROM, DVD-ROM)가 포함됨)에 배치될 수 있다. 이에 따라, 코드는 인터넷을 포함하는 통신 네트워크들을 통해 전송될 수 있다. 앞서 설명된 시스템들 및 기법들에 의해 달성되는 기능들 및/또는 제공되는 구조는 프로그램 코드로 구현되는 코어(예를 들어, APU 코어) 내에 나타내어질 수 있고 집적 회로들의 제조의 일부로서 하드웨어로 변환될 수 있음을 이해해야 한다.
컴퓨터 시스템(2800)은 프로세서(2804)와 같은 하나 이상의 프로세서들을 포함한다. 프로세서(2804)는 특수 목적 프로세서(예를 들어, 도 4의 APU) 혹은 범용 프로세서(예를 들어, 도 4의 CPU)일 수 있다. 프로세서(2804)는 통신 인프라스트럭처(communication infrastructure)(2806)(예를 들어, 버스 혹은 네트워크)에 연결된다.
컴퓨터 시스템(2800)은 또한 메인 메모리(main memory)(2808)를 포함하고, 바람직하게는 랜덤 액세스 메모리(RAM)를 포함하며, 또한 이차 메모리(secondary memory)(2810)를 포함할 수 있다. 이차 메모리(2810)는 예를 들어, 하드 디스크 드라이브(2812), 탈착가능 저장 드라이브(2814), 및/또는 메모리 스틱(memory stick)을 포함할 수 있다. 탈착가능 저장 드라이브(2814)는 플로피 디스크 드라이브, 자기 테이프 드라이브, 광학 디스크 드라이브, 플래시 메모리 등을 포함할 수 있다. 탈착가능 저장 드라이브(2814)는 잘-알려진 방식으로 탈착가능 저장 유닛(2818)으로부터 판독을 행하고 그리고/또는 탈착가능 저장 유닛(2818)에 기입을 행한다. 탈착가능 저장 유닛(2818)은, 플로피 디스크, 자기 테이프, 광학 디스크, 등을 포함할 수 있는바, 이들은 탈착가능 저장 드라이브(2814)에 의해 판독 및 기입된다. 본 발명의 관련 기술분야에서 숙련된 사람이 이해할 수 있는 바와 같이, 탈착가능 저장 유닛(2818)은 컴퓨터 소프트웨어 및/또는 데이터가 저장되는 컴퓨터-사용가능 저장 매체를 포함한다.
컴퓨터 시스템(2800)은 (선택적으로) 디스플레이 인터페이스(2802)(이것은 입력 디바이스 및 출력 디바이스, 예컨대 키보드, 마우스, 등과 같은 것을 포함할 수 있음)를 포함하는바, 여기서 디스플레이 인터페이스(2802)는 디스플레이 유닛(2830) 상에서의 디스플레이를 위해 통신 인프라스트럭처(2806)로부터의(혹은 도시되지 않았지만 프레임 버퍼로부터의) 그래픽들, 텍스트, 및 다른 데이터를 전달한다.
대안적 구현예들에서, 이차 메모리(2810)는 컴퓨터 프로그램들 혹은 다른 명령들이 컴퓨터 시스템(2800)으로 로드될 수 있도록 하기 위한 다른 유사한 디바이스들을 포함할 수 있다. 이러한 디바이스들은 예를 들어, 탈착가능 저장 유닛(2822) 및 인터페이스(2820)를 포함할 수 있다. 이러한 디바이스들의 예들은, 프로그램 카트리지(program cartridge) 및 카트리지 인터페이스(cartridge interface)(예를 들어, 비디오 게임 디바이스들에서 발견되는 것들과 같은 것), 탈착가능 메모리 칩(예를 들어, EPROM 혹은 PROM) 및 관련된 소켓(socket), 그리고 다른 탈착가능 저장 유닛들(2822) 및 (소프트웨어 및 데이터로 하여금 탈착가능 저장 유닛(2822)으로부터 컴퓨터 시스템(2800)으로 전달될 수 있게 하는) 인터페이스들(2820)을 포함할 수 있다.
컴퓨터 시스템(2800)은 또한 통신 인터페이스(2824)를 포함할 수 있다. 통신 인터페이스(2824)는 소프트웨어 및 데이터로 하여금 컴퓨터 시스템(2800)과 외부 디바이스들 간에 전달될 수 있게 한다. 통신 인터페이스(2824)는 모뎀, 네트워크 인터페이스(예를 들어, 이더넷 카드(Ethernet card)와 같은 것), 통신 포트, PCMCIA 슬롯 및 카드 등을 포함할 수 있다. 통신 인터페이스(2824)를 통해 전달되는 소프트웨어 및 데이터는 신호들의 형태이고, 이러한 신호들은 통신 인터페이스(2824)에 의해 수신될 수 있는 전자적 신호, 전자기적 신호, 광학적 신호 혹은 다른 신호일 수 있다. 이러한 신호들은 통신 경로(2826)를 통해 통신 인터페이스(2824)에 제공된다. 통신 경로(2826)는 신호들을 운반하고, 유선 혹은 케이블, 광섬유, 전화선, 셀룰러 전화 링크, RF 링크 혹은 다른 통신 채널들을 사용하여 구현될 수 있다.
본 명세서에서, 용어 "컴퓨터 프로그램 매체" 및 "컴퓨터-사용가능 매체"는 일반적으로, 탈착가능 저장 유닛(2818), 탈착가능 저장 유닛(2822), 그리고 하드 디스크 드라이브(2812) 내에 설치된 하드 디스크를 지칭하기 위해 사용된다. 컴퓨터 프로그램 매체 및 컴퓨터-사용가능 매체는 또한, 메모리 반도체들(예를 들어, DRAM들 등)일 수 있는, 메인 메모리(2808) 및 이차 메모리(2810)와 같은 메모리들을 지칭할 수 있다. 이러한 컴퓨터 프로그램 물들은 컴퓨터 시스템(2800)에 소프트웨어를 제공한다.
컴퓨터 프로그램들(이것은 또한, 컴퓨터 제어 로직으로 지칭됨)은 메인 메모리(2808) 및/또는 이차 메모리(2810)에 저장된다. 컴퓨터 프로그램들은 또한, 통신 인터페이스(2824)를 통해 수신될 수 있다. 이러한 컴퓨터 프로그램들은 그 실행시 컴퓨터 시스템(2800)으로 하여금 본 명세서에서 논의된 바와 같은 본 발명의 실시예들을 구현할 수 있게 한다. 특히, 컴퓨터 프로그램들은 그 실행시 프로세서(2804)로 하여금 본 발명의 실시예들의 프로세스들(예를 들어, 도 9의 흐름도(900) 및 도 17의 흐름도(1700)에 의해 예시된 방법에서의 단계들, 도 21의 흐름도(2100)에 의해 예시된 방법에서의 단계들, 도 27의 흐름도(2700)에 의해 예시된 방법에서의 단계들과 같은 것)을 구현할 수 있게 하고, 그리고/또는 도 25에 예시된 소프트웨어 스택(2500)에서의 기능들이 앞서 설명된 시스템(2800)에서 구현될 수 있다. 따라서, 이러한 컴퓨터 프로그램들은 컴퓨터 시스템(2800)의 제어기들을 나타낸다. 본 발명의 실시예들이 소프트웨어를 사용하여 구현되는 경우에 있어서, 소프트웨어는 컴퓨터 프로그램 물에 저장될 수 있고, 탈착가능 저장 드라이브(2814), 인터페이스(2820), 하드 드라이브(2812), 혹은 통신 인터페이스(2824)를 사용하여 컴퓨터 시스템(2800)으로 로드될 수 있다.
본 발명의 실시예들은 또한, 임의의 컴퓨터-사용가능 매체 상에 저장되는 소프트웨어를 포함하는 컴퓨터 프로그램 물들에 관한 것이다. 이러한 소프트웨어는 하나 이상의 데이터 프로세싱 디바이스에서 실행시 데이터 프로세싱 디바이스(들)로 하여금 본 명세서 설명되는 바와 같이 동작하도록 한다. 본 발명의 실시예들은 현재 알려진 혹은 장래에 알려지는 임의의 컴퓨터-사용가능 매체 혹은 컴퓨터-판독가능 매체를 사용한다. 컴퓨터-사용가능 매체들의 예들은, 일차 저장 디바이스(primary storage device)들(예를 들어, 임의 타입의 랜덤 액세스 메모리), 이차 저장 디바이스들(예를 들어, 하드 드라이브들, 플로피 디스크들, CD ROM들, ZIP 디스크들, 테이프들, 자기 저장 디바이스들, 광학 저장 디바이스들, MEMS, 나노기술 저장 디바이스들 등) 그리고 통신 매체들(예를 들어, 유선 및 무선 통신 네트워크들, 로컬 영역 네트워크(local area network)들, 와이드 영역 네트워크(wide area network)들, 인트라넷(intranet)들, 등)을 포함하지만 이러한 것으로만 한정되는 것은 아니다.
8. 결론( Conclusion )
개요 부분 및 요약 부분이 아닌 본 발명의 상세한 설명 부분이 본 특허청구범위를 해석하는데 사용되도록 의도된 것임을 이해해야 한다. 개요 부분 및 요약 부분은 본 발명자들에 의해 고려되는 그러한 본 발명의 하나 이상의 실시예들을 설명할 수 있는바, 이것이 모든 실시예들을 설명하는 것은 아니며, 따라서 본 발명 및 첨부되는 특허청구범위를 어떠한 방식으로든 한정하도록 의도되지 않았다.
본 발명의 실시예들은 특정 기능들의 구현 및 이들의 관계를 예시하는 기능적 빌딩 블록들의 도움을 받아 앞에서 설명되었다. 이러한 기능적 빌딩 블록들의 경계는 설명의 편의를 위해 본 명세서에서 임의로 정의되었다. 그 특정된 기능들 및 이들의 관계들이 적절하게 수행되는 한 다른 대안적 경계들이 정의될 수 있다.
특정 실시예들에 관한 앞서의 설명은 본 발명의 일반적인 특징을 충분히 개시하고 있으며, 이에 따라 다른 사람들은 본 발명의 전체적인 개념으로부터 벗어남이 없이, 그리고 과도한 실험 없이, 본 발명의 관련 기술분야의 기법 내의 지식을 적용함으로써 이러한 특정 실시예들을 용이하게 수정할 수 있고 그리고/또는 다양한 애플리케이션들에 맞게 조정할 수 있다. 따라서, 이러한 조정 및 수정은 본 명세서에 제시되는 가르침 및 안내를 기반으로 하여 그 개시되는 실시예들의 등가물들의 사상 및 범위 내에서 있도록 의도된다. 본 명세서에서의 어구 혹은 용어는 한정의 목적이 아닌 설명의 목적으로 제공되며, 이에 따라 본 명세서의 용어 혹은 어구는 본 명세서의 가르침 및 안내에 비추어 숙련된 기술자에 의해 해석되는 그러한 것임을 이해해야 한다.
본 발명의 범위 및 폭은 앞서 설명된 예시적 실시예들 중 어느 것에 의해서도 제한되어서는 안 되며, 오로지 다음의 특허청구범위 및 그 등가물에 따라서만 정의돼야 한다.

Claims (17)

  1. 특징 벡터(feature vector)와 가우시안 확률 분포 벡터(Gaussian probability distribution vector) 간의 1차원 점수(one-dimensional score)를 컴퓨터연산(computing)하기 위한 산술연산 로직 유닛(arithmetic logic unit)으로서,
    특징 벡터의 차원 및 상기 가우시안 확률 분포 벡터의 차원과 연관된 평균 값 및 분산 값에 기초하여 제1의 값을 컴퓨터연산하도록 구성된 컴퓨터연산 로직 유닛(computational logic unit);
    상기 분산 값에 기초하여 제2의 값을 출력하도록 구성된 참조 테이블 모듈(look up table module); 및
    상기 1차원 점수를 발생시키기 위해 상기 제1의 값 및 상기 제2의 값을 결합시키도록 구성된 결합 모듈을 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  2. 제1항에 있어서,
    상기 제1의 값 및 상기 제2의 값은 동일한 개수의 비트(bit)들을 사용하여 표현되는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  3. 제1항에 있어서,
    상기 컴퓨터연산 로직 유닛은, 상기 특징 벡터의 1차원 값과 상기 평균 값 간의 차이를 컴퓨터연산하도록 구성된 감산 모듈(subtraction module)을 포함하고, 그리고 상기 차이는 양(positive)의 값인, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  4. 제3항에 있어서,
    상기 컴퓨터연산 로직 유닛은, 상기 분산 값에 기초하여 제3의 값을 출력하도록 구성된 참조 테이블을 더 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  5. 제4항에 있어서,
    상기 컴퓨터연산 로직 유닛은, 상기 제3의 값과 상기 차이의 제곱의 곱(product)으로서 상기 제1의 값을 컴퓨터연산하도록 구성되는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  6. 제1항에 있어서,
    상기 컴퓨터연산 로직 유닛은, 상기 특징 벡터의 차원, 상기 분산 값, 및 상기 평균 값의 특정 값들에 대해 상기 제1의 값을 출력하도록 구성된 예외 처리 모듈(exception handling module)을 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  7. 제1항에 있어서,
    상기 컴퓨터연산 로직 유닛은, 크기조정 계수(scaling factor)에 의해 상기 특징 벡터의 차원을 크기조정(scaling)하도록 구성된 특징 벡터 변환 모듈(feature vector transformation module)을 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  8. 제1항에 있어서,
    상기 결합 모듈은:
    상기 제1의 값과 상기 제2의 값의 합(sum)을 컴퓨터연산하도록 구성된 합산기(adder); 및
    0 비트들이 상기 합의 소수점(decimal point)의 오른쪽에 존재하도록 상기 합을 시프트(shift)시키도록 구성된 시프트 모듈(shift module)을 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  9. 제1항에 있어서,
    상기 참조 테이블 모듈은:
    lutij = (ln(varij) - C) × M1
    에 의해 주어지는 값 lutij를 출력하도록 구성된 참조 테이블을 포함하고,
    varij는 j번째 가우시안 확률 분포 벡터의 i번째 차원의 분산 값이고;
    M1은 크기조정 계수이고; 그리고
    C는 상수인, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  10. 제1항에 있어서,
    상기 제1의 값은:
    ((xiij) × (1/varij))2 × M2
    에 의해 주어지고,
    xi는 i번째 특징 벡터 차원의 값이고,
    μij는 j번째 가우시안 확률 분포 벡터의 i번째 차원의 평균 값이고;
    varij는 j번째 가우시안 확률 분포 벡터의 i번째 차원의 분산 값이고; 그리고
    M2는 가중치부여 계수(weighting factor)인, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하기 위한 산술연산 로직 유닛.
  11. 산술연산 로직 유닛에 의해, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 거리 점수를 컴퓨터연산하는 방법으로서,
    특징 벡터의 차원 및 상기 가우시안 확률 분포 벡터의 차원과 연관된 평균 값 및 분산 값에 기초하여 제1의 값을 컴퓨터연산하는 단계;
    참조 테이블 모듈로부터 상기 분산 값에 기초하여 제2의 값을 검색(retrieving)하는 단계; 및
    1차원 점수를 발생시키기 위해 상기 제1의 값과 상기 제2의 값을 결합시키는 단계를 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하는 방법.
  12. 제11항에 있어서,
    상기 컴퓨터연산하는 단계는: 상기 특징 벡터의 차원과 상기 평균 값 간의 차이를 컴퓨터연산하는 단계를 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하는 방법.
  13. 제12항에 있어서,
    상기 컴퓨터연산하는 단계는, 상기 분산 값에 기초하여 제 2 참조 테이블로부터 제3의 값을 검색하는 단계를 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하는 방법.
  14. 제13항에 있어서,
    상기 컴퓨터연산하는 단계는, 상기 제3의 값과 상기 차이의 제곱의 곱으로서 상기 제1의 값을 컴퓨터연산하는 단계를 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하는 방법.
  15. 제11항에 있어서,
    상기 컴퓨터연산하는 단계 전에, 크기조정 계수를 사용하여 상기 특징 벡터의 차원에 대한 특징 벡터 모듈의 값을 변환시키는 단계를 더 포함하는, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하는 방법.
  16. 제11항에 있어서,
    상기 참조 테이블 모듈은,
    lutij = (ln(varij) - C) × M1
    에 의해 주어지는 값 lutij를 출력하도록 구성된 참조 테이블을 포함하고,
    varij는 j번째 가우시안 확률 분포 벡터의 i번째 차원의 분산 값이고;
    M1은 크기조정 계수이고; 그리고
    C는 상수인, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하는 방법.
  17. 제11항에 있어서,
    상기 제1의 값은,
    ((xiij) × (1/varij))2 × M2
    에 의해 주어지고,
    xi는 i번째 특징 벡터 차원의 값이고,
    μij는 j번째 가우시안 확률 분포 벡터의 i번째 차원의 평균 값이고;
    varij는 j번째 가우시안 확률 분포 벡터의 i번째 차원의 분산 값이고; 그리고
    M2는 가중치부여 계수인, 특징 벡터와 가우시안 확률 분포 벡터 간의 1차원 점수를 컴퓨터연산하는 방법.
KR1020147020295A 2011-12-19 2012-12-18 산술연산 로직 유닛 아키텍처 KR102048893B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201161577595P 2011-12-19 2011-12-19
US61/577,595 2011-12-19
US201261589113P 2012-01-20 2012-01-20
US61/589,113 2012-01-20
US13/490,129 2012-06-06
US13/490,129 US8924453B2 (en) 2011-12-19 2012-06-06 Arithmetic logic unit architecture
PCT/US2012/070332 WO2013096303A1 (en) 2011-12-19 2012-12-18 Arithmetic logic unit architecture

Publications (2)

Publication Number Publication Date
KR20140107537A KR20140107537A (ko) 2014-09-04
KR102048893B1 true KR102048893B1 (ko) 2019-11-26

Family

ID=48611061

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020147020293A KR20140106723A (ko) 2011-12-19 2012-12-14 음향 프로세싱 유닛
KR1020147020295A KR102048893B1 (ko) 2011-12-19 2012-12-18 산술연산 로직 유닛 아키텍처
KR1020147020294A KR20140106724A (ko) 2011-12-19 2012-12-18 음향 프로세싱 유닛 인터페이스

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020147020293A KR20140106723A (ko) 2011-12-19 2012-12-14 음향 프로세싱 유닛

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147020294A KR20140106724A (ko) 2011-12-19 2012-12-18 음향 프로세싱 유닛 인터페이스

Country Status (6)

Country Link
US (3) US8924453B2 (ko)
EP (3) EP2795614A4 (ko)
JP (3) JP2015505993A (ko)
KR (3) KR20140106723A (ko)
CN (3) CN104126200A (ko)
WO (3) WO2013096124A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9514739B2 (en) * 2012-06-06 2016-12-06 Cypress Semiconductor Corporation Phoneme score accelerator
US10007724B2 (en) * 2012-06-29 2018-06-26 International Business Machines Corporation Creating, rendering and interacting with a multi-faceted audio cloud
DE102013206292A1 (de) * 2013-04-10 2014-10-16 Robert Bosch Gmbh Verfahren und Vorrichtung zum Erstellen eines datenbasierten Funktionsmodells
DE102013206320A1 (de) * 2013-04-10 2014-10-16 Robert Bosch Gmbh Verfahren und Steuergerät zur Berechnung eines datenbasierten Funktionsmodells
JP6052814B2 (ja) * 2014-09-24 2016-12-27 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 音声認識モデルの構築方法、音声認識方法、コンピュータ・システム、音声認識装置、プログラムおよび記録媒体
KR102299330B1 (ko) * 2014-11-26 2021-09-08 삼성전자주식회사 음성 인식 방법 및 그 전자 장치
CN105869641A (zh) * 2015-01-22 2016-08-17 佳能株式会社 语音识别装置及语音识别方法
US9721569B2 (en) * 2015-05-27 2017-08-01 Intel Corporation Gaussian mixture model accelerator with direct memory access engines corresponding to individual data streams
US10587464B2 (en) * 2017-07-21 2020-03-10 Accenture Global Solutions Limited Automatic provisioning of a software development environment
US11043218B1 (en) * 2019-06-26 2021-06-22 Amazon Technologies, Inc. Wakeword and acoustic event detection
WO2021033889A1 (en) 2019-08-20 2021-02-25 Samsung Electronics Co., Ltd. Electronic device and method for controlling the electronic device
CN112307986B (zh) * 2020-11-03 2022-02-08 华北电力大学 一种利用高斯梯度的负荷开关事件检测方法和系统

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01298400A (ja) * 1988-05-26 1989-12-01 Ricoh Co Ltd 連続音声認識装置
JPH04232998A (ja) * 1990-12-27 1992-08-21 Nec Corp 音声認識装置
CN1112269A (zh) * 1994-05-20 1995-11-22 北京超凡电子科技有限公司 基于汉语发音特点的hmm语音识别技术
US5604839A (en) 1994-07-29 1997-02-18 Microsoft Corporation Method and system for improving speech recognition through front-end normalization of feature vectors
US5864810A (en) * 1995-01-20 1999-01-26 Sri International Method and apparatus for speech recognition adapted to an individual speaker
US5710866A (en) * 1995-05-26 1998-01-20 Microsoft Corporation System and method for speech recognition using dynamically adjusted confidence measure
US5937384A (en) 1996-05-01 1999-08-10 Microsoft Corporation Method and system for speech recognition using continuous density hidden Markov models
CN1061451C (zh) * 1996-09-26 2001-01-31 财团法人工业技术研究院 隐藏式马可夫模型的中文词音识别方法
US6542866B1 (en) * 1999-09-22 2003-04-01 Microsoft Corporation Speech recognition method and apparatus utilizing multiple feature streams
US7295978B1 (en) * 2000-09-05 2007-11-13 Verizon Corporate Services Group Inc. Systems and methods for using one-dimensional gaussian distributions to model speech
JP3932789B2 (ja) * 2000-09-20 2007-06-20 セイコーエプソン株式会社 Hmmの出力確率計算方法および音声認識装置
US7454341B1 (en) 2000-09-30 2008-11-18 Intel Corporation Method, apparatus, and system for building a compact model for large vocabulary continuous speech recognition (LVCSR) system
CA2359544A1 (en) * 2001-10-22 2003-04-22 Dspfactory Ltd. Low-resource real-time speech recognition system using an oversampled filterbank
US6990447B2 (en) * 2001-11-15 2006-01-24 Microsoft Corportion Method and apparatus for denoising and deverberation using variational inference and strong speech models
US20030097263A1 (en) * 2001-11-16 2003-05-22 Lee Hang Shun Decision tree based speech recognition
US7006972B2 (en) * 2002-03-20 2006-02-28 Microsoft Corporation Generating a task-adapted acoustic model from one or more different corpora
US7031918B2 (en) * 2002-03-20 2006-04-18 Microsoft Corporation Generating a task-adapted acoustic model from one or more supervised and/or unsupervised corpora
US7571097B2 (en) * 2003-03-13 2009-08-04 Microsoft Corporation Method for training of subspace coded gaussian models
US7454336B2 (en) * 2003-06-20 2008-11-18 Microsoft Corporation Variational inference and learning for segmental switching state space models of hidden speech dynamics
US7480615B2 (en) * 2004-01-20 2009-01-20 Microsoft Corporation Method of speech recognition using multimodal variational inference with switching state space models
US7231019B2 (en) 2004-02-12 2007-06-12 Microsoft Corporation Automatic identification of telephone callers based on voice characteristics
US20060058999A1 (en) * 2004-09-10 2006-03-16 Simon Barker Voice model adaptation
GB0420464D0 (en) 2004-09-14 2004-10-20 Zentian Ltd A speech recognition circuit and method
US7930180B2 (en) * 2005-01-17 2011-04-19 Nec Corporation Speech recognition system, method and program that generates a recognition result in parallel with a distance value
US7693713B2 (en) * 2005-06-17 2010-04-06 Microsoft Corporation Speech models generated using competitive training, asymmetric training, and data boosting
KR100664960B1 (ko) * 2005-10-06 2007-01-04 삼성전자주식회사 음성 인식 장치 및 방법
KR100764247B1 (ko) 2005-12-28 2007-10-08 고려대학교 산학협력단 2단계 탐색을 이용한 음성인식 장치 및 그 방법
EP1840822A1 (en) * 2006-03-29 2007-10-03 Sony Deutschland Gmbh Method for deriving noise statistical properties of a signal
US7774202B2 (en) 2006-06-12 2010-08-10 Lockheed Martin Corporation Speech activated control system and related methods
US7844456B2 (en) * 2007-03-09 2010-11-30 Microsoft Corporation Grammar confusability metric for speech recognition
KR100974871B1 (ko) * 2008-06-24 2010-08-11 연세대학교 산학협력단 특징 벡터 선택 방법 및 장치, 그리고 이를 이용한 음악장르 분류 방법 및 장치
US8818802B2 (en) 2008-10-10 2014-08-26 Spansion Llc Real-time data pattern analysis system and method of operation thereof
DE112009002426T5 (de) 2008-10-10 2011-09-29 Richard M. Fastow Echtzeit-Datenmuster-Analysesystem und Verfahren zu seinem Betrieb
JP5609182B2 (ja) * 2010-03-16 2014-10-22 日本電気株式会社 音声認識装置、音声認識方法および音声認識プログラム
US9031844B2 (en) * 2010-09-21 2015-05-12 Microsoft Technology Licensing, Llc Full-sequence training of deep structures for speech recognition

Also Published As

Publication number Publication date
JP2015505993A (ja) 2015-02-26
KR20140107537A (ko) 2014-09-04
WO2013096303A1 (en) 2013-06-27
CN104137178B (zh) 2018-01-19
JP2015501012A (ja) 2015-01-08
US20130158996A1 (en) 2013-06-20
CN104126165A (zh) 2014-10-29
US20130159371A1 (en) 2013-06-20
EP2795614A4 (en) 2015-07-22
EP2795614A1 (en) 2014-10-29
WO2013096301A1 (en) 2013-06-27
WO2013096124A1 (en) 2013-06-27
JP2015501011A (ja) 2015-01-08
US20130158997A1 (en) 2013-06-20
EP2795615A1 (en) 2014-10-29
KR20140106723A (ko) 2014-09-03
KR20140106724A (ko) 2014-09-03
EP2795461A4 (en) 2015-08-12
CN104137178A (zh) 2014-11-05
EP2795461A1 (en) 2014-10-29
JP6138148B2 (ja) 2017-05-31
CN104126200A (zh) 2014-10-29
EP2795615A4 (en) 2016-01-13
US8924453B2 (en) 2014-12-30
US9785613B2 (en) 2017-10-10

Similar Documents

Publication Publication Date Title
KR102048893B1 (ko) 산술연산 로직 유닛 아키텍처
US10949736B2 (en) Flexible neural network accelerator and methods therefor
US8818802B2 (en) Real-time data pattern analysis system and method of operation thereof
US9653070B2 (en) Flexible architecture for acoustic signal processing engine
Lin et al. A 1000-word vocabulary, speaker-independent, continuous live-mode speech recognizer implemented in a single FPGA
US9514739B2 (en) Phoneme score accelerator
US9230548B2 (en) Hybrid hashing scheme for active HMMS
Lin et al. A multi-FPGA 10x-real-time high-speed search engine for a 5000-word vocabulary speech recognizer
US9224384B2 (en) Histogram based pre-pruning scheme for active HMMS
Price Energy-scalable speech recognition circuits
Bapat et al. Acoustic coprocessor for hmm based embedded speech recognition systems
Chun et al. Isis: An accelerator for sphinx speech recognition
You et al. Memory access optimized VLSI for 5000-word continuous speech recognition
You et al. Flexible and expandable speech recognition hardware with weighted finite state transducers
Stogiannos et al. A configurable logic based architecture for real-time continuous speech recognition using hidden Markov models
Rajput et al. Speech in Mobile and Pervasive Environments
Noguchi et al. VLSI architecture of GMM processing and Viterbi decoder for 60,000-word real-time continuous speech recognition
Ma et al. Novel CI-backoff scheme for real-time embedded speech recognition
WO2014074497A1 (en) Senone scoring for multiple input streams
Bapat A generic, scalable architecture for a large acoustic model and large vocabulary speech recognition accelerator

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant