WO2020179193A1 - 情報処理装置及び情報処理方法 - Google Patents

情報処理装置及び情報処理方法 Download PDF

Info

Publication number
WO2020179193A1
WO2020179193A1 PCT/JP2019/049771 JP2019049771W WO2020179193A1 WO 2020179193 A1 WO2020179193 A1 WO 2020179193A1 JP 2019049771 W JP2019049771 W JP 2019049771W WO 2020179193 A1 WO2020179193 A1 WO 2020179193A1
Authority
WO
WIPO (PCT)
Prior art keywords
arc
storage device
wfst
graph
model
Prior art date
Application number
PCT/JP2019/049771
Other languages
English (en)
French (fr)
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 ソニー株式会社
Priority to JP2021503424A priority Critical patent/JPWO2020179193A1/ja
Priority to US17/433,389 priority patent/US20220147570A1/en
Publication of WO2020179193A1 publication Critical patent/WO2020179193A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • 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
    • G10L15/32Multiple recognisers used in sequence or in parallel; Score combination systems therefor, e.g. voting systems

Definitions

  • the technology disclosed in this specification (hereinafter referred to as “the present disclosure”) relates to an information processing apparatus and an information processing method for performing a graph search process.
  • WFST Weighted Finite State Transducer
  • the WFST model is made up of text data and corpus (language material that is a large-scale database of texts and utterances) collected for learning.
  • a WFST model search process (hereinafter, also referred to as “WFST search” in the present specification) is performed in order to search a text character string that is likely to be input speech.
  • WFST search is a kind of graph search processing. In order to perform the search at high speed, it is common to load all the WFSTs into the main memory at the time of execution (the main memory referred to here corresponds to the local memory (or main memory) of the CPU. Also simply called “memory"). However, the WFST corresponding to a large vocabulary has a size of several tens GB to several hundreds GB, and the WFTS search cannot be operated unless the system has a large memory capacity. If WFST is placed in an auxiliary storage device (hereinafter also simply referred to as “disk”) such as HDD (Hard Disc Drive) or SSD (Solid State Drive) instead of memory, it is possible to reduce the memory usage. However, since the disk has lower access speed and throughput performance than the memory, the time required for the WFTS search becomes significantly long.
  • auxiliary storage device hereinafter also simply referred to as “disk”
  • HDD Hard Disc Drive
  • SSD Solid State Drive
  • Patent Document 1 Japanese Unexamined Patent Application Publication No. 2015-529350 Japanese Patent Publication No. 2017-527844
  • An object of the technique according to the present disclosure is to provide an information processing apparatus and an information processing method for performing graph search processing of a huge size.
  • the first aspect of the technology according to the present disclosure is It is provided with a calculation unit, a first storage device, and a second storage device.
  • the graph information is divided into first graph information and second graph information, Arranging the first graph information in the first storage device, Arranging the second graph information in the second storage device, An information processing device, wherein the arithmetic unit executes a graph search process using the first graph information arranged in the first storage device and the second graph information arranged in the second storage device. Is.
  • the graph information is a WFST model that expresses an acoustic model, a pronunciation dictionary, and a language model in speech recognition. Then, the language model is divided into two, large and small, and a small WFST model in which a smaller language model considering the connection of words of a first number or less is combined with an acoustic model and a pronunciation dictionary is used as the first graph information,
  • the second graph information is a large WFST model composed of a language model that considers the connection of an arbitrary number of words that is larger than the first number.
  • the calculation unit When the calculation unit needs to refer to the second graph information while executing the search process using the first graph information, the calculation unit obtains the necessary part of the second graph information. Copy from the second storage device to the first storage device to continue the search process.
  • the arithmetic unit includes a first arithmetic unit including a GPU (Graphics Processing Unit) or other many-core arithmetic unit and a second arithmetic unit including a CPU (Central Processing Unit), and the first storage device includes the above-mentioned first memory unit. It is a memory in the GPU, and the second storage device is a local memory of the CPU. Then, the first arithmetic unit transitions the token in the small WFST model, but when a word is output from the transitioned arc and it is necessary to perform the state transition of the token in the large WFST model, the processing is performed. The first computing unit performs all the search processing while copying necessary data from the second storage device to the first storage device in a copy.
  • a GPU Graphics Processing Unit
  • CPU Central Processing Unit
  • the arithmetic unit is composed of a CPU or a GPU
  • the first storage device is a local memory of the arithmetic unit
  • the second storage device is an auxiliary storage device. Then, the arithmetic unit transitions the token in the small WFST model, but when a word is output from the transitioned arc and it is necessary to perform the state transition of the token in the large WFST model, the data necessary for the processing is generated. Is carried out while copying from the second storage device to the first storage device.
  • the larger WFST model is composed of an arc array in which arcs are sorted by the state ID of the source state and the input label, and the first storage device stores the data for access on the arc array of the arcs in each state. It includes an arc index for storing the start position and an input label array for storing the input labels corresponding to the arcs on the arc array in the same array as the arc array. Then, the arithmetic unit specifies the start position on the arc array of the state ID of the source state of the target arc by the arc index, and obtains the input label of the target arc from the element of the start position on the input label array. By searching, the position where the target arc is stored on the arc array is specified, and the data of the target arc is acquired from the arc array of the second storage device.
  • a second aspect of the technology according to the present disclosure is an information processing apparatus including a calculation unit, a first storage device, and a second storage device.
  • an information processing apparatus and an information processing method for dividing a huge size of graph information into two and arranging them in two storage areas respectively and performing the graph search at high speed with less memory are provided. be able to.
  • FIG. 1 is a diagram showing a configuration example of a voice recognition system 100.
  • FIG. 2 is a diagram showing an example of dividing the WFST model.
  • FIG. 3 is a diagram showing a schematic configuration example of the voice recognition system 300 (first embodiment).
  • FIG. 4 is a diagram showing a specific configuration example of the voice recognition system 300.
  • FIG. 5 is a flowchart showing the overall processing procedure of voice recognition executed by the voice recognition system 300.
  • FIG. 6 is a flowchart showing a detailed processing procedure of the graph search processing.
  • FIG. 7 is a diagram for explaining a method of sending necessary arc information from the GPU 320 to the CPU 310 and causing the CPU 310 side to copy to the device memory 321.
  • FIG. 8 is a diagram showing a mechanism for caching an arc of a large graph in the device memory 321 on the GPU 320 side.
  • FIG. 9 is a diagram showing a configuration example of a speech recognition system 300 including a large graph cache.
  • FIG. 10 is a flowchart showing the overall processing procedure of voice recognition executed by the voice recognition system 300 shown in FIG.
  • FIG. 11 is a flowchart showing a detailed processing procedure of the graph search processing.
  • FIG. 12 is a diagram showing a functional configuration example of the agent system 1200.
  • FIG. 13 is a diagram showing how the arc extends from the state.
  • FIG. 14 is a diagram showing the input/output relationship of the language model WFST.
  • FIG. 15 is a diagram showing a schematic configuration example of a voice recognition system 1500 (second embodiment).
  • FIG. 16 is a diagram showing a configuration example of a voice recognition system 1500 in which data for searching for an arc is arranged in a memory.
  • FIG. 17 is a diagram showing a configuration example of WFST (large) access data.
  • FIG. 18 is a diagram showing another configuration example of the WFST (large) access data.
  • FIG. 19 is a diagram showing a specific functional configuration example of the voice recognition system 1500.
  • FIG. 20 is a flowchart showing the overall processing procedure of voice recognition executed by the voice recognition system 1500.
  • FIG. 21 is a flowchart showing an example of a detailed processing procedure of the WFST search processing.
  • FIG. 22 is a flowchart showing another example of the detailed processing procedure of the WFST search processing.
  • FIG. 23 is a flowchart showing a processing procedure for identifying a page in which a target arc is arranged on the arc array.
  • FIG. 24 is a diagram showing a specific functional configuration example of the voice recognition system 1500 having the arc pre-reading function.
  • FIG. 25 is a flowchart showing a detailed processing procedure of the WFST search process in the voice recognition system 1500 shown in FIG. 24.
  • FIG. 26 is a flowchart showing a detailed processing procedure of the WFST search process in the voice recognition system 1500 shown in FIG. 24.
  • FIG. 27 is a diagram showing a specific functional configuration example of the voice recognition system 2700.
  • FIG. 28 is a flowchart showing an overall processing procedure of voice recognition executed by the voice recognition system 2700.
  • FIG. 1 shows a schematic functional configuration example of the speech recognition system 100.
  • the illustrated voice recognition system 100 includes a feature amount extraction unit 101, a DNN (Deep Neural Network) calculation unit 102, and a WFST search unit 103. It should be noted that not all speech recognition systems are configured as in FIG. 1 and other configurations may exist.
  • DNN Deep Neural Network
  • the feature amount extraction unit 101 is input with voice data in units of 10 milliseconds, for example, from a voice input unit such as a microphone (not shown).
  • the feature amount extraction unit 101 calculates the feature amount of voice by applying a Fourier transform to the input voice data or using a mel filter bank or the like.
  • the required processing time of the feature amount extraction unit 101 is, for example, less than 1 millisecond.
  • the DNN calculation unit 102 uses a DNN model that has been pre-learned for the feature amount extracted by the feature amount extraction unit 101, and scores (likelihoods) corresponding to each state of the HMM (Hidden Markov Model). ) Is calculated.
  • the processing time required by the DNN calculation unit 102 is, for example, about 1 millisecond.
  • the WFST search unit 103 uses a WFST model that has been pre-learned for the HMM state score calculated by the DNN calculation unit 103, calculates a likely recognition result character string, and outputs the text of the recognition result.
  • the processing time required for the WFST search unit 103 is, for example, about 1 to 30 milliseconds.
  • the WFST is a finite state machine in which information of an input symbol, an output symbol, and a weight (transition probability) is attached to an arc.
  • a speech recognition system is composed of an acoustic model showing phonemes and acoustic features, a pronunciation dictionary showing pronunciation of individual words, and a language model giving grammatical rules and a probability of chaining words.
  • the state transition of the HMM used as the acoustic model, the pronunciation dictionary, and the N-gram model used as the language model can be expressed by the WFST model, respectively.
  • the input symbols are HMM states, and the output symbols are phonemes.
  • the input symbols are phonemes and the output symbols are words.
  • the language model WFST has both input and output symbols. Has become a word.
  • the language model is used to express transition probabilities of connection between words.
  • the WFST is configured as, for example, a network in which a phoneme string is embedded in a word and an HMM is embedded in a phoneme. Further, in the WFST after combination, the input symbol is in the HMM state and the output symbol is the word. In this way, the speech recognition process is reduced to the network search problem.
  • the language model increases in size with the power of the vocabulary.
  • the number of states (nodes) and arcs (edges) of WFST increase to several billion, respectively, and the size becomes several tens of GB (for example, the number of states is 1.2 billion, arc).
  • the WFST search unit 103 searches for a path (optimal state transition process) that best suits the input voice signal in the WFST, that is, the network in which each WFST of the acoustic model, the pronunciation dictionary, and the language model is synthesized, and the input voice. It will be decoded into word strings that are acoustically and linguistically matched to the signal.
  • the WFST search unit 103 is required to search for an optimum word string at high speed.
  • WFST search procedure The WFST search procedure is, for example, as follows.
  • the WFST may be divided into two by dividing a large language model into two large and small.
  • the language model considering the connection of two words is made smaller, and the language model considering the connection of four words is made larger and divided into two.
  • a combination of an acoustic model, a pronunciation dictionary, and a small language model is a small WFST model
  • a large language model is a large WFST model (or a language model WFST).
  • a small WFST model is about several GB
  • a large WFST model is about several tens GB.
  • a token is transitioned in a small WFST model, and only when a word is output from the transitioned arc, the state transition of the token in a large WFST model is performed. Since the large WFST model has only the role of considering the connection of words, the transition occurs only when the words are output. By multiplying the tokens by the transition probabilities of the large WFST model, it is possible to consider the probability of long word connections that do not exist in the small WFST model.
  • N-gram is often used as a language model.
  • the N-gram is a model in which the probability that words are connected to each other is represented by N-1 multiple Markov processes. If the number of vocabulary of V, N number of connections of words are present as V N, it is needed V N pieces of arc which represent at WFST. Since it is unrealistic to create such a WFST, we do not actually model all the connections.
  • the language model WFST learns from a large amount of sentences, but, for example, the connection of words whose appearance frequency is a certain number or less is removed from the model. If a connection to an unmodeled word occurs during the search, the token will transition to a state called backoff. Transitioning to the backoff state is equivalent to considering lower order connections.
  • the input label of the arc of the language model WFST is a word.
  • an arc having a word input from the current state (a word output by a small WFST in the case of on-the-fly synthesis) is followed. If there is no arc with the input word, the talk transitions to the backoff state, from which it searches for the arc with the similarly input word. That is, when transitioning to the backoff state, a plurality of arcs are transited by a single input.
  • FIG. 13 shows that the arc for each input label extends from the state “x”.
  • arcs corresponding to the words “a”, “b”, “c”, and “y” are extended as input labels from the state “x”. For example, when the word “y" is input in the state "x", the arc corresponding to the input label "y" is searched.
  • FIG. 14 shows the input/output relationship of the language model WFST.
  • the input of the language model WFST is a state ID and a label, and its output is an arc.
  • the arc is composed of the input label, the output label, the weight, and the state ID of the transition destination.
  • the technology according to the present disclosure divides a huge WFST into two parts and arranges each in two storage areas to realize a WFTS search at high speed with less memory.
  • a first embodiment that realizes on-the-fly combining using a many-core arithmetic unit such as a GPU and a second embodiment that realizes on-the-fly combining by arranging WFST data divided into two in a memory and a disk will be described.
  • a third embodiment a specific example to which the large-scale graph search technique according to the present disclosure is applied will be described.
  • a many-core arithmetic unit such as GPU may be used (described above).
  • manycore arithmetic units such as GPUs generally have a limited memory capacity.
  • the main memory that can be accessed from the CPU (Central Processing Unit) can be expanded relatively easily to several hundred GB (gigabytes).
  • the memory mounted on the GPU is at most several GB to a dozen GB. Due to the exhaustion of the device memory, it is difficult to perform the search processing of the large vocabulary speech recognition in which the size of the WFST model is several tens GB or more on a many-core arithmetic unit such as GPU.
  • a data processing method for performing a WFST search by on-the-fly synthesis (described above) in a hybrid environment in which both a CPU and a GPU are used has been proposed (see Patent Document 1).
  • the operation using the smaller WFST model is performed by the GPU, and the operation using the larger WFST model is performed by the CPU.
  • the smaller WFST model is expanded on the memory of the GPU, by arranging the large WFST model that consumes a large amount of memory in the main memory, there is a problem that the device memory is insufficient. Can be resolved.
  • the state transition of the smaller WFST model is performed on the GPU, and the likelihood correction using the larger WFST model is performed on the CPU.
  • processing is performed to acquire a specific arc extending from a certain state.
  • Table 1 illustrates the data structure of the larger WFST model.
  • the position of the corresponding Arc is searched for and referred to (see FIG. 13).
  • the state transitions to a state called backoff, and the corresponding arc is searched for again from the backoff state.
  • a binary search or a hash map is used for searching the position of the arc.
  • the amount of calculation using the larger WFST model is large. Therefore, if the state transition of the smaller WFST model is executed on the GPU and the likelihood correction using the larger WFST model is executed on the CPU, the calculation on the CPU side becomes a bottleneck, and the GPU is introduced. However, there is concern that the performance (processing speed and throughput) will not be improved sufficiently.
  • the GPU executes the search processing of a large-scale graph for speech recognition.
  • the large-scale graph mentioned here is the larger language model obtained by dividing the language model into two, that is, the language model WFST.
  • the large scale means a size of, for example, several tens GB or more, which cannot be expanded in the device memory.
  • the application range of the technology according to the present disclosure is not limited to the graph search processing of the GPU and the voice recognition.
  • the GPU can be replaced with a many-core arithmetic unit having a limited memory capacity (having a memory capacity smaller than the graph size), and the graph search process of speech recognition can be replaced with a general graph search process. ..
  • FIG. 3 schematically shows a configuration example of a voice recognition system 300 to which the technique proposed as the first embodiment is applied.
  • the illustrated voice recognition system 300 includes a hybrid environment using the CPU 310 and the GPU 320.
  • the CPU 310 includes a main memory 311 having a relatively large capacity (for example, about several tens of GB) as a local memory.
  • the GPU 320 is composed of a many-core arithmetic unit and can execute graph search processing such as WFST at high speed by parallel processing of each core.
  • the GPU 320 also includes a local memory (here, referred to as “device memory”) 321, but its capacity is smaller than that of the main memory, for example, about several GB.
  • main memory 311 can also be accessed from the GPU 320.
  • the CPU 310 executes the copying of the data on the main memory 311 to the device memory 321.
  • the GPU 320 may access the main memory 311 at high speed by using a DMA (Direct Memory Access) function.
  • DMA Direct Memory Access
  • the voice recognition system 300 divides the WFST model into two large and small ones, and performs on-the-fly synthesis to synthesize at the time of executing voice recognition.
  • a language model having a large size is divided into large and small.
  • the smaller language model considering the connection between the two words is combined with the acoustic model and the pronunciation dictionary to create the smaller WFST model.
  • the smaller WFST model (small graph) is arranged in the device memory 321 having a relatively small capacity.
  • the language model considering the connection of four words is the larger WFST model.
  • the larger WFST model (large graph) has a size of about several tens GB and is arranged in the main memory 311.
  • the state transition of the smaller WFST model is performed on the GPU, and the likelihood correction using the larger WFST model is performed on the CPU (described above).
  • the WFST model search process is not performed on the CPU 310, but is basically performed only on the GPU 320.
  • the GPU 320 basically transitions tokens in a small WFST model, but when a word is output from the transitioned arc and it is necessary to perform state transition in a large WFST model, the CPU 310 does not perform search processing, While copying only the data (specifically, the input label, the output label, the weight, and the ID of the transition destination state of the arc) of the large WFST model from the main memory 311 to the device memory 321, All search processing is performed on the GPU 320. By doing so, basically, the processes performed on the CPU 310 are only data transfer to the GPU 320 and control of the GPU 320. Therefore, the calculation resources of the GPU 320 can be effectively used, and the load on the CPU 310 side can be greatly reduced.
  • (Advantage 1) Can be processed faster: By using an arithmetic unit having a large number of cores such as a GPU, it is possible to process a plurality of hypotheses (tokens) in parallel and reduce the processing time for search. Especially in voice recognition services such as voice agents, it is important to process quickly in order to respond quickly to the user.
  • FIG. 4 shows a more specific functional configuration example of the voice recognition system 300.
  • the voice recognition system 300 includes a hybrid environment using the CPU 310 and the GPU 320.
  • the CPU 310 includes a main memory 311 having a relatively large capacity (for example, about several tens GB) as a local memory.
  • the GPU 320 includes a small capacity device memory 321.
  • a signal processing unit 401, a feature amount extraction unit 402, and a recognition result output processing unit 405 are arranged in the CPU 310.
  • the GPU 320 includes an HMM score calculation unit 403 and a graph search unit 404. These functional modules indicated by reference numerals 401 to 405 may actually be software programs executed by the CPU 310 or GPU 320.
  • the voice input unit 441 is composed of a microphone or the like and picks up a voice signal.
  • the signal processing unit 401 performs predetermined digital processing on the audio signal received by the audio input unit 441.
  • the feature amount extraction unit 402 extracts the feature amount of voice by using a known technique such as Fourier transform or mel filter bank.
  • a known technique such as Fourier transform or mel filter bank.
  • the feature amount extraction unit 402 is arranged on the CPU 310 side, but it may be executed by the GPU 320.
  • the HMM score calculation unit 403 receives the information on the feature amount of the voice and calculates the score of each HMM state using the acoustic model 431.
  • Gaussian Mixture Model (GMM) or DNN is used for the HMM.
  • the acoustic model 431 is arranged in the GPU memory (device memory) 321 as shown in FIG.
  • the processing of the HMM score calculation may be performed on the CPU 310 side, and in that case, the acoustic model 431 is arranged on the main memory 321.
  • the graph search unit 404 receives the HMM state score and uses the small graph (smaller WFST model) 432 on the GPU memory (device memory) 321 and the large graph (larger WFST model) 421 on the main memory 311. Search processing by on-the-fly synthesis is performed.
  • Midway recordings such as a hypothesis list of recognition results generated by the graph search unit 404 in the search process are temporarily stored in the work area 433 on the device memory 321.
  • the above-mentioned intermediate recording may be saved in the work area on the main memory 311 or may be saved in both the device memory 321 and the main memory 311.
  • the graph search unit 404 finally outputs the character string of the voice recognition result.
  • the character string of the recognition result is sent from the work area 433 on the device memory 321 to the recognition result output processing unit 405 on the CPU 310 side.
  • the recognition result output processing unit 405 performs processing for displaying or outputting the recognition result from the output unit 442 including a display and a speaker.
  • the voice recognition system 300 may be configured as a device including at least one of the voice input unit 441 and the output unit 442.
  • the CPU 310 and the GPU 320 may be installed in a server on the cloud, and the voice input unit 441 and the output unit 442 may be configured as a voice agent device (described later).
  • FIG. 5 shows, in the form of a flowchart, the overall processing procedure of speech recognition executed by the speech recognition system 300 shown in FIG.
  • the voice data after digital processing by the signal processing unit 401 is divided into, for example, every 10 milliseconds and input to the feature amount extraction unit 402. To be done.
  • the feature amount extraction unit 402 extracts the feature amount of the voice based on the voice data that has been digitally processed by the signal processing unit 401, using a known technique such as Fourier transform or mel filter bank (step S502). ..
  • a known technique such as Fourier transform or mel filter bank.
  • the HMM score calculation unit 403 receives information on the feature amount of the voice, and calculates the score of each HMM state using the acoustic model 431 (step S504).
  • the graph search unit 404 receives the HMM state score, and a small graph (smaller WFST model) 432 on the GPU memory (device memory) 321 and a large graph (larger WFST model) on the main memory 311.
  • a search process by on-the-fly synthesis is performed using the 421 (step S505).
  • step S505 the graph search unit 404 first transitions tokens in the small graph.
  • the arc information of the large graph is copied to the device memory 321 of the GPU 320, and the token transition on the large graph is performed. Then, after transitioning all hypotheses, the graph search unit 404 prunes the hypotheses as a whole. However, the details of this processing will be described later (see FIG. 6).
  • steps S502 to S505 are repeatedly executed for the voice data divided every 10 milliseconds.
  • Step S501 When the end of the input voice is reached (No in step S501), the character string of the voice recognition result by the graph search unit 404 is copied from the work area 433 on the device memory 321 to the main memory 311 on the CPU 310 side (No). Step S506).
  • the recognition result output processing unit 405 performs processing for displaying or outputting the recognition result from the output unit 442 including a display and a speaker (step S507).
  • FIG. 6 shows, in the form of a flow chart, the detailed processing procedure of the graph search processing executed in step S505 in the flow chart shown in FIG.
  • the graph search unit 404 transitions tokens in the small graph 432 (smaller WFST model) on the device memory 321 (step S601).
  • the state transition of the token of the large graph (large WFST model) is performed.
  • the graph search unit 404 calculates an address on the main memory 321 that stores the required large graph arc information, and from that address on the main memory 321 the large graph arc information. Is copied to the device memory 321 on the GPU 320 side (step S603), and the token of the large graph is changed on the device memory 321 (step S604). Then, after transitioning all the hypotheses, the graph search unit 404 prunes the hypotheses as a whole (step S605), and ends this processing. Also, when no word is output from the transitioned arc (No in step S602), the graph search unit 404 prunes the hypothesis as a whole (step S605), and ends this processing.
  • the arc of the small graph is performed when the token is changed (by the graph search unit 404) on the GPU 320 using the small graph on the device memory 321.
  • the arc information of the large graph is needed.
  • the GPU 320 may calculate in advance the position (address information) in the main memory 311 where the necessary arc is arranged in the large graph.
  • the CPU 310 does not need to perform a large graph searching process such as a binary search or a lookup of a hash table. The load on the CPI 310 can be reduced.
  • the CPU 310 and the GPU 320 have a common page table, and when the GPU 320 refers to an access to a page that is not on the device memory 321, the page is transferred from the main memory 311 to the device. Move to memory 321.
  • CUDA registered trademark
  • a driver of the GPU 320 moves a page from the main memory 311 to the device memory 321. It can be carried out.
  • the necessary arc information calculated in advance on the GPU 320 side is sent from the GPU 320 to the CPU 310.
  • a list of necessary arc position information calculated on the GPU 320 side (for example, an arc array index on the main memory 311 or an arc address) is sent to the CPU 310.
  • the necessary arc is copied to the device memory 321 based on the received list.
  • Figure 7 illustrates the latter method.
  • the GPU 320 sends a list of necessary arcs to the CPU 310 side.
  • the GPU 310 transmits the arc list ⁇ 1, 5, 7, 11, 19 ⁇ and the arc ID to the CPU 310.
  • the CPU 310 takes out five arcs ⁇ 1,5,7,11,19 ⁇ from the large graph stored in the main memory 311 based on the received list, arranges them, returns them to the GPU 320 side, and returns the device. Copy to memory 321.
  • F-4 Modification F-4-1. Modification example in which the GPU memory is provided with a cache of a large graph arc Generally, the communication between the CPU 310 and the GPU 320 has a higher latency than the normal memory access. Therefore, the arc of the large graph is saved (or cached) in the device memory 321 on the GPU 320 side to improve the processing speed. Due to the nature of graph search in speech recognition, this method is considered to be effective because references to the same data often continue in large graphs.
  • FIG. 8 illustrates a mechanism for caching an arc of a large graph in the device memory 321 on the GPU 320 side.
  • the device memory 321 has a data structure in which the ID of the source state (the state before the transition) and the input label are input and the arc is returned.
  • FIG. 9 shows a configuration example of a speech recognition system 300 including a large graph cache.
  • a signal processing unit 401, a feature amount extraction unit 402, and a recognition result output processing unit 405 are arranged in the CPU 310.
  • the GPU 320 includes an HMM score calculation unit 403 and a graph search unit 404. These functional modules indicated by reference numerals 401 to 405 may actually be software programs executed by the CPU 310 or GPU 320.
  • the voice input unit 441 is composed of a microphone or the like and picks up a voice signal.
  • the signal processing unit 401 performs predetermined digital processing on the audio signal received by the audio input unit 441.
  • the feature amount extraction unit 402 extracts the feature amount of voice by using a known technique such as Fourier transform or a mel filter bank.
  • the HMM score calculation unit 403 receives the information on the feature amount of the voice, and calculates the score of each HMM state by using the acoustic model 431 on the GPU memory (device memory) 321. GMM and DNN are used for HMM.
  • the graph search unit 404 receives the HMM state score and receives a small graph (smaller WFST model) 432 on the GPU memory (device memory) 321, a large graph cache 901, and a large graph (larger graph on the main memory 311). WFST model) 421 to perform search processing by on-the-fly synthesis.
  • the graph search unit 404 first transitions tokens in the small graph. When a word is output from the small graph in the transition, the ID of the source state (the state before the transition) and the input label are input, and the arc information of the large graph is acquired from the large graph cache 901, Transition of graph tokens. When a cache error occurs in the large graph cache 901, the graph search unit 404 copies the arc information of the large graph to the device memory 321 of the GPU 320, and copies the arc information of the large graph into the large graph cache 901. Cache in and perform token transition of large graph.
  • the graph search unit 404 finally outputs the character string of the voice recognition result.
  • the character string of the recognition result is sent from the work area 433 on the device memory 321 to the recognition result output processing unit 405 on the CPU 310 side.
  • the recognition result output processing unit 405 performs processing for displaying or outputting the recognition result from the output unit 442 including a display and a speaker.
  • FIG. 10 shows the overall processing procedure of voice recognition executed by the voice recognition system 300 shown in FIG. 9 in the form of a flowchart.
  • the voice data after digital processing by the signal processing unit 401 is divided into, for example, every 10 milliseconds, and is input to the feature amount extraction unit 402. To be done.
  • the feature amount extraction unit 402 extracts the feature amount of the sound based on the sound data that has been digitally processed by the signal processing unit 401, using a known technique such as Fourier transform or mel filter bank (step S1002). ..
  • a known technique such as Fourier transform or mel filter bank.
  • the HMM score calculation unit 403 receives information on the feature amount of the voice, and calculates the score of each HMM state using the acoustic model 431 (step S1004).
  • the graph search unit 404 receives the HMM state score, and receives a small graph (smaller WFST model) 432 on the GPU memory (device memory) 321, a large graph cache 901, and a large graph on the main memory 311 ( The larger WFST model) 421 is used to perform search processing by on-the-fly synthesis (step S1005).
  • step S1005 the graph search unit 404 first transitions tokens in the small graph.
  • the ID of the source state (the state before the transition) and the input label are input, and the arc information of the large graph is acquired from the large graph cache 901, Transition of graph tokens.
  • the graph search unit 404 searches the large graph (larger WFST model) 421 on the main memory 311, and acquires the target arc. Then, after transitioning all the hypotheses, the graph search unit 404 performs pruning of the hypotheses as a whole. However, details of the graph search processing will be given later (see FIG. 11).
  • step S1001 Until the end of the input voice is reached (Yes in step S1001), for example, the processes of steps S1002 to S1005 are repeatedly executed for the voice data divided every 10 milliseconds.
  • Step S1006 When the end of the input voice is reached (No in step S1001), the character string of the voice recognition result by the graph search unit 404 is copied from the work area 433 on the device memory 321 to the main memory 311 on the CPU 310 side (No). Step S1006).
  • the recognition result output processing unit 405 performs processing for displaying or outputting the recognition result from the output unit 442 including a display and a speaker (step S1007).
  • FIG. 11 shows a detailed processing procedure of the graph search process executed in step S1005 in the flowchart shown in FIG. 10 in the form of a flowchart.
  • the graph search unit 404 transitions tokens in the small graph 432 (smaller WFST model) on the device memory 321 (step S1101).
  • step S1103 when the word is output from the transitioned arc (Yes in step S1102), the source state (state before transition) and the input label are input, and the arc information of the desired large graph is large. It is checked whether or not it is in the graph cache 901 (step S1103).
  • step S1103 if the desired arc information of the large graph is present in the large graph cache 901, that is, if there is a cache hit (Yes in step S1103), the information of the large graph arc is acquired from the large graph cache 901.
  • the state transition of the token of the large graph (large WFST model) is performed (step S1104).
  • the graph search unit 404 calculates the address on the main memory 321 that stores the necessary arc information of the large graph. , The arc information of the large graph is copied from the address in the main memory 321 to the small graph 432 in the device memory 321 on the GPU 320 side (step S1106), and the arc information of the large graph is stored in the large graph cache 901. The data is cached (step S1107), and the token of the large graph is changed on the device memory 321 (step S1104).
  • the graph search unit 404 prunes the hypotheses as a whole (step S1105) and ends this processing.
  • F-4-2 Modified Example of Expanding Large Graph in Other than Main Memory
  • the large graph may be expanded to an external storage device such as an SSD, a memory of another system over the network, a memory of another device in the same system 300, or the like.
  • the search process of a large-scale graph can be executed at high speed by a manycore arithmetic unit having a limited memory capacity.
  • a speech recognition system to which the technique according to the first embodiment is applied is configured such that in a hybrid environment equipped with a CPU and a GPU (or another many-core arithmetic unit), a large-scale graph search process using on-the-fly synthesis is performed by the CPU. It can be run without overloading. This brings the following advantages.
  • the technique described as the first embodiment can be applied to various cases in which the graph search processing capable of on-the-fly composition is applied to the hybrid environment.
  • a WFST corresponding to a large vocabulary for speech recognition processing in which WFST data is arranged on a disk has a size of several tens GB to several hundreds GB, and a WFTS search cannot be operated unless the system has a large memory capacity. Therefore, a method of arranging all the WFST data on the disk and performing the search process has been proposed (for example, see Non-Patent Document 4). Specifically, a node file (nodes-file) describing the position of an arc extending from each state (node) of the WFST, an arc file (arcs-file) describing arc information, and a word corresponding to an output symbol are described.
  • the information of an arbitrary arc can be acquired by accessing the disk twice. Further, by holding (that is, caching) the arc once read from the disk in the memory for a while, the number of times the disk is accessed can be reduced and the increase in processing time due to the disk access can be suppressed.
  • the offset data of the WFST data corresponds to the "node file" which is the information of the position of the arc extending from each of the above nodes.
  • the "real-time processing" referred to here means, for example, that one second of voice is processed within one second.
  • voice recognition in a real service such as a voice agent, it is important to return a response to the user in real time.
  • the disk IOPS the number of I/O accesses that the disk can process per second
  • the number of times the disk is accessed is reduced and the processing can be performed at high speed, but this is against the reduction of the memory usage.
  • the data to be placed in the memory that is, only useful data is carefully selected and placed in the memory
  • high-speed voice recognition processing is realized while suppressing the memory usage.
  • FIG. 15 schematically shows the configuration of a voice recognition system 1500 to which the technique proposed as the second embodiment is applied.
  • the illustrated voice recognition system 1500 includes a CPU 1510, a main storage device (hereinafter referred to as “memory”) 1520, and an auxiliary storage device (hereinafter referred to as “disk”) 1530.
  • a main storage device hereinafter referred to as “memory”
  • disk auxiliary storage device
  • the voice recognition system 1500 divides the WFST model into two large and small ones, and performs on-the-fly synthesis to synthesize at the time of executing voice recognition.
  • a language model having a large size is divided into large and small.
  • the smaller language model considering the connection between the two words is combined with the acoustic model and the pronunciation dictionary to create the smaller WFST model.
  • the smaller WFST model (small graph) is located in memory 1520, which has a relatively small capacity.
  • the language model considering the connection of four words is the larger WFST model.
  • the larger WFST model (large graph) is placed on disk 1530.
  • the CPU 1510 performs a state transition of the smaller WFST model on the memory 1520, and performs a likelihood correction using the larger WFST model on the disk 1530.
  • the CPU 1510 basically transitions tokens with a small WFST model arranged in the memory 1520, but when a word is output from the transitioned arc and it becomes necessary to perform a state transition of a large WFST model, the disk 1520 And copying only the data (specifically, the input label, output label, weight, and ID of the arc transition destination state) necessary for processing in the large WFST model to the memory 1520, Performs all search processing.
  • the WFST data (arc) used for voice recognition has a large bias in access frequency.
  • the larger language model WFST is accessed only when a word is output by the smaller WFST, and the access frequency is low. That is, in on-the-fly synthesis, the portion that occupies most of the WFST data, which is infrequently accessed, can be separated into the larger language model WFST. Therefore, by allocating the smaller WFST model with high access frequency to the memory 1520 capable of high-speed processing and arranging the language model WFST with low access frequency and large size on the disk 1530, the number of accesses to the disk 1530 can be increased. Since it is reduced, it is possible to realize a high-speed WFST search while reducing the memory usage amount.
  • the search for the language model WFST is a process of extracting the corresponding arc from the state ID and label (input label) of the source state.
  • the search for the language model WFST is a process of extracting the corresponding arc from the state ID and label (input label) of the source state.
  • the data of each arc of the language model is arranged on the disk 1530 as an array.
  • the arc data includes the input label, the output label, the weight, and the state ID of the arc transition destination.
  • the array of arcs arranged on the disk 1530 is also referred to as “arc array”.
  • the arcs are arranged on the disk 1530 in the order of the state IDs in the source state, such as the arc in the state 0, the arc in the state 1, the arc in the state 2, and so on. Further, there are a plurality of arcs extending from each state, and arcs having the same source state are sorted by label (input label).
  • the arcs having the source state are arranged on the arc arrangement of the disk 1530 in the order of labels (input labels). Binary search is possible by sorting the arcs in the same state by the input label.
  • an “arc index (Arc Indexes)” storing the start position (offset) on the arc array of the arcs in each state is arranged.
  • the arc index arranges the start positions of the arcs of each state on the arc array sorted in the order of the state IDs. For example, when the arc extending from the state 5 starts from the 10th position in the arc array, the 5th element of the array of arc indexes becomes 10.
  • an "input label array” in which labels (input labels) corresponding to the arcs on the arc array are arranged in the same manner as the arc array is also arranged.
  • the arcs are sorted and arranged in the order of the state ID of the source state and the arcs having the same source state in the order of the label (input label). Therefore, even on the input label array, the input label of each arc is arranged in the order of the arcs arranged on the arc array. For example, if the label of the 10th arc on the arc array is 3, then the 10th element of the input label array is 3.
  • the arc index and the input label array arranged in the memory 1520 are used to determine the position on the disk 1530 of the arc corresponding to an arbitrary state ID and input label. , 1530 without having to access the disk 1530.
  • the start position on the arc array of the state ID of the source state of the target arc is specified by the arc index, and then the input label of the target arc is searched from the element at the same start position on the input label array. , You can reach a position on the arc array located on the disk 1530. That is, an arbitrary arc can be acquired with one disk access.
  • FIG. 17 shows an arc array on the disk 1530 and an arc index and input label array arranged in the memory 1520 as specific examples of WFST (large) access data.
  • the data of each arc is arranged in the order of the state IDs of the source states and the arcs having the same source state are sorted in the order of labels (input labels).
  • the arc data shall include the input label, output label, weight, and state ID of the arc transition destination.
  • the element written as “A (i) j ” represents that the arc data of the jth input label is stored in the source state whose state ID is “i”. ..
  • the fourth element from the beginning stores the data of the arcs whose state ID is "0" and whose input labels are 0, 1, 3, and 4, respectively.
  • the fifth to seventh elements are source states with a state ID of "1" and store arc data with input labels 0, 2, and 7, respectively. Binary search is possible by sorting the arcs in the same state by the input label.
  • the arc index 1702 arranged in the memory 1520 stores the start position on the arc array of the arc in each state.
  • the arc index 1702 is array type data sorted by state ID. In the example shown in FIG. 17, the states are sorted in the order of 0, 4, 7, 13, 16, 21,... Based on the state ID, and each element has a start position on the arc array 1701 of the corresponding state ID. It is stored.
  • the first element of the arc index 1702 stores 0 indicating the starting position of the arc of state 0 on the arc array 1701
  • the second element stores the starting position of the arc of state 4 on the arc array 1701. Stored is 4.
  • the input label array 1703 arranged in the memory 1520 stores labels (input labels) corresponding to arcs on the arc array 1701 arranged in the same manner as the arc array 1701. Therefore, each element of the input label array 1703 stores the input label of the arc of the element at the same position on the arc array 1701.
  • the fourth element from the beginning stores the input labels 0, 1, 3, and 4 of each arc extending from the source state whose state ID is "0".
  • the fifth to seventh elements respectively store the input labels 0, 2, and 7 possessed by each arc extending from the source state whose state ID is "1".
  • the CPU 1510 searches the language model WFST arranged in the format of the arc array 1701 on the disk 1530, it first refers to the arc index 1702 in the memory 1520 to refer to the state ID of the source state of the target arc. The starting position on the arc array of is specified. Then, by searching the input label of the target arc from the element at the same start position of the input label array 1703, it is possible to reach the corresponding element on the arc array 1701 arranged on the disk 1530. That is, an arbitrary arc can be acquired with one disk access.
  • the method described in the section G-2 has a problem that the size of the WFST (large) access data arranged in the memory 1520 is large. Particularly, since the input label array stores the data of the input label corresponding to the arc of each element of the arc array, the data size becomes about one fourth of the arc array arranged on the disk 1530, and the memory size of the memory 1520 is reduced. There is a concern that the purpose of reducing the amount of use may not be fully achieved.
  • the data arranged on the disk 1530 is 16 GB.
  • the data allocated in the memory 1530 is 4.4 GB.
  • an arc is made up of four pieces of data including an input label, an output label, a weight, and a transition destination state ID. If each piece of data has a size of 4 bytes, the data size of one arc is 16 bytes. Become. Therefore, the number of arcs is 1 billion, and the data size of the arc array is 16 GB.
  • the data size of the input label array arranged in the memory 1520 is 4 GB
  • the data size of the arc index is 0.4 GB, and most of them are the input label array.
  • FIG. 18 shows a specific example of WFST (large) access data for realizing the method proposed in this section.
  • the arc array is arranged on the disk 1530, while the arc index and the input label array are arranged in the memory 1520, as in the example shown in FIG.
  • the arc array 1801 on the disk 1530 sorts the arcs having the same source state in the order of the state IDs of the source states and the labels (input labels), and The data is arranged.
  • detailed description of the arc array 1801 is omitted.
  • the arc index 1802 arranged in the memory 1520 is the starting position on the arc array of the arc in each state.
  • the arc index 1802 is array type data sorted by the state ID, as in the example shown in FIG.
  • detailed description of the arc index 1802 is also omitted.
  • the input label array 1703 stores the labels (input labels) corresponding to the arcs on the arc array 1701 in the same array as the arc array 1701.
  • the input label array 1803 stores data for calculating the position of the page on which the target arc is arranged.
  • the arc array 1801 is divided into 256 pieces (that is, for each page), and only the leading input label of each of the 256 arc arrays 1801 is stored in the input label array 1803.
  • the 256 arcs correspond to 4 KB, or one page.
  • the input label array 1803 stores data for calculating the position of the page on which the target arc is arranged, specifies the page including the target arc, and then outputs one page of arcs from the disk 1530. Data can be read into the memory 1520.
  • the CPU 1510 searches the language model WFST arranged in the format of the arc array 1801 on the disk 1530, first, by referring to the arc index 1802 in the memory 1520, the element corresponding to the status ID is changed to the status. The start position on the arc array 1801 of the arc is specified and the page range in which the target arc can exist is calculated. Next, with reference to the input label array 1803 on the memory 1520, the label at the top of each page where the target arc may exist is compared with the input label to identify the page where the target arc exists. Then, the disk 1530 is accessed, one page, that is, the data of 256 arcs is read into the memory 1520, and then the target arc is searched from the 256 arcs.
  • the size of the WFST (large) access data arranged in the memory 1520 can be reduced with almost no change in processing time from the method proposed in section G-2.
  • the data amount of the input label array 1803 is 1/256 of the input label array 1703 shown in FIG.
  • the number of disk accesses can be further reduced by rearranging the arc array 1801 so as to increase the useful arcs as much as possible among the 256 arcs read by one disk access.
  • Increasing the number of useful arcs as much as possible means putting the arcs that are likely to be used at the same time on the same page (a group of 256 arcs).
  • arcs extending from the same state (node) need to be collected and sorted in the order of labels to be arranged in the arc array, so arcs that are likely to be used at the same time need to be rearranged collectively. (That is, the state ID needs to be reassigned).
  • a method of rearranging arcs a method based on the structure of WFST can be mentioned. Specifically, it is a method of collectively arranging arcs extending from connected states (nodes) on the WFST as close as possible.
  • the arc of the language model may be pre-read. According to this method, it is possible to predict the arc that is likely to be read from the disk 1530 and read it into the memory 1520 in advance to reduce the processing time for the latency of the disk access. If the prediction is wrong, useless disk access will occur, but if the IOPS of the disk 1530 does not become a bottleneck, it is effective in reducing the processing time.
  • the predictor of the access pattern of the language model can be learned by using a sequence model such as HMM or RNN (Recurring Neural Network).
  • a pre-trained model may be used, or learning may be performed online during the processing of the speech recognition system 1500.
  • FIG. 19 shows a specific functional configuration example of the voice recognition system 1500 to which the technique proposed as the second embodiment is applied.
  • a signal processing unit 1901, a feature amount extraction unit 1902, an HMM score calculation unit 1903, a WFST search unit 1904, and a recognition result output unit 1905 are arranged in the CPU 1900.
  • These functional modules indicated by reference numerals 1901 to 1905 may actually be software programs executed by the CPU 1900.
  • a many-core arithmetic unit such as a GPU may be used instead of the CPU, or a combination of the CPU and the GPU may realize the functional modules indicated by reference numerals 1901 to 1905.
  • the voice input unit 1931 is composed of a microphone or the like and picks up a voice signal.
  • the signal processing unit 1901 performs predetermined digital processing on the voice signal received by the voice input unit 1931.
  • the feature amount extraction unit 1902 extracts a feature amount of voice using a known technique such as Fourier transform or mel filter bank.
  • the HMM score calculation unit 1903 receives information on the feature amount of the voice, and calculates the score of each HMM state by using the acoustic model 1911 in the RAM 1910. GMM and DNN are used for HMM.
  • the WFST search unit 1904 receives the HMM state score, and a small graph (smaller WFST model) 1912 on the RAM (Random Access Memory) 1910 as the memory and the large graph (larger on the SSD 1920 as the disk described above. Search processing by on-the-fly synthesis is performed using the other WFST model) 1921.
  • a large graph (larger WFST model) 1921 on the SSD 1920 is an arc array.
  • the data of each arc is arranged in the order of the state ID of the source state and the arcs having the same source state are sorted in the order of the label (input label) (described above).
  • the WFST search unit 1904 can utilize the arc index and the input label array stored as the WFST model (large) access data 1914 in the RAM 1910 to access the arc array in the SSD 1920 at high speed.
  • the language model arc cache 1913 on the RAM 1910 stores arcs once read from the SSD 1920 in page units. Further, in the work area 1915 in the RAM 1910, data such as a token at the time of searching the WFST is temporarily stored.
  • signal processing or WFST search processing is repeated until there is no input of voice data from the voice input unit 1931 (in other words, until the end of the utterance). Then, when there is no input of voice data, the WFST search unit 1904 outputs the recognition result extracted from the probable hypothesis to the recognition result output unit 1905. Then, the recognition result output unit 1905 performs a process for displaying or outputting the recognition result from the output unit 1932 including a display, a speaker, and the like.
  • the voice recognition system 1500 may be configured as a device including at least one of the voice input unit 1931 and the output unit 1932.
  • the CPU 1900 and GPU 320 may be mounted in a server on the cloud, and the voice input unit 441 and the output unit 442 may be configured as a voice agent device (described later).
  • FIG. 20 shows, in the form of a flowchart, the overall processing procedure of voice recognition executed by the voice recognition system 1500 shown in FIG.
  • the voice data after digital processing by the signal processing unit 1901 is divided into, for example, every 10 milliseconds and is input to the feature amount extraction unit 1902. Will be done.
  • the feature amount extraction unit 1902 extracts the feature amount of the voice based on the voice data that has been digitally processed by the signal processing unit 1901 using a known technique such as Fourier transform or mel filter bank (step S1902). ), The feature amount data is input to the HMM score calculation unit 1903.
  • the HMM score calculation unit 1903 receives the information of the voice feature amount, and calculates the score of each HMM state using the acoustic model 1921 (step S2003).
  • the WFST search unit 1904 receives the HMM state score and performs on-the-fly synthesis using the small graph (smaller WFST model) 1912 on the RAM 1911 and the large graph (larger WFST model) 1921 on the SSD 1920. Search processing is performed (step S2004).
  • step S2004 the WFST search unit 1904 first transitions tokens in the small graph 1912 on the RAM 1911.
  • the transition in the large graph 1921 on the SSD 1920 is performed.
  • the WFST search unit 1904 identifies the page on which the necessary arc is arranged, using the arc index and the input label array stored as the WFST model (large) access data 1914 in the RAM 1910.
  • the WFST search unit 1904 reads a page including the corresponding arc from the language model arc cache 1913 if it exists in the language model arc cache 1913, and otherwise reads it from the large graph 1921 on the SSD 1920.
  • the WFST search unit 1904 searches for a target arc from the read page, and uses the data of the arc to perform the transition of the token on the large graph.
  • steps S2002 to S2004 are repeatedly performed on the voice data divided every 10 milliseconds, for example.
  • the WFST search unit 1904 selects a hypothesis that seems likely from the tokens in the work area 1915 of the RAM 1910 and outputs it as a recognition result. Then, the recognition result output unit 1905 performs a process for displaying or outputting the recognition result from the output unit 1932 including a display and a speaker (step S2005).
  • FIG. 21 shows an example of a detailed processing procedure of the WFST search process executed in step S2004 in the flowchart shown in FIG. 20 in the form of a flowchart.
  • the processing procedure shown in FIG. 21 shall follow the disk access method (see FIG. 17) described in Section G-2 described above.
  • the WFST search unit 1904 transitions tokens using the small graph 1912 (smaller WFST model) on the RAM 1910 (step S2101).
  • step S2102 If no word is output from the transitioned arc (No in step S2102), the WFST search unit 1904 prunes the hypothesis as a whole (step S2107), and ends this processing.
  • the WFST search unit 1904 uses the WFST (large) access data 1914 to position the target arc on the WFTS model (large) 1921. Is specified (step S2103).
  • the WFST search unit 1904 first refers to the arc index in the WFST (large) access data 1914 to specify the start position on the arc array of the state ID of the source state of the target arc.
  • the WFST search unit 1904 searches for the input label of the target arc from the element at the same start position of the input label array in the WFST (large) access data 1914, and thereby finds the position of the target arc on the arc array. To identify.
  • the WFST search unit 1904 checks whether or not the corresponding page (that is, the page including the data of the target arc) exists in the language model arc cache 1913 (step S2104).
  • step S2104 If the corresponding page already exists in the language model arc cache 1913 (Yes in step S2104), the WFST search unit 1904 reads the data of the target arc from the language model arc cache 1913 (step S2105). The transition of the token on the large graph is performed (step S2106).
  • the WFST search unit 1904 uses the WFST model (large) 1921 arranged in the SSD 1920, that is, the arc array, in step S2103. A page including the specified position is read (step S2108) and written in the language model arc cache 1913 (step S2109). Then, the WFST search unit 1904 searches for a target arc from the read page, and uses the arc data to perform a token transition on the large graph (step S2106).
  • step S2107 the hypothesis is pruned as a whole (step S2107), and this process is completed.
  • FIG. 22 shows another example of the detailed processing procedure of the WFST search process executed in step S2004 in the flowchart shown in FIG. 20 in the form of a flowchart.
  • the processing procedure shown in FIG. 22 is in accordance with the disk access method (see FIG. 18) described in the above section G-3.
  • the WFST search unit 1904 transitions tokens in the small graph 1912 (smaller WFST model) on the RAM 1910 (step S2201).
  • step S2202 If no word is output from the transitioned arc (No in step S2202), the WFST search unit 1904 prunes the hypothesis as a whole (step S2208), and ends this processing.
  • the WFST search unit 1904 arranges the target arc on the WFTS model (large) 1921 using the WFST (large) access data 1914.
  • the specified page is specified (step S2203).
  • the WFST search unit 1904 first refers to the arc index in the WFST (large) access data 1914, identifies the start position on the arc array of the arc in that state from the element corresponding to the state ID, and Calculate the page range where arcs can exist. Next, by referring to the input label array in the WFST (large) access data 1914, the label at the top of each page where the target arc may exist and the input label are compared, and the page where the target arc exists is identified. Identify.
  • the WFST search unit 1904 checks whether the corresponding page exists in the language model arc cache 1913 (step S2204).
  • the WFST search unit 1904 reads the data of the corresponding page, that is, 256 arcs, from the language model arc cache 1913 (step). S2205), the target arc is searched from the 256 arcs (step S2206).
  • the WFST search unit 1904 uses the WFST model (large) 1921 arranged in the SSD 1920, that is, the arc array, in step S2203.
  • a page including the specified position is read (step S2209) and written in the language model arc cache 1913 (step S2210).
  • the WFST search unit 1904 searches for the target arc from the read page (step S2206), and transitions the token on the large graph (step S2207).
  • the WFST search unit 1904 prunes the hypotheses as a whole (step S2208), and ends this process.
  • step S2203 is executed in step S2203 in the flowchart shown in FIG.
  • the processing procedure is shown in the form of a flowchart.
  • the WFST search unit 1904 first refers to the element corresponding to the state ID of the target arc and the next element in the arc index in the WFST (large) access data 1914, and the target arc may exist.
  • the page range is calculated (step S2301).
  • the state ID of the target arc is “0”, the first element “0” and the second element (that is, the state ID “4”) “4”. Since the arc extending from the source state with the state ID “0” is within the 1st to 256th range, it is possible to specify that the target arc exists on page 0.
  • the page range in which the target arc can exist spans multiple pages.
  • the start position on the arc array of the target arc state ID is the Nth
  • the first arc extending from the source state exists on the [N/256] page (where [X] is a real number X). To the largest integer less than or equal to X).
  • the state ID of the source state of the target arc is the 10th of the arc index
  • the 10th element is 300
  • the following 11th element is 900
  • the WFST search unit 1904 refers to the input label array in the WFST (large) access data 1914, and inputs the target label of the top label of each page corresponding to the page range calculated in the preceding step S2301.
  • the page in which the target arc exists is identified by comparison with the label (step S2302).
  • the page can be specified by comparing the leading label of each page with the input label of the target arc.
  • the input label of the target arc is 100
  • the page range in which the target arc can exist is between the first page and the third page
  • the first page, the second page, and the third page in the input label array are included.
  • the first label of each eye is 300, 50, 150. It can be seen that the leading label on the first page is outside the range of the input label of the target arc and is the input label in the previous state. Therefore, since the input label of the target arc exists between the start position of the second page and the start position of the third page, it can be specified that the target arc exists on the second page. ..
  • the WFST search unit 1904 reads the specified page from the large graph 1921 on the SSD 1920, that is, the arc array (step S2303).
  • the WFST search unit 1904 searches for the target arc using the input label from the 256 arcs of the page read from the arc array on the SSD 1920 (step S2304).
  • Each read arc has input label information (see, for example, FIG. 14).
  • the arc index is referred to in step S2301
  • the range of arcs extending from the source state of the state ID of the target arc is known from the 256 arcs. That is, the difference between the element corresponding to the target arc state ID and the next element is the number of arcs extending from that state. Therefore, by comparing the input labels within that range, the target arc can be specified as one (or it can be seen that the target arc does not exist).
  • the WFST search unit 1904 checks whether or not the target arc exists (step S2305). If the target arc exists on the page read from SSD 1920 (Yes in step S2305), the WFST search unit 1904 ends this process.
  • step S2305 when the target arc does not exist in the read page (No in step S2305), the WFST search unit 1904 transitions to the backoff state. Specifically, 0 is set in the input label (step S2306), the process returns to step S2301, and the same processing as above is repeated. Label 0 indicates an arc that makes a backoff transition.
  • FIG. 24 shows a specific functional configuration example of a voice recognition system 1500 having an arc pre-reading function.
  • a signal processing unit 2401, a feature amount extraction unit 2402, an HMM score calculation unit 2403, a WFST search unit 2404, and a recognition result output unit 2405 are arranged in the CPU 2400.
  • These functional modules indicated by reference numerals 2401 to 2405 may actually be software programs executed by the CPU 2400.
  • each functional module indicated by reference numerals 2401 to 2405 basically has the same function or role as the functional module of the same name in the voice recognition system 1500 shown in FIG. 19, detailed description will be given here. Is omitted.
  • the RAM 2410 corresponds to the above-mentioned memory
  • the SSD 2420 corresponds to the above-mentioned disk.
  • the RAM 2410 includes an acoustic model 2411 used for score calculation in the HMM state, a small graph (smaller WFST model) 2512, a language model arc cache 2413 in which arcs once read from the SSD 2420 are stored in page units, and WFST model (large) access data 2414 including an arc index and a Uri label array is arranged.
  • a large graph (larger WFST model) 2421 is arranged on the SSD 2420.
  • the language model access pattern model 2416 used for pre-reading the arc of the language model is further arranged on the RAM 2410.
  • the pre-reading function of the language model arc is described below.
  • the arc is read from the SSD 2420 into the language model arc cache 2413 in the RAM 2410 in advance before it is actually needed.
  • the WFST search unit 2404 (or another (not shown) functional module executed by the CPU 2400) uses the language model access pattern model 2416 arranged in the RAM 2410 to predict the arc that is likely to be required next. And pre-read.
  • the language model access pattern model 2416 may use a sequence model such as a pre-learned HMM or LSTM (Long-Short Term Memory), or may be learned online while operating the processing of the speech recognition system 1500. You may.
  • the language model access pattern model 2416 takes an access pattern (one or more times before) to a past arc as an input, and is likely to be accessed next (or N arcs from the top) (or , Page) is output.
  • the pre-loaded arc is placed in the language model arc cache 2413 in RAM 2410.
  • pre-loading may be in arc units or page units. If the language model arc cache 2413 is an arc unit, it is pre-read in arc units, and if the cache is in page units, it is pre-read in page units.
  • 25 and 26 show, in the form of flowcharts, detailed processing procedures of the WFST search processing executed by the WFST search unit 2404 in the speech recognition system 1500 shown in FIG.
  • arc pre-reading is performed in parallel with the WFST search processing.
  • the illustrated processing procedure follows the disk access method (see FIG. 18) described in the above section G-3.
  • the WFST search unit 2404 transitions tokens in the small graph 1912 (smaller WFST model) on the RAM 1910 (step S2501).
  • step S2502 If no word is output from the transitioned arc (No in step S2502), the WFST search unit 2404 performs pruning of the hypothesis as a whole (step S2508) and ends this processing.
  • Step S2503 is basically carried out according to the processing procedure shown in FIG.
  • the WFST search unit 2404 checks whether or not the corresponding page exists in the language model arc cache 2413 (step S2504). If the corresponding page already exists in the language model arc cache 2413 (Yes in step S2504), the WFST search unit 2404 reads the corresponding page from the language model arc cache 2413 (step S2505) and of that page. A target arc is searched from the inside (step S2506).
  • the WFST search unit 2404 determines in step S2503 from the WFST model (large) 2421 arranged in the SSD 2420, that is, the arc array.
  • the page containing the specified position is read (step S2509) and written to the language model arc cache 2413 (step S2510).
  • the WFST search unit 2404 searches for the target arc from the read page (step S2506), and transitions the token on the large graph (step S2507).
  • the WFST search unit 2404 after transitioning all the hypotheses, prunes the hypotheses as a whole (step S2508), and ends this process.
  • the WFST search unit 2404 (or the functional module for pre-reading executed by the CPU 2400) performs the pre-reading processing of the arc in parallel with the processing (step S2503) for identifying the page in which the target arc is arranged. carry out.
  • the WFST search unit 2404 inputs the page access pattern into the language model access pattern model 2416 (step S2511).
  • the language model access pattern model 2416 takes the access pattern (one time before or a plurality of times before) of the past arc as an input, and outputs the page that is likely to be accessed next.
  • the WFST search unit 2404 checks whether or not the page that is output from the language model access pattern model 2416 and is likely to be accessed next exists in the language model arc cache 2413 (step S2512). If the page in question already exists in the language model arc cache 2413 (Yes in step S2504), there is no need for pre-reading, and this processing ends.
  • the WFST search unit 2404 pre-reads the page output from the language model access pattern model 2416 in step S2511. To do. That is, the corresponding page is read from the WFST model (large) 2421 arranged in the SSD 2420, that is, the arc array (step S2513), and written in the language model arc cache 2413 (step S2514).
  • FIG. 27 shows a functional configuration example of the voice recognition system 2700 that realizes on-the-fly synthesis using a disk in a hybrid environment.
  • the voice recognition system 2700 includes a CPU 2710 and a GPU 2720 as processors that execute processes related to the voice recognition process.
  • each function module of the signal processing unit 2701, the feature amount extraction unit 2702, and the recognition result processing unit 2705 is arranged.
  • the GPU2720 each function module of the HMM score calculation unit 2703 and the WFST search unit 2704 is arranged.
  • These functional modules shown by reference numbers 2701 to 2705 may actually be software programs executed by the CPU 2710 and the GPU 2720, respectively.
  • the SSD 2740 is used as a disk, but the internal memory of the GPU 2720 (hereinafter referred to as “GPU memory”) 2730 is used as the memory.
  • the voice input unit 2751 is composed of a microphone or the like, and inputs the collected voice signal to the CPU 2710.
  • the signal processing unit 2701 performs predetermined digital processing on the audio signal.
  • the feature amount extraction unit 2702 extracts the feature amount of the voice and outputs it to the GPU 2720.
  • the HMM score calculation unit 2703 receives the information of the voice feature amount and calculates the score of each HMM state using the acoustic model 2731 in the GPU memory 2730. Then, the WFST search unit 2704 receives the HMM state score, and uses the small graph (smaller WFST model) 2732 in the GPU memory 2730 and the large graph (larger WFST model) 2741 on the SSD 2740 to perform on-the-fly synthesis. Search processing is performed by.
  • the large graph (larger WFST model) 2741 on SSD2740 is an arc array.
  • the WFST search unit 2704 can utilize the arc index and the input label array stored as the WFST model (large) access data 2734 in the GPU memory 2730 to access the arc array in the SSD 2740 at high speed (same as above). ).
  • the WFST search unit 2704 When the WFST search unit 2704 performs the WFST search process, the arc model once read from the SSD 2740 is stored in page units in the language model arc cache 2733 in the GPU memory 2730. Further, in the work area 2735 in the GPU memory 2730, data such as a token at the time of WFST search is temporarily stored.
  • the WFST search unit 2704 performs the WFST search process
  • the arc pre-reading process is performed in parallel.
  • the WFST search unit 2704 inputs a page access pattern into the language model access pattern model 2736 in the GPU memory 2730. Then, the WFST search unit 2704 reads the page, which is output from the language model access pattern model 2736 and is likely to be accessed next, from the WFST model (large) 2741 in the SSD 2740, and the language model in the GPU memory 2730. Write to arc cache 2733.
  • the CPU 2710 and the GPU 2720 repeat the signal processing or the WFST search processing until there is no input of voice data from the voice input unit 2751 (in other words, until the end of the utterance). Then, when there is no input of voice data, the WFST search unit 2704 in the GPU 2720 outputs the recognition result extracted from the likely hypothesis to the recognition result output unit 2705 on the CPU 2710 side. Then, the recognition result output unit 2705 performs a process for displaying or outputting the recognition result from the output unit 2752 including a display, a speaker, or the like.
  • FIG. 28 shows, in the form of a flowchart, the overall processing procedure of speech recognition executed by the speech recognition system 2700 shown in FIG.
  • the voice data after digital processing by the signal processing unit 2701 is divided into, for example, every 10 milliseconds and is input to the feature amount extraction unit 2702. Will be done.
  • the feature amount extraction unit 2702 extracts the feature amount of the sound based on the sound data after being digitally processed by the signal processing unit 2701, using a known technique such as Fourier transform or mel filter bank (step S2802). ..
  • a known technique such as Fourier transform or mel filter bank.
  • the HMM score calculation unit 273 receives the information of the feature amount of the voice and calculates the score of each HMM state using the acoustic model 2731 in the GPU memory 2730 (step S2804).
  • the WFST search unit 2704 receives the HMM state score, and the small graph (smaller WFST model) 2732 on the GPU memory 2730, the language model arc cache 2733, and the large graph (larger WFST model) on the SSD 2740. ) 2741 is used to perform search processing by on-the-fly synthesis (step S2805).
  • step S2805 the WFST search unit 2704 first transitions tokens in a small graph.
  • the word is output from the small graph in the transition
  • the ID of the source state (state before the transition) and the input label are input
  • the arc information of the large graph is acquired from the language model arc cache 2733, Perform token transition of large graph.
  • the large graph (larger WFST model) 2741 on the SSD 2740 is searched to read the target arc.
  • the WFST search unit 2704 may search the large graph (larger WFST model) 2741 according to the processing procedure shown in FIGS. 25 and 26, for example, and may perform pre-reading of arcs in parallel. Then, the WFST search unit 2704, after transitioning all the hypotheses, prunes the hypotheses as a whole.
  • step S2801 Until the end of the input voice is reached (Yes in step S2801), for example, the processes of steps S2802 to S2805 are repeatedly performed on the voice data divided every 10 milliseconds.
  • step S2801 the character string of the voice recognition result by the WFST search unit 2704 is copied from the work area 2735 on the GPU memory 2730 to the main memory on the CPU 2710 side (step). S2806).
  • the recognition result output processing unit 2705 on the CPU 2710 side executes a process for displaying or outputting the recognition result from the output unit 2752 including a display and a speaker (step S2807).
  • processing is performed by arranging the WFST data divided into two in the memory and the disk and performing on-the-fly synthesis, thereby arranging all the WFST data in the disk.
  • Real-time processing can be realized while suppressing an increase in time. This brings the following advantages.
  • a large-scale graph search can be executed in a system with a limited memory capacity.
  • B Even if the WFST model is placed on the disk, the graph search process can be executed at high speed.
  • C A larger WFST model can be used with the same memory usage.
  • a voice agent that performs on/off of a television, channel selection and volume adjustment, change of temperature setting of a refrigerator, on/off of home electric appliances such as lights and air conditioners, and adjustment operations.
  • the voice agent can also reply by voice when asked about weather forecasts, stock/exchange information, news, accept product orders, and read the contents of purchased books.
  • the agent function is provided, for example, by linking an agent device installed around the user at home or the like with an agent service built on the cloud (see, for example, Patent Document 2).
  • the agent device mainly provides a user interface such as a voice input for receiving a voice spoken by a user and a voice output for answering an inquiry from the user by voice.
  • the agent service side performs recognition and semantic analysis of the voice input by the agent device. Further, the agent service side may also execute a process with a high load such as a process such as information retrieval in response to a user inquiry and a voice synthesis based on the process result.
  • FIG. 12 shows a functional configuration example of an agent system 1200 including a voice recognition system to which the technology according to the present disclosure is applied.
  • the agent system 1200 includes an agent device 1201 and an agent service 1202.
  • the agent device 1201 is installed around the user, for example, in the home.
  • the agent device 1201 includes a TV 1211, a refrigerator 1212, an LED (Light Emitting Diode) lighting 1213 via a wired LAN (Local Area Network) such as Ethernet (registered trademark) or a wireless LAN such as Wi-Fi (registered trademark). , Interconnected with various home appliances.
  • the agent device 1201 includes an audio input unit such as a microphone and an output unit such as a speaker and a display.
  • the agent service 1202 includes a voice recognition system 1204 and a semantic analysis unit 1203.
  • the voice recognition system 1204 is assumed to have the functional configuration shown in any one of FIG. 4, FIG. 9, FIG. 19, FIG. 24, and FIG. 27, and the detailed description thereof will be omitted here.
  • the agent service 1202 is configured as a server on the cloud, for example.
  • the agent device 1201 and the agent service 1202 are interconnected via a wide area network such as the Internet.
  • a system configuration in which the function of the agent service 1202 is incorporated in the agent device 1201 is also possible.
  • the agent device 1201 transmits a voice signal obtained by picking up a voice command uttered by the user to the agent service 1202.
  • Voice commands also include instructions for home appliances such as "turn on the TV,” “tell me what's in the refrigerator,” and “turn off the lights.”
  • the voice recognition signal received by the voice recognition system 1204 is output as the text of the recognition result by the voice recognition process using on-the-fly synthesis. Then, the semantic analysis unit 1203 performs semantic analysis on the text of the recognition result, and returns the semantic analysis result to the agent device 1201.
  • the result of the semantic analysis of the user's voice command includes operation commands for each home appliance such as turning on/off the television 1211, tuning and adjusting the volume, changing the temperature setting of the refrigerator 1212, turning on/off the LED lighting 1213 and adjusting the light amount.
  • the agent device 1201 Based on the result of the semantic analysis received from the agent service 1202, the agent device 1201 has operation signals for turning on/off the television 1211 and tuning and adjusting the volume, operation signals for changing the temperature setting for the refrigerator 1212, turning on/off the LED lighting 1213, and the amount of light. Operation signals such as adjustment are transmitted via the home network.
  • the embodiment applied to the WFST for voice recognition has been mainly described as an example of the graph search, but the application of the technology according to the present disclosure is not limited to this, and other similar processing is performed.
  • the technique according to the present disclosure can be applied to the graph search process of.
  • the technique described as the first embodiment can be similarly applied to various cases in which the graph search processing capable of on-the-fly synthesis is applied to the hybrid environment of the CPU and the GPU.
  • the technique described as the second embodiment is applied not only to the combination of the main storage device and the auxiliary storage device, but also to the combination of any storage device having different access performance or capacity such as the combination of the GPU memory and the auxiliary storage device. Can be applied to
  • the application target of the technology according to the present disclosure is not limited to the graph search processing of the GPU and the speech recognition, and the GPU is a many-core arithmetic unit having a limited memory capacity (having a memory capacity smaller than the graph size).
  • the graph search process for replacement and voice recognition can be replaced with a general graph search process.
  • the WFST voice recognition system to which the technology according to the present disclosure is applied can be installed in various types of information processing devices or information terminals such as personal computers, smartphones, tablets, and voice agents.
  • a calculation unit, a first storage device, and a second storage device are provided.
  • the graph information is divided into first graph information and second graph information, Arranging the first graph information in the first storage device, Arranging the second graph information in the second storage device,
  • the arithmetic unit performs a graph search process using the first graph information arranged in the first storage device and the second graph information arranged in the second storage device, Information processing device.
  • the size of the first graph information is smaller than that of the second graph information.
  • the first storage device has a smaller capacity than the second storage device, The information processing device according to (1) above.
  • the graph information is a WFST model expressing an acoustic model, a pronunciation dictionary, and a language model in speech recognition
  • the first graph is the smaller WFST model obtained by dividing the WFST model into two large and small ones
  • the second graph is the larger WFST model.
  • the small WFST model obtained by dividing the language model into two large and small ones and synthesizing the smaller language model considering the connection of words less than the first number with the acoustic model and the pronunciation dictionary is used as the first graph information.
  • a large WFST model consisting of a language model considering the connection of an arbitrary number of words larger than the first number is used as the second graph information.
  • the calculation unit when it is necessary to refer to the second graph information while executing the search process using the first graph information, a necessary part of the second graph information. Is copied from the second storage device to the first storage device, and the search process is continued.
  • the information processing apparatus according to any one of (1) to (4) above.
  • the computing unit includes a first computing unit including a GPU or other many-core computing unit and a second computing unit including a CPU,
  • the first storage device is a memory in the GPU, and the second storage device is a local memory of the CPU.
  • the graph information is a WFST model
  • the first arithmetic unit transitions tokens with a small WFST model, but when a word is output from the transitioned arc and it becomes necessary to perform a state transition of the token of a large WFST model, it is necessary for processing.
  • the information processing device according to (6) above.
  • the first arithmetic unit previously calculates a position on the second storage device in which a necessary arc is arranged in the second graph, The information processing device according to (6) above.
  • the list of the necessary position information of the arc calculated in advance by the first arithmetic unit is transmitted to the second arithmetic unit,
  • the second operation unit copies an arc, which is required during the graph search by the first operation unit, from the second storage device to the first storage device based on the list.
  • the first storage device includes a cache that holds the second graph information.
  • the information processing device according to (1) above.
  • the cache has a data structure that takes the identification information of the source state and the input label as inputs and returns an arc.
  • the information processing device according to (11) above.
  • the feature amount extraction for calculating the feature amount of the input voice is executed, and the feature amount extraction is executed.
  • the first storage device is a local memory of the arithmetic unit
  • the second storage device is an auxiliary storage device
  • the calculation unit transitions tokens with a small WFST model, but when a word is output from the transitioned arc and it becomes necessary to perform a state transition of the token of a large WFST model, the data necessary for processing is input.
  • the search process is performed while copying from the second storage device to the first storage device.
  • the arithmetic unit is composed of a CPU or a GPU, The information processing apparatus according to (15) above.
  • the calculation unit includes feature amount extraction for calculating the feature amount of the input voice, HMM score calculation for calculating the HMM state score from the feature amount, and the first graph information arranged in the first storage device. Executing a search process by on-the-fly synthesis using the second graph information arranged in the second storage device, The information processing apparatus according to (15) above.
  • the first storage device holds data for accessing the larger WFST model in the second storage device,
  • the arithmetic unit copies data necessary for processing from the second storage device to the first storage device based on the access data.
  • the larger WFST model consists of an arc array in which arcs are sorted by the state ID of the source state and the input label
  • the first storage device has, as the access data, an arc index for storing a start position of an arc in each state on the arc array and an input label corresponding to the arc on the arc array, which is the same as the arc array. Equipped with an input label array to store in an array, The calculation unit specifies the start position on the arc array of the state ID of the source state of the target arc by the arc index, and searches the input label of the target arc from the element at the start position on the input label array. Thereby, the position where the target arc is stored on the arc array is specified, and the data of the target arc is acquired from the arc array of the second storage device.
  • the information processing device according to (16).
  • the larger WFST model consists of an arc array in which arcs are sorted by the state ID of the source state and the input label
  • the first storage device stores, as the access data, an arc index that stores a start position of an arc in each state on the arc array, a division of the arc array for each page, and a head of the arc array of each page.
  • the calculation unit calculates a page range in which a target arc exists based on the arc index, identifies a page in which the target arc exists from the page range based on the input label array, and Acquiring the specified page from the arc array of the second storage device,
  • the information processing device according to (16).
  • an information processing device including a calculation unit, a first storage device, and a second storage device, A step of arranging the first graph information obtained by dividing the graph information in the first storage device, and A step of arranging the second graph information obtained by dividing the graph information in the second storage device, and A step in which the arithmetic unit executes a graph search process using the first graph information arranged in the first storage device and the second graph information arranged in the second storage device;
  • An information processing method including.
  • the graph information is divided into the first graph information and the second graph information.
  • the first graph information is arranged in the first memory of the first calculation unit, and the first graph information is arranged in the first memory.
  • the second graph information is arranged in the second memory of the second calculation unit, and the second graph information is arranged in the second memory.
  • the first arithmetic unit performs a graph search process using the first graph information arranged in the first memory and the second graph information arranged in the second memory.
  • the size of the first graph information is smaller than that of the second graph information.
  • the first memory has a smaller capacity than the second memory, The information processing device according to (101).
  • the first arithmetic unit is a GPU or other many-core arithmetic unit
  • the second arithmetic unit is a CPU.
  • the information processing apparatus according to any of (101) and (102) above.
  • the graph information is a WFST model expressing an acoustic model, a pronunciation dictionary, and a language model in speech recognition
  • the first graph is the smaller WFST model obtained by dividing the WFST model into two large and small ones
  • the second graph is the larger WFST model.
  • the first graph shows the smaller WFST model obtained by dividing the language model into two large and small ones and synthesizing the smaller language model considering the connection of words less than the first number with the acoustic model and the pronunciation dictionary.
  • the larger WFST model composed of a language model considering the connection of an arbitrary number of words larger than the first number is used as the second graph information.
  • the information processing device according to (104).
  • the graph information is a WFST model
  • the token is transitioned by the small WFST model, but when a word is output from the transitioned arc and it becomes necessary to perform the state transition of the token of the large WFST model, the data required for processing is transferred from the second memory. While copying to the first memory for copying, the first arithmetic unit performs all search processing.
  • the information processing apparatus according to (106) above.
  • the first arithmetic unit previously calculates a position on the second memory in which a necessary arc is arranged in the second graph,
  • the information processing apparatus according to any of (101) to (107).
  • the first memory includes a cache that holds the second graph information.
  • the information processing apparatus according to any of (101) to (110).
  • the cache has a data structure that takes the source state identification information and the input label as inputs and returns an arc.
  • the information processing device according to (111) above.
  • the feature amount extraction for calculating the feature amount of the input voice is executed, and the feature amount extraction is executed.
  • the information processing device according to any one of (101) to (112).
  • the second arithmetic unit further executes a process for outputting a voice recognition result obtained by the search process executed by the first arithmetic unit, The information processing device according to (113).
  • At least one of a voice input unit for inputting voice and an output unit for outputting voice recognition result is further provided.
  • WFST search unit 2405 Recognition result output Department, 2410 ... RAM 2411... acoustic model, 2412... WFST model (small) 2413... Language model arc cache 2414... WFST model (large) access data 2415... Work area, 2416... Language model access pattern model 2420... SSD, 2421... WFST model (large) 2431 ... Voice input unit, 2432 ... Output unit 2700 ... Voice recognition system, 2701 ... Signal processing unit 2702 ... Feature amount extraction unit, 2703 ... HMM score calculation unit 2704 ... WFST search unit, 2705 ... Recognition result output unit 2710 ... CPU, 2720... GPU, 2730... GPU memory 2731... Acoustic model, 2732... WFST model (small) 2733... Language model arc cache 2734... WFST model (large) access data 2735... Work area, 2736... Language model access pattern model 2740... SSD, 2741... WFST model (large) 2751... Voice input section, 2752... Output section

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

巨大なサイズのグラフ探索処理を実施する情報処理装置を提供する。 情報処理装置は、演算部と、第1の記憶装置と、第2の記憶装置を具備し、グラフ情報を第1のグラフ情報と第2のグラフ情報に2分割し、前記第1のグラフ情報を前記第1の記憶装置に配置し、前記第2のグラフ情報を前記第2の記憶装置に配置し、前記演算部が、前記第1の記憶装置に配置された前記第1のグラフ情報及び前記第2の記憶装置に配置された第2のグラフ情報を用いてグラフ探索処理を実施する。前記第1のグラフ情報は前記第2のグラフ情報よりも小サイズで、前記第1の記憶装置は前記第2の記憶装置よりも小容量である。

Description

情報処理装置及び情報処理方法
 本明細書で開示(以下、「本開示」とする)する技術は、グラフ探索処理を実施する情報処理装置及び情報処理方法に関する。
 音声認識では入力音声がどのようなテキスト文字列であったかを計算するために、WFST(Weighted Finite State Transducer:重み付き有限状態トランスデューサ)と呼ばれる有限オートマトンの一種が使われることがある。WFSTのモデルは、学習用に集めたテキストデータやコーパス(テキストと発話を大規模に集めてデータベース化した言語資料)から作られる。入力音声に対して尤も確からしいテキスト文字列を探すために、WFSTモデルの探索処理(以下、本明細書では「WFST探索」とも呼ぶ)が実施される。
 WFST探索は、一種のグラフ探索処理である。探索を高速に行うために、実行時にWFSTをすべて主記憶装置にロードするのが一般的である(ここで言う主記憶装置は、CPUのローカルメモリ(又は、メインメモリ)に相当し、以下では単に「メモリ」とも呼ぶ)。しかしながら、大語彙に対応したWFSTはサイズが数十GB~数百GB程度になり、メモリ容量の大きなシステムでないとWFTS探索を動作させることができない。メモリの代わりにHDD(Hard Disc Drive)やSSD(Solid State Drive)といった補助記憶装置(以下では、単に「ディスク」とも呼ぶ)にWFSTを配置すると、メモリの使用量を削減することができる。しかしながら、ディスクはメモリに比べてアクセス速度やスループットの性能が低いため、WFTS探索に係る時間が大幅に長くなってしまう。
 また、WFST探索を高速化するために、GPU(Graphics Processing Unit)などの、多数のコアで構成されてタスクを並列実行することができるメニーコア演算器が使われるケースがある(例えば、特許文献1を参照のこと)。ところが、GPUなどのメニーコア演算器は、一般的に、メモリ容量が限られている。
特開2015-529350号公報 特表2017-527844号公報
Mohri,M.,Pereira,F. and Riley,M.: Weighted Finite-State Transducers in Speech Recognition,Computer Speech and Language,Vol.16,No.1,pp.69-88(2002) H.J.G.A.Dolfing,I.L.Hetherington,"Incremental language models for speech recognition using finite-state transducers," Proc. of ASRU2001 D.Willett,S.Katagiri,"Recent advances in efficient decoding combining on-line transducer composition and smoothed language model incorporation," Proc. of ICASSP2002,Vol.I, pp.713-716 D.Willett,E.McDermott,Y.Minami,and S.Katagiri,"Time and Memory Efficient Viterbi Decoding for LVCSR Using a Precompiled Search Network," Proc.of EUROSPEECH 2001-7th European Conference on Speech Communication and Technology P.R.Dixon,D.A.Caseiro,T.Oonishi,and S.Furui,"The Titech Large Vocabulary WFST Speech Recognition System," 2007 IEEE Workshop on Automatic Speech Recognition & Understanding (ASRU)
 本開示に係る技術の目的は、巨大なサイズのグラフ探索処理を実施する情報処理装置及び情報処理方法を提供することにある。
 本開示に係る技術の第1の側面は、
 演算部と、第1の記憶装置と、第2の記憶装置を具備し、
 グラフ情報を第1のグラフ情報と第2のグラフ情報に2分割し、
 前記第1のグラフ情報を前記第1の記憶装置に配置し、
 前記第2のグラフ情報を前記第2の記憶装置に配置し、
 前記演算部が、前記第1の記憶装置に配置された前記第1のグラフ情報及び前記第2の記憶装置に配置された第2のグラフ情報を用いてグラフ探索処理を実施する、情報処理装置である。
 前記グラフ情報は、具体的には、音声認識において音響モデル、発音辞書及び言語モデルを表現したWFSTモデルである。そして、言語モデルを大小2つに分割し、第1の個数以下の単語のつながりを考慮した小さい方の言語モデルを音響モデル及び発音辞書と合成した小さいWFSTモデルを前記第1のグラフ情報とし、前記第1の個数より多い任意の個数の単語のつながりを考慮した言語モデルからなる大きいWFSTモデルを前記第2のグラフ情報とする。
 前記演算部は、前記第1のグラフ情報を用いて探索処理を実行中に前記第2のグラフ情報の参照が必要になったときに、前記第2のグラフ情報のうち必要な部分を前記第2の記憶装置から前記第1の記憶装置へコピーして、前記探索処理を継続させる。
 前記演算部は、GPU(Graphics Processing Unit)又はその他のメニーコア演算器からなる第1の演算部と、CPU(Central Processing Unit)からなる第2の演算部を含み、前記第1の記憶装置は前記GPU内のメモリであり、前記第2の記憶装置は前記CPUのローカルメモリである。そして、前記第1の演算部は、小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルのトークンの状態遷移を行う必要が発生したときに、処理に必要なデータを前記第2の記憶装置から前記第1の記憶装置へコピーにコピーしながら、前記第1の演算部がすべての探索処理を行う。
 または、前記演算部は、CPU又はGPUからなり、前記第1の記憶装置は前記演算部のローカルメモリであり、前記第2の記憶装置は補助記憶装置である。そして、前記演算部は、小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルのトークンの状態遷移を行う必要が発生したときに、処理に必要なデータを前記第2の記憶装置から前記第1の記憶装置へコピーしながら、前記探索処理を行う。
 大きい方のWFSTモデルは、アークをソースの状態の状態IDと入力ラベルでソートしたアーク配列からなり、前記第1の記憶装置は、前記アクセス用データとして、各状態のアークの前記アーク配列上の開始位置を格納するアークインデックスと、前記アーク配列上のアークに対応する入力ラベルを前記アーク配列と同じ配列で格納する入力ラベル配列を備えている。そして、前記演算部は、前記アークインデックスで目的のアークのソース状態の状態IDのアーク配列上の開始位置を特定し、前記入力ラベル配列上の前記開始位置の要素から目的のアークの入力ラベルを検索することによって、前記アーク配列上の目的のアークが格納されている位置を特定して、前記第2の記憶装置の前記アーク配列から目的のアークのデータを取得する。
 また、本開示に係る技術の第2の側面は、演算部と、第1の記憶装置と、第2の記憶装置を具備する情報処理装置において、
 グラフ情報を分割した第1のグラフ情報を第1の記憶装置に配置するステップと、
 前記グラフ情報を分割した第2のグラフ情報を第2の記憶装置に配置するステップと、
 前記演算部が、前記第1の記憶装置に配置された前記第1のグラフ情報及び前記第2の記憶装置に配置された第2のグラフ情報を用いてグラフ探索処理を実行するステップと、
を有する情報処理方法である。
 本開示に係る技術によれば、巨大なサイズのグラフ情報を2分割して2つの記憶領域にそれぞれ配置して、グラフ探索を省メモリ且つ高速に実施する情報処理装置及び情報処理方法を提供することができる。
 なお、本明細書に記載された効果は、あくまでも例示であり、本開示に係る技術によりもたらされる効果はこれに限定されるものではない。また、本開示に係る技術が、上記の効果以外に、さらに付加的な効果を奏する場合もある。
 本開示に係る技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
図1は、音声認識システム100の構成例を示した図である。 図2は、WFSTモデルを分割する例を示した図である。 図3は、音声認識システム300(第1の実施例)の概略的な構成例を示した図である。 図4は、音声認識システム300の具体的な構成例を示した図である。 図5は、音声認識システム300で実行される音声認識の全体的な処理手順を示したフローチャートである。 図6は、グラフ探索処理の詳細な処理手順を示したフローチャートである。 図7は、必要なアークの情報をGPU320からCPU310に送り、CPU310側がデバイスメモリ321へのコピーを行う方法を説明するための図である。 図8は、大グラフのアークをGPU320側のデバイスメモリ321上にキャッシュする仕組みを示した図である。 図9は、大グラフのキャッシュを備えた音声認識システム300の構成例を示した図である。 図10は、図9に示した音声認識システム300で実行される音声認識の全体的な処理手順を示したフローチャートである。 図11は、グラフ探索処理の詳細な処理手順を示したフローチャートである。 図12は、エージェントシステム1200の機能的構成例を示した図である。 図13は、状態からアークが伸びる様子を示した図である。 図14は、言語モデルWFSTの入出力の関係を示した図である。 図15は、音声認識システム1500(第2の実施例)の概略的な構成例を示した図である。 図16は、アークを探索するためのデータをメモリに配置した音声認識システム1500の構成例を示した図である。 図17は、WFST(大)アクセス用データの構成例を示した図である。 図18は、WFST(大)アクセス用データの他の構成例を示した図である。 図19は、音声認識システム1500の具体的な機能的構成例を示した図である。 図20は、音声認識システム1500で実行される音声認識の全体的な処理手順を示したフローチャートである。 図21は、WFST探索処理の詳細な処理手順の一例を示したフローチャートである。 図22は、WFST探索処理の詳細な処理手順の他の例を示したフローチャートである。 図23は、アーク配列上で目的のアークが配置されているページを特定するための処理手順を示したフローチャートである。 図24は、アークの事前読み込み機能を持つ音声認識システム1500の具体的な機能的構成例を示した図である。 図25は、図24に示した音声認識システム1500におけるWFST探索処理の詳細な処理手順を示したフローチャートである。 図26は、図24に示した音声認識システム1500におけるWFST探索処理の詳細な処理手順を示したフローチャートである。 図27は、音声認識システム2700の具体的な機能的構成例を示した図である。 図28は、音声認識システム2700で実行される音声認識の全体的な処理手順を示したフローチャートを示した図である。
 以下、図面を参照しながら本開示に係る技術の実施形態について詳細に説明する。
A.音声認識システム
 図1には、音声認識システム100の概略的な機能構成例を示している。図示の音声認識システム100は、特徴量抽出部101と、DNN(Deep Neural Network)計算部102と、WFST探索部103を備えている。なお、すべての音声認識システムが図1のように構成される訳ではなく、別の構成も存在し得るという点に留意されたい。
 特徴量抽出部101には、マイクロホン(図示しない)などの音声入力部から、例えば10ミリ秒単位の音声データが入力される。特徴量抽出部101は、入力された音声データに対してフーリエ変換を適用したり、メルフィルタバンクなどを用いたりして、音声の特徴量を計算する。特徴量抽出部101の所要処理時間は、例えば1ミリ秒未満である。
 DNN計算部102は、特徴量抽出部101で抽出された特徴量に対して事前学習済みのDNNモデルを使って、HMM(Hidden Markov Model:隠れマルコフモデル)の各状態に対応するスコア(尤度)を計算する。DNN計算部102の所要処理時間は、例えば1ミリ秒程度である。
 WFST探索部103は、DNN計算部103で算出されたHMM状態スコアに対して事前学習済みのWFSTモデルを使って、尤も確からしい認識結果文字列を計算して、認識結果のテキストを出力する。WFST探索部103所要処理時間は、例えば1~30ミリ秒程度である。
B.音声認識におけるWFST
 WFSTは、アークに入力シンボル、出力シンボル及び重み(遷移確率)の情報が付いている有限状態マシンである。一般に、音声認識システムは、音素と音響的特徴を表す音響モデルと、個々の単語の発音を表す発音辞書と、文法規則や単語の連鎖する確率を与える言語モデルで構成される。音響モデルとして用いられているHMMの状態遷移や、発音辞書、及び言語モデルとして用いられるN-gramモデルを、それぞれWFSTモデルで表現することができる。さらに、これら音響モデル、発音辞書、及び言語モデルそれぞれのWFSTを数学的に定義された合成演算を用いて1つの巨大なWFSTにまとめて音声認識処理を行う(例えば、非特許文献1を参照のこと)。
 音響モデルのWFSTは入力シンボルがHMM状態、出力シンボルは音素となっており、発音辞書のWFSTは入力シンボルが音素、出力シンボルが単語となっており、言語モデルのWFSTは入力シンボル及び出力シンボルともに単語となっている。言語モデルは、単語同士の繋がりの遷移確率を表現するのに使用される。音響モデル、発音辞書、及び言語モデルの各WFSTを合成した後のWFSTは、例えば、単語の中に音素列、音素の中にHMMが埋め込まれたネットワークとして構成される。また、合成後のWFSTは、入力シンボルがHMM状態で、出力シンボルが単語ということになる。このようにして、音声認識処理はネットワーク探索問題に帰着される。
 基本的には、語彙数(+考慮する単語の繋がり数)が大きくなるほど、WFSTのサイズは大きくなる。特に言語モデルは、語彙数のべき乗でサイズが増大する。語彙数の百万語を超える大語彙では、WFSTの状態(ノード)数並びにアーク(エッジ)数はそれぞれ数十億個まで増え、サイズは数十GBになる(例えば、状態数12億、アーク数43億、WFSTサイズ50GB(圧縮して12GB)である)。
 WFST探索部103は、音響モデル、発音辞書、及び言語モデルの各WFSTを合成したWFSTすなわちネットワーク内で、入力音声信号に最も適合する経路(最適状態遷移過程)を探索して、入力された音声信号に対して音響的及び言語的に適合する単語列にデコードすることになる。WFST探索部103に、最適な単語列を高速に探し出すことが求められる。
C.WFST探索の手順
 WFST探索の手順は、例えば以下の通りである。
(手順1)状態遷移の履歴と重みの累積の情報を持ったトークン(Token)と呼ばれるオブジェクト(認識結果の仮説に対応する)を、WFSTの初期状態に置く。初期状態はWFSTによってあらかじめ決められている。
(手順2)入力データ(HMM状態スコア)が入ってきたタイミングで、WFST上のトークンを1つのアーク分だけ遷移させる。このとき、アークの入力ラベルに対応するHMM状態の尤度(スコア)とアークの重みとトークンが持つ重みの累積を掛け合わせて、新しい重みの累積とする。HMM状態の尤度が入力音声に起因する確率で、アークの重みが事前学習したWFSTモデルに起因する確率となり、尤も確からしい仮説が選ばれていく。
(手順3)同じ状態に到達したトークンがあった場合、最も確率の高いトークンだけを残し、その他のトークンは破棄する。演算量を削減するためである。
(手順4)最も確率が高いトークンよりも確率がビーム幅(設定値)以上低いトークンは破棄する。演算量を削減するためである。
(手順5)入力データが無くなるまで(音声入力が終わるまで)、手順2~手順4を繰り返し実行する。
(手順6)最も確率の高いトークンの状態遷移の履歴を辿り、アークの出力シンボルを並べたものが認識結果の文字列となる。
D.WFSTの分割とオンザフライ合成
 音声認識において、音響モデル、発音辞書、及び言語モデルそれぞれのWFSTをすべて合成して1つのWFSTを作成する場合(前述)、状態数とアーク数は乗算で増加する。このため、合成前のモデルが比較的大きいと、合成後のモデルは膨大なサイズになってしまう。特に言語モデルは、語彙数のべき乗でサイズが増大する(例えば、A→B→Cの順で単語が出現した後に、Dという単語が出現する確率をモデル化した場合、言語モデルはこれら4個の単語のつながりを考慮していることになり、これを4-gramと呼ぶ)。語彙数の百万語を超える大語彙では、WFSTの状態(ノード)数、アーク(エッジ)数は数十億個まで増え、サイズは数十GBになる。
 WFST探索処理では、高頻度でWFSTモデルの情報にアクセスするため、WFSTモデルをメモリ上に展開しないと、計算速度が極端に遅くなる。しかしながら、語彙数の増加に伴いWFSTモデルのサイズが大きくなりすぎると、メモリ容量が足りなくなってしまう。
 WFSTモデルのサイズが膨大であるという問題を解決するために、WFSTモデルを大小2つに分割して、音声認識の実行時に合成するオンザフライ合成という探索方法が挙げられる(例えば、非特許文献2、3を参照のこと)。WFSTモデルのサイズは、合成すると元の各WFSTモデルのサイズの乗算で増える。したがって、オンザフライ合成を行うことで、合計のWFSTモデルのサイズを削減し、つまり、探索処理時のメモリ使用量を大きく削減することができる。
 特にサイズが大きな言語モデルを大小2つに分割することによって、WFSTを2分割することがある。例えば、2つの単語のつながりを考慮した言語モデルを小さい方、4つの単語のつながりを考慮した言語モデルを大きい方にして、2つに分割する。そして、図2に示すように、音響モデルと発音辞書と小さい言語モデルを合成したものを小さいWFSTモデル、大きい言語モデルを大きいWFSTモデル(又は、言語モデルWFST)とする。例えば、小さいWFSTモデルは数GB程度、大きいWFSTモデルは数十GB程度となる。そして、必要に応じて大小2つのWFSTモデルを合成しながら、音声認識処理を実行することで、探索時に使用するメモリ容量を大幅に削減することができる。
 オンザフライ合成では、基本的には小さいWFSTモデルでトークンを遷移させていき、遷移したアークから単語が出力された場合のみ、大きいWFSTモデルのトークンの状態遷移を行う。大きいWFSTモデルは単語の繋がりを考慮する役割しかないため、単語が出力されたときのみ遷移する。大きいWFSTモデルの遷移確率をトークンに掛け合わせることで、小さいWFSTモデルには存在しない、長い単語の繋がりの確率を考慮することができる。
E.言語モデル
 音声認識では、言語モデルとしてN-gramが用いられることが多い。N-gramとは、単語同士が繋がる確率をN-1重のマルコフ過程で表したモデルである。語彙数がVの場合、N個の単語の繋がりはVN通り存在し、これをWFSTで表すにはVN個のアークが必要になる。このようなWFSTを作るのは非現実的であるため、実際にはすべての繋がりをモデル化することはしない。言語モデルWFSTは大量の文章から学習するが、例えば出現頻度が一定数以下の単語の繋がりはモデルから除かれる。もし探索中にモデル化されていない単語への繋がりが出現した場合、トークンはバックオフと呼ばれる状態に遷移する。バックオフ状態への遷移は低次な繋がりを考慮することと等しい。例えばA/B/C/Dという4単語の繋がりが出現したがモデル化されていないとき、バックオフ状態へ遷移し、B/C/Dという3単語の繋がりを考慮する(それでもモデル化されていないときには、次のバックオフ状態へ遷移し、C/Dという2単語の繋がりを考える)。
 言語モデルWFSTのアークの入力ラベルは単語である。言語モデルWFST上のトークンが遷移するときは、現在の状態から入力された単語(オンザフライ合成の場合、小さいWFSTで出力された単語)を持つアークを辿る。入力された単語を持つアークが存在しない場合、トークはバックオフ状態へ遷移し、そこから同様に入力された単語を持つアークを探索する。つまり、バックオフ状態に遷移する場合は、単一の入力で複数のアークを遷移する。
 図13には、状態「x」から、入力ラベル毎のアークが伸びている様子を示している。図示の例では、状態「x」から、入力ラベルとして単語「a」、「b」、「c」、「y」にそれぞれ対応するアークが伸びている。例えば、状態「x」で単語「y」が入力されると、入力ラベル「y」に対応したアークを探索することになる。
 図14には、言語モデルWFSTの入出力の関係を示している。言語モデルWFSTの入力は、状態IDとラベルであり、その出力はアークである。アークは、入力ラベルと出力ラベルと重みに、さらに遷移先の状態IDを加えた情報からなる。
 本開示に係る技術は、巨大なサイズのWFSTを2分割して、各々を2箇所の記憶領域に配置して、WFTS探索を省メモリ且つ高速に実現するものである。以下では、GPUのようなメニーコア演算器を用いてオンザフライ合成を実現する第1の実施例と、2分割したWFSTデータをメモリ及びディスクに配置してオンザフライ合成を実現する第2の実施例について、それぞれ説明する。さらに、第3の実施例として、本開示に係る大規模グラフの探索技術を適用した具体例について説明する。
F.ハイブリッド環境における音声認識処理
 WFSTモデルの探索処理を高速化するために、GPUなどのメニーコア演算器が使用されることがある(前述)。ところが、GPUなどのメニーコア演算器は、一般的に、メモリ容量が限られている。CPU(Central Processing Unit)からアクセスできるメインメモリは、数百GB(ギガバイト)まで、比較的容易に拡張することができる。他方、GPUに搭載されるメモリはせいぜい数GBから十数GB程度である。デバイスメモリの枯渇のため、WFSTモデルのサイズが数十GB以上になる大語彙音声認識の探索処理は、GPUなどのメニーコア演算器上で探索処理をすることが難しい。
 例えば、CPUとGPUをともに使用するハイブリッド環境でオンザフライ合成(前述)によるWFST探索を行うデータ処理方法について提案がなされている(特許文献1を参照のこと)。このデータ処理方法では、大小2つに分割したWFSTモデルのうち、小さい方のWFSTモデルを使った演算をGPUで、大きい方のWFSTモデルを使った演算をCPUで行っている。このようにすることで、小さい方のWFSTモデルはGPUのメモリ上に展開している一方で、大量のメモリを消費する大きいWFSTモデルをメインメモリに配置することによって、デバイスメモリが不足する問題を解決することができる。このデータ処理方法では、小さい方のWFSTモデルの状態遷移はGPU上で行われ、大きい方のWFSTモデルを使った尤度の補正はCPU上で行われる。
 ここで、後者の大きい方のWFSTモデルを使った尤度補正では、ある状態から伸びる特定のアークを取得する処理(モデルのルックアップ)を行う。以下の表1には、大きい方のWFSTモデルのデータ構造を例示している。大きい方のWFSTモデルを使った処理では、State(状態ID)とLabel(単語ID)が入力されたときに、それに対応するArc(アーク)の位置を探し、参照する(図13を参照のこと)。また、対応するアークが存在しない場合もあり、そのときはバックオフと呼ばれる状態へ遷移し、そのバックオフ状態から再び対応するアークを探す。アークの位置を探すために、例えば二分探索やハッシュマップが用いられる。
Figure JPOXMLDOC01-appb-T000001
 しかしながら、大きい方のWFSTモデルを使った演算の計算量は多い。したがって、小さい方のWFSTモデルの状態遷移はGPU上で実行しつつ、大きい方のWFSTモデルを使った尤度補正をCPUで実行すると、CPU側の演算がボトルネックになり、せっかくGPUを導入しても十分に性能(処理速度やスループット)が改善しないことが懸念される。
 大きい方のWFSTモデルを使った処理(二分探索やハッシュテーブルのルックアップなど)は、比較的演算量が大きい。このため、例えばGPUに比べてCPUの計算能力が極端に低いアーキテクチャでは、小さい方のWFSTモデルを使った演算を行うGPU側の計算リソースに余裕があっても、CPU側の処理が追いつかず、音声認識処理の性能が頭打ちになってしまうことがある。
 CPUとGPUをともに使用するハイブリッド環境で、性能を最大限に引き出すには、CPUとGPUの各計算リソースをちょうど使い切られるようなシステムが用意する必要がある、と本出願人は思料する。このようなシステムを用意するには、特にCPU及びGPUの構成が限定されているクラウド環境では難しい。
 そこで、第1の実施例として、CPU側の演算量を極力削減して、どのようなシステムでもGPUの計算リソースをより有効に活用しながら、ハイブリッド環境でオンザフライ合成によるWFST探索を行うための技術について、以下で提案する。
 第1の実施例では、CPUとGPUを用いたハイブリッド環境下において、GPUで音声認識の大規模グラフの探索処理を実行することによって実現される。ここで言う大規模グラフは、具体的には、言語モデルを大小2つに分割した大きい方の言語モデル、すなわち言語モデルWFSTのことである。また、大規模とは、例えば数十GB以上の、デバイスメモリに展開できない程度のサイズを意味する。
 但し、本開示に係る技術の適用範囲は、GPU及び音声認識のグラフ探索処理に限定されるものではない。GPUはメモリ容量の限られた(グラフサイズより小さいメモリ容量を持つ)メニーコア演算器に置き換え、音声認識のグラフ探索処理は一般的なグラフ探索処理に置き換えることができる、という点を十分理解されたい。
F-1.システム構成
 図3には、第1の実施例として提案する技術を適用した音声認識システム300の構成例を概略的に示している。図示の音声認識システム300は、CPU310とGPU320を用いたハイブリッド環境を備えている。
 CPU310は、ローカルメモリとして比較的大容量(例えば数十GB程度)のメインメモリ311を備えている。一方、GPU320は、メニーコア演算器からなり、各コアの並列処理などによりWFSTなどのグラフ探索処理を高速で実行することができる。GPU320もローカルメモリ(ここでは、「デバイスメモリ」と呼ぶことにする)321を備えているが、メインクメモリと比較して容量は例えば数GB程度と小さい。
 但し、GPU320からも、メインメモリ311へアクセス可能である。メインメモリ311上のデータのデバイスメモリ321へのコピーは、CPU310が実施する。あるいは、GPU320が、DMA(Direct Memory Access)機能を用いて、メインメモリ311へ高速アクセスするようにしてもよい。
 音声認識システム300は、WFSTモデルを大小2つに分割して、音声認識の実行時に合成するオンザフライ合成を行う。まず、サイズが大きな言語モデルを大小2つに分割する。そして、2つの単語のつながりを考慮した小さい方の言語モデルを、音響モデル及び発音辞書と合成して、小さい方のWFSTモデルを作る。小さい方のWFSTモデル(小グラフ)は、比較的容量が小さいデバイスメモリ321に配置される。また、4つの単語のつながりを考慮した言語モデルが大きい方のWFSTモデルとなる。大きい方のWFSTモデル(大グラフ)は数十GB程度であり、メインメモリ311に配置される。
 特許文献1に開示されたデータ処理方法では、小さい方のWFSTモデルの状態遷移はGPU上で行われ、大きい方のWFSTモデルを使った尤度の補正はCPU上で行われる(前述)。これに対し、本実施形態に係る音声認識システム300では、WFSTモデルの探索処理はCPU310上では行わず、基本的にはGPU320でのみ実行する。
 GPU320は、基本的には小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルの状態遷移を行う必要が発生したときには、CPU310で探索処理を行わず、大きいWFSTモデルのうち処理に必要なデータ(具体的にはアークの入力ラベル、出力ラベル、重み、アークの遷移先の状態のID)の部分だけをメインメモリ311からデバイスメモリ321にコピーしながら、GPU320上ですべての探索処理を行う。このようにすると、CPU310上で行う処理は基本的にGPU320へのデータ転送とGPU320の制御だけとなる。したがって、GPU320の計算リソースを有効に活用することができるとともに、CPU310側の負荷を大きく減らすことにもなる。
 WFST探索処理をGPU320上で行うことにより得られる利点を挙げておく。
(利点1)より高速に処理できる:
 GPUのような大量のコアを持つ演算器を用いることで、複数の仮説(トークン)を並列して処理して、探索の処理時間を短縮化することができる。特に音声エージェントなどの音声認識サービスでは、ユーザへ素早くレスポンスするために速く処理することが重要である。
(利点2)より安価に多くの処理をできる:
 GPUを効率良く使うことができれば、CPUだけで処理を行うよりも安価に多くの処理をすることができる。(例えば、クラウドの仮想サーバでは、計算能力当たりの価格($/Flops(Floating-point Operations Per Second))は、GPUの方が安い。)より多くの処理ができるようになると、音声認識サービスを展開するときに、少ないサーバ台数(=安いコスト)で多くのリクエストを同時に処理できるようになる。
(利点3)CPUとGPUの処理バランスを調整できる:
 WFST探索の前段のDNN計算では、処理を高速に行うために、GPUがよく使われる。ところが、WFST探索をCPUで行っていると、CPUがボトルネックになり、GPUの計算リソースを使い切れず、無駄が生じることがある。これに対し、本実施形態によれば、WFST探索をGPUで実行することにより、CPUとGPUの処理量を調整することができるので、双方の計算リソースを使い切ることができる。また、1台の装置(サーバなど)でより多くの音声認識リクエストを処理することができるようになる。
 図4には、音声認識システム300のより具体的な機能構成例を示している。図3を参照しながら既に説明したように、音声認識システム300は、CPU310とGPU320を用いたハイブリッド環境を備えている。CPU310は、ローカルメモリとして比較的大容量(例えば数十GB程度)のメインメモリ311を備えている。一方、GPU320は、小容量のデバイスメモリ321を備えている。
 CPU310内には、信号処理部401と、特徴量抽出部402と、認識結果出力処理部405が配置される。一方、GPU320には、HMMスコア計算部403と、グラフ探索部404が配置される。参照番号401~405で示されるこれらの機能モジュールは、実際には、CPU310若しくはGPU320で実行されるソフトウェアプログラムであってもよい。
 音声入力部441は、マイクロホンなどからなり、音声信号を収音する。信号処理部401は、音声入力部441で受け付けた音声信号に対して所定のデジタル処理を施す。
 続いて、特徴量抽出部402は、例えばフーリエ変換やメルフィルタバンクなどの既知の技術を用いて、音声の特徴量を抽出する。図4に示すシステム構成例では、特徴量抽出部402はCPU310側に配置されているが、GPU320で実行するようにしてもよい。
 HMMスコア計算部403は、音声の特徴量の情報を受け取り、音響モデル431を使って、各HMM状態のスコアを計算する。HMMには、Gaussian Mixture Model(GMM)や、DNNが使用される。
 HMMスコア計算部403をGPU320に配置して、GPU320でHMMスコア計算を行なう場合には、図4に示すように、音響モデル431はGPUメモリ(デバイスメモリ)321内に配置される。但し、HMMスコア計算の処理はCPU310側で行うようにしてもよく、その場合は、音響モデル431はメインメモリ321上に配置されることになる。
 グラフ探索部404は、HMM状態スコアを受け取り、GPUメモリ(デバイスメモリ)321上の小グラフ(小さい方のWFSTモデル)432と、メインメモリ311上の大グラフ(大きい方のWFSTモデル)421を使って、オンザフライ合成による探索処理を行う。
 グラフ探索部404が探索処理で生成した認識結果の仮説リストなどの途中記録は、デバイスメモリ321上の作業領域433に一時保存される。なお、図4では省略したが、上記の途中記録は、メインメモリ311上の作業領域に保存されてもよいし、デバイスメモリ321及びメインメモリ311の両方に保存されてもよい。
 グラフ探索部404は、音声認識結果の文字列を最終的に出力する。この認識結果の文字列は、デバイスメモリ321上の作業領域433から、CPU310側の認識結果出力処理部405に送られる。認識結果出力処理部405は、ディスプレイやスピーカなどからなる出力部442から認識結果を表示又は出力するための処理を実施する。
 なお、音声認識システム300は、音声入力部441又は出力部442の少なくとも一方を含めた装置として構成されてもよい。あるいは、CPU310及びGPU320はクラウド上のサーバ内に搭載され、音声入力部441及び出力部442は音声エージェント装置として構成されてもよい(後述)。
F-2.システム動作
 図5には、図4に示した音声認識システム300で実行される音声認識の全体的な処理手順をフローチャートの形式で示している。
 音声入力部441に対して音声の入力があると(ステップS501のYes)、信号処理部401でデジタル処理後の音声データが、例えば10ミリ秒毎に区切られて、特徴量抽出部402に入力される。
 特徴量抽出部402は、信号処理部401でデジタル処理した後の音声データに基づいて、例えばフーリエ変換やメルフィルタバンクなどの既知の技術を用いて、音声の特徴量を抽出する(ステップS502)。図4に示したようにGPU320上でHMMスコア計算を行なう場合には、特徴量データをGPU320側のデバイスメモリ321にコピーして、HMMスコア計算部403に入力する(ステップS503)。
 続いて、HMMスコア計算部403は、音声の特徴量の情報を受け取り、音響モデル431を使って、各HMM状態のスコアを計算する(ステップS504)。
 続いて、グラフ探索部404は、HMM状態スコアを受け取り、GPUメモリ(デバイスメモリ)321上の小グラフ(小さい方のWFSTモデル)432と、メインメモリ311上の大グラフ(大きい方のWFSTモデル)421を使って、オンザフライ合成による探索処理を行う(ステップS505)。
 ステップS505では、グラフ探索部404は、まず小グラフでトークンを遷移させていく。その遷移で小グラフから単語が出力された場合には、大グラフのアークの情報をGPU320のデバイスメモリ321にコピーして、大グラフ上のトークンの遷移を行う。そして、グラフ探索部404は、すべての仮説を遷移させたら、全体で仮説の枝刈りを行う。但し、この処理の詳細については後述(図6を参照のこと)に譲る。
 入力音声の終端に到達するまでは(ステップS501のYes)、例えば10ミリ秒毎に区切られた音声データに対して、上記ステップS502~S505の処理が繰り返し実行される。
 また、入力音声の終端に到達すると(ステップS501のNo)、グラフ探索部404による音声認識結果の文字列が、デバイスメモリ321上の作業領域433から、CPU310側のメインメモリ311にコピーされる(ステップS506)。
 そして、認識結果出力処理部405は、ディスプレイやスピーカなどからなる出力部442から認識結果を表示又は出力するための処理を実施する(ステップS507)。
 図6には、図5に示したフローチャート中のステップS505で実行される、グラフ探索処理の詳細な処理手順をフローチャートの形式で示している。
 グラフ探索部404は、デバイスメモリ321上の小グラフ432(小さい方のWFSTモデル)でトークンを遷移させていく(ステップS601)。
 ここで、遷移したアークから単語が出力された場合には(ステップS602のYes)、大グラフ(大きいWFSTモデル)のトークンの状態遷移を行う。具体的には、グラフ探索部404は、必要となる大グラフのアークの情報を格納しているメインメモリ321上のアドレスを計算して、メインメモリ321上のそのアドレスから大グラフのアークの情報をGPU320側のデバイスメモリ321にコピーして(ステップS603)、デバイスメモリ321上で大グラフのトークンの遷移を行う(ステップS604)。そして、グラフ探索部404は、すべての仮説を遷移させたら、全体で仮説の枝刈りを行って(ステップS605)、本処理を終了する。また、遷移したアークから単語が出力さない場合も(ステップS602のNo)、グラフ探索部404は、全体で仮説の枝刈りを行って(ステップS605)、本処理を終了する。
F-3.グラフ間の連携
 図6に示したフローチャートからも分かるように、デバイスメモリ321上の小グラフを使ってGPU320上で(グラフ探索部404が)トークンの遷移を行っている際に、小グラフのアークから単語が出力されたときには、大グラフのアークの情報が必要になる。
 そこで、GPU320が、大グラフのうち必要なアークが配置されているメインメモリ311上の位置(アドレス情報)をあらかじめ計算しておくようにしてもよい。このようにすれば、GPU320が必要な大グラフのアークを要求してきたときに、CPU310が、二分探索やハッシュテーブルのルックアップといった、演算量の大きい大グラフの探索処理を実施する必要がなくなり、CPI310の負荷を削減することができる。
 大グラフのアークをメインメモリ311からデバイスメモリ320へコピーする方法として、CPU310とGPU320で単一の仮想メモリ空間を使う方法と、必要なアークの情報をGPU320からCPU310に送り、CPU310側でメインメモリ311からデバイスメモリ321にコピーを行う方法を挙げることができる。
 前者の単一の仮想メモリ空間を使う方法では、CPU310とGPU320で共通のページテーブルを持ち、GPU320側でデバイスメモリ321上にないページへのアクセスを参照した時点で、ページをメインメモリ311からデバイスメモリ321へ移動させる。例えば、米NVIDIA社が提供する汎用並列コンピューティングプラットフォームであるCUDA(登録商標)(Compute Unified Device Architecture)Unified Memory機能を使って、GPU320のドライバによってメインメモリ311からデバイスメモリ321へのページの移動を行うことができる。
 また、後者の、必要なアークの情報をGPU320からCPU310に送り、CPU310側がデバイスメモリ321へのコピーを行う方法では、GPU320側であらかじめ計算しておいた必要なアークの情報をGPU320からCPU310に送る場合には、GPU320側で計算した必要なアークの位置情報(例えば、メインメモリ311上のアークの配列のインデックスや、アークのアドレス)のリストを、CPU310に送る。そして、CPU310側では、受け取ったリストに基づいて、必要なアークをデバイスメモリ321にコピーする。
 図7には、後者の方法を図解している。まず、GPU320は、必要なアークのリストをCPU310側に送る。図示の例では、GPU310は、アークのリスト{1,5,7,11,19}とアークIDを、CPU310に送信している。そして、CPU310は、メインメモリ311に格納されている大グラフから、受信したリストに基づいて5つのアーク{1,5,7,11,19}を取り出して並べ、GPU320側に返送して、デバイスメモリ321にコピーする。
F-4.変形例
F-4-1.GPUメモリに大グラフのアークのキャッシュを備える変形例
 一般に、CPU310とGPU320間の通信は、通常のメモリアクセスよりもレイテンシが大きい。そこで、大グラフのアークをGPU320側のデバイスメモリ321上に保存(若しくは、キャッシュ)しておくことで、処理速度の改善を図る。音声認識におけるグラフ探索の性質上、大グラフ内で同じデータへの参照が続くことが多いので、この手法は有効であると本出願人は思料する。
 図8には、大グラフのアークをGPU320側のデバイスメモリ321上にキャッシュする仕組みを図解している。図示の例では、ソース状態(遷移する前の状態)のIDと入力ラベルを入力にとり、アークを返すようなデータ構造を、キャッシュとしてデバイスメモリ321上に持っておく。
 図9には、大グラフのキャッシュを備えた音声認識システム300の構成例を示している。
 CPU310内には、信号処理部401と、特徴量抽出部402と、認識結果出力処理部405が配置される。一方、GPU320には、HMMスコア計算部403と、グラフ探索部404が配置される。参照番号401~405で示されるこれらの機能モジュールは、実際には、CPU310若しくはGPU320で実行されるソフトウェアプログラムであってもよい。
 音声入力部441は、マイクロホンなどからなり、音声信号を収音する。信号処理部401は、音声入力部441で受け付けた音声信号に対して所定のデジタル処理を施す。特徴量抽出部402は、例えばフーリエ変換やメルフィルタバンクなどの既知の技術を用いて、音声の特徴量を抽出する。
 HMMスコア計算部403は、音声の特徴量の情報を受け取り、GPUメモリ(デバイスメモリ)321上の音響モデル431を使って、各HMM状態のスコアを計算する。HMMには、GMMやDNNが使用される。
 グラフ探索部404は、HMM状態スコアを受け取り、GPUメモリ(デバイスメモリ)321上の小グラフ(小さい方のWFSTモデル)432と、大グラフキャッシュ901、並びにメインメモリ311上の大グラフ(大きい方のWFSTモデル)421を使って、オンザフライ合成による探索処理を行う。
 グラフ探索部404は、まず小グラフでトークンを遷移させていく。その遷移で小グラフから単語が出力された場合には、ソース状態(遷移する前の状態)のIDと入力ラベルを入力にとり、大グラフのアークの情報を大グラフキャッシュ901から取得して、大グラフのトークンの遷移を行う。また、大グラフキャッシュ901でキャッシュミスが発生したときには、グラフ探索部404は、大グラフのアークの情報をGPU320のデバイスメモリ321にコピーするとともに、その大グラフのアークの情報を大グラフキャッシュ901内にキャッシュして、大グラフのトークンの遷移を行う。
 グラフ探索部404が探索処理で生成した認識結果の仮説リストなどの途中記録は、デバイスメモリ321上の作業領域433に一時保存される。そして、グラフ探索部404は、すべての仮説を遷移させたら、全体で仮説の枝刈りを行う。
 グラフ探索部404は、音声認識結果の文字列を最終的に出力する。この認識結果の文字列は、デバイスメモリ321上の作業領域433から、CPU310側の認識結果出力処理部405に送られる。認識結果出力処理部405は、ディスプレイやスピーカなどからなる出力部442から認識結果を表示又は出力するための処理を実施する。
 図10には、図9に示した音声認識システム300で実行される音声認識の全体的な処理手順をフローチャートの形式で示している。
 音声入力部441に対して音声の入力があると(ステップS1001のYes)、信号処理部401でデジタル処理後の音声データが、例えば10ミリ秒毎に区切られて、特徴量抽出部402に入力される。
 特徴量抽出部402は、信号処理部401でデジタル処理した後の音声データに基づいて、例えばフーリエ変換やメルフィルタバンクなどの既知の技術を用いて、音声の特徴量を抽出する(ステップS1002)。図9に示したようにGPU320上でHMMスコア計算を行なう場合には、特徴量データをGPU320側のデバイスメモリ321にコピーして、HMMスコア計算部403に入力する(ステップS1003)。
 続いて、HMMスコア計算部403は、音声の特徴量の情報を受け取り、音響モデル431を使って、各HMM状態のスコアを計算する(ステップS1004)。
 続いて、グラフ探索部404は、HMM状態スコアを受け取り、GPUメモリ(デバイスメモリ)321上の小グラフ(小さい方のWFSTモデル)432と、大グラフキャッシュ901、並びにメインメモリ311上の大グラフ(大きい方のWFSTモデル)421を使って、オンザフライ合成による探索処理を行う(ステップS1005)。
 ステップS1005では、グラフ探索部404は、まず小グラフでトークンを遷移させていく。その遷移で小グラフから単語が出力された場合には、ソース状態(遷移する前の状態)のIDと入力ラベルを入力にとり、大グラフのアークの情報を大グラフキャッシュ901から取得して、大グラフのトークンの遷移を行う。また、大グラフキャッシュ901でキャッシュミスが発生したときには、グラフ探索部404は、メインメモリ311上の大グラフ(大きい方のWFSTモデル)421を探索して、目的のアークを取得する。そして、すべての仮説を遷移させたら、グラフ探索部404は、全体で仮説の枝刈りを行う。但し、グラフ探索処理の詳細については後述(図11を参照のこと)に譲る。
 入力音声の終端に到達するまでは(ステップS1001のYes)、例えば10ミリ秒毎に区切られた音声データに対して、上記ステップS1002~S1005の処理が繰り返し実行される。
 また、入力音声の終端に到達すると(ステップS1001のNo)、グラフ探索部404による音声認識結果の文字列が、デバイスメモリ321上の作業領域433から、CPU310側のメインメモリ311にコピーされる(ステップS1006)。
 そして、認識結果出力処理部405は、ディスプレイやスピーカなどからなる出力部442から認識結果を表示又は出力するための処理を実施する(ステップS1007)。
 図11には、図10に示したフローチャート中のステップS1005で実行される、グラフ探索処理の詳細な処理手順をフローチャートの形式で示している。
 グラフ探索部404は、デバイスメモリ321上の小グラフ432(小さい方のWFSTモデル)でトークンを遷移させていく(ステップS1101)。
 ここで、遷移したアークから単語が出力された場合には(ステップS1102のYes)、ソース状態(遷移する前の状態)のIDと入力ラベルを入力にとり、所望する大グラフのアークの情報が大グラフキャッシュ901内にあるかどうかをチェックする(ステップS1103)。
 そして、所望する大グラフのアークの情報が大グラフキャッシュ901内にある場合、すなわちキャッシュヒットした場合には(ステップS1103のYes)、大グラフのアークの情報を大グラフキャッシュ901から取得して、大グラフ(大きいWFSTモデル)のトークンの状態遷移を行う(ステップS1104)。
 また、大グラフキャッシュ901がキャッシュミスした場合には(ステップS1103のNo)、グラフ探索部404は、必要となる大グラフのアークの情報を格納しているメインメモリ321上のアドレスを計算して、メインメモリ321上のそのアドレスから大グラフのアークの情報をGPU320側のデバイスメモリ321内の小グラフ432にコピーするとともに(ステップS1106)、その大グラフのアークの情報を大グラフキャッシュ901内にキャッシュして(ステップS1107)、デバイスメモリ321上で大グラフのトークンの遷移を行う(ステップS1104)。
 そして、グラフ探索部404は、すべての仮説を遷移させたら、全体で仮説の枝刈りを行って(ステップS1105)、本処理を終了する。
F-4-2.メインメモリ以外に大グラフを展開する変形例
 大グラフをメインメモリ311以外に展開して、上記と同じようにグラフ探索処理を行う方法のも考えられる。例えば、SSDなどの外部記憶装置や、ネットワーク越しの別のシステムのメモリ、同一システム300内の他のデバイスのメモリなどに、大グラフを展開するようにしてもよい。
F-5.まとめ
 第1の実施例に係る技術の効果について言及しておく。
 第1の実施例に係る技術を適用した音声認識システムによれば、大規模グラフの探索処理を、メモリ容量の限られたメニーコア演算器で高速に実行することができる。
 第1の実施例に係る技術を適用した音声認識システムは、CPUとGPU(若しくは、他のメニーコア演算器)を装備したハイブリッド環境下において、オンザフライ合成を用いた大規模グラフの探索処理を、CPUに過大な負荷をかけずに実行することができる。これによって、以下のメリットがもたらされる。
(a)より高速に処理することができる。
(b)より安価に多くの処理をすることができる。
(c)CPUとGPUの処理のバランスを調整することができる。
 第1の実施例として説明した技術を、オンザフライ合成が可能なグラフの探索処理をハイブリッド環境に適用するさまざまなケースに対して適用することができる。
G.WFSTデータをディスクに配置した音声認識処理
 大語彙に対応したWFSTはサイズが数十GB~数百GB程度になり、メモリ容量の大きなシステムでないとWFTS探索を動作させることができない。このため、すべてのWFSTのデータをディスクに配置して探索処理を行う方法について提案がなされている(例えば、非特許文献4を参照のこと)。具体的には、WFSTを各状態(ノード)から伸びるアークの位置を記述したノードファイル(nodes-file)、アークの情報を記述したアークファイル(arcs-file)、出力シンボルに対応する単語を記述した単語列ファイル(strings-file)の3つのファイルに分けて、ディスクに配置している。このような構成によれば、2回のディスクアクセスで任意のアークの情報を取得することができる。また、一度ディスクから読み込んだアークをしばらくメモリに保持する(すなわち、キャッシュする)ことで、ディスクへのアクセス回数を削減して、ディスクアクセスによる処理時間の増加を抑えることができる。
 また、すべてのWFSTのデータをディスクに配置するとともに、WFSTデータのオフセットデータをメモリに配置することで、1回のディスクアクセスにより任意のアークを取得できるようにする方法についても提案されている(例えば、非特許文献5を参照のこと)。WFSTデータのオフセットデータは、具体的には、上記の各ノードから伸びるアークの位置の情報である「ノードファイル」に相当する。この方法によれば、ディスクアクセス回数が低減することからより高速に処理することができるが、メモリ使用量が大きくなる。
 そこで、第2の実施例として、すべてのWFSTデータをディスクに配置することによる処理時間の増加を抑制しつつ、リアルタイム処理を実現する技術について、以下で提案する。なお、ここで言う「リアルタイム処理」とは、例えば、1秒の音声を1秒以内で処理することを意味する。音声エージェントなどの実際のサービスで音声認識を使用する場合、リアルタイムでユーザにレスポンスを返すことが重要である。
 処理時間が遅くなる原因は、ディスクのIOPS(ディスクが1秒あたりに処理できるI/Oアクセスの数)がボトルネックになっていることである。メモリに置くデータ(例えばキャッシュなど)を増やすほど、ディスクへのアクセス回数が削減され、高速に処理できるようになるが、メモリ使用量の削減に反する。第2の実施例では、メモリに置くデータを工夫する(すなわち、有用なデータだけを厳選してメモリに配置する)ことで、メモリ使用量を抑制しながら、高速な音声認識処理を実現する。
G-1.システム構成
 図15には、第2の実施例として提案する技術を適用した音声認識システム1500の構成を概略的に示している。図示の音声認識システム1500は、CPU1510と、主記憶装置(以下、「メモリ」とする)1520と、補助記憶装置(以下、「ディスク」とする)1530を備えている。
 音声認識システム1500は、WFSTモデルを大小2つに分割して、音声認識の実行時に合成するオンザフライ合成を行う。まず、サイズが大きな言語モデルを大小2つに分割する。そして、2つの単語のつながりを考慮した小さい方の言語モデルを、音響モデル及び発音辞書と合成して、小さい方のWFSTモデルを作る。小さい方のWFSTモデル(小グラフ)は、比較的容量が小さいメモリ1520に配置される。また、4つの単語のつながりを考慮した言語モデルが大きい方のWFSTモデルとなる。大きい方のWFSTモデル(大グラフ)はディスク1530に配置される。
 CPU1510は、メモリ1520上の小さい方のWFSTモデルの状態遷移を行うとともに、ディスク1530上の大きい方のWFSTモデルを使った尤度補正を行う。CPU1510は、基本的にはメモリ1520に配置された小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルの状態遷移を行う必要が発生したときには、ディスク1520にアクセスして、大きいWFSTモデルのうち処理に必要なデータ(具体的にはアークの入力ラベル、出力ラベル、重み、アークの遷移先の状態のID)の部分だけをメモリ1520にコピーしながら、すべての探索処理を行う。
 音声認識で使用するWFSTのデータ(アーク)は、アクセス頻度に大きな偏りがある。オンザフライ合成におけるWFSTモデルの分割方法では、大きい方の言語モデルWFSTは、小さい方のWFSTで単語が出力されたときしかアクセスされず、アクセス頻度が低い。つまり、オンザフライ合成では、アクセス頻度が低い、WFSTデータの大半を占める部分を大きい方の言語モデルWFSTに分離することができる。したがって、アクセス頻度が高い小さい方のWFSTモデルを高速処理が可能なメモリ1520に配置するとともに、アクセス頻度が低くサイズの大きい言語モデルWFSTをディスク1530に配置することで、ディスク1530へのアクセス回数が減るので、メモリ使用量を削減しつつ高速なWFST探索を実現することができる。
G-2.ディスクのアクセス回数の削減方法(1)
 ディスク1530に配置されている言語モデルWFSTへのアクセス回数を減らすためのデータ(以下、「WFST(大)アクセス用データ」とも言う)をメモリ1520に配置することで、より高速に処理することができる。
 図14にも示したように、言語モデルWFSTの探索は、ソース状態の状態IDとラベル(入力ラベル)から、それに対応するアークを引き出す処理である。言語モデルWFSTのデータをすべてディスク1530に配置すると、対応するアークを探索するために、複数回のディスクアクセスが発生する。そこで、1回のディスクアクセスで対応するアークを取得できるように、アークを探索するための「WFST(大)アクセス用データ」をメモリ1520に配置する(図16を参照のこと)。
 ここでは、言語モデルの各アークのデータが配列としてディスク1530に配置されていることを想定している。アークのデータは、入力ラベル、出力ラベル、重み、及びアークの遷移先の状態IDを含むものとする。以下、ディスク1530上に配置されたアークの配列のことを「アーク配列」とも言う。また、アークは、状態0のアーク、状態1のアーク、状態2のアーク、…のように、ソース状態の状態IDの順に、ディスク1530上に配置されている。また、各状態から伸びるアークは複数あり、同じソース状態を持つアークはラベル(入力ラベル)でソートされている。例えば、ソース状態0&ラベル0のアーク、ソース状態0&ラベル3のアーク、ソース状態0&ラベル5のアーク、ソース状態1&ラベル0のアーク、…のように、ソース状態の状態IDの順で、且つ同じソース状態を持つアークをラベル(入力ラベル)の順に、ディスク1530のアーク配列上に配置されている。同じ状態のアークを入力ラベルでソートしておくことで、二分探索が可能である。
 これに対し、メモリ1520には、WFST(大)アクセス用データとして、各状態のアークのアーク配列上の開始位置(オフセット)を格納した「アークインデックス(Arc Indices)」を配置する。アークインデックスは、各状態のアークのアーク配列上の開始位置を、状態IDの順にソートして配置している。例えば、状態5から伸びるアークがアーク配列上の10番目から開始する場合には、アークインデックスの配列の5番目の要素は10となる。
 さらに、メモリ1520上には、WFST(大)アクセス用データとして、アーク配列上のアークに対応するラベル(入力ラベル)を、アーク配列と同じに配列した「入力ラベル配列(Input Lables)」も配置する。アーク配列上では、ソース状態の状態IDの順で、且つ同じソース状態を持つアークをラベル(入力ラベル)の順に、アークをソートして配列されている。したがって、入力ラベル配列上でも、アーク配列上に配置されたアークの順に従って、各アークの入力ラベルが配置されている。例えば、アーク配列上の10番目のアークのラベルが3であった場合には、入力ラベル配列の10番目の要素は3となる。
 したがって、CPU1510がディスク1530上でWFTS探索を行なう際には、メモリ1520に配置したアークインデックスと入力ラベル配列を使うことで、任意の状態ID及び入力ラベルに対応するアークのディスク1530上の位置を、ディスク1530にアクセスすることなく知ることができる。まず、アークインデックスで目的のアークのソース状態の状態IDのアーク配列上の開始位置を特定し、続いて、入力ラベル配列上の同開始位置の要素から目的のアークの入力ラベルを検索することで、ディスク1530に配置されたアーク配列上の位置にたどり着くことができる。つまり、1回のディスクアクセスで、任意のアークを取得することができる。
 図17には、WFST(大)アクセス用データの具体例として、ディスク1530上のアーク配列と、メモリ1520に配置されたアークインデックス及び入力ラベル配列を示している。
 ディスク1530上のアーク配列1701は、ソース状態の状態IDの順で、且つ同じソース状態を持つアークをラベル(入力ラベル)の順にソートして、各アークのデータを配置している。アークのデータは、入力ラベル、出力ラベル、重み、及びアークの遷移先の状態IDを含むものとする。ここで、アーク配列1701中で「A(i) j」と書かれた要素には、状態IDが「i」のソース状態でj番目の入力ラベルのアークのデータが格納されていることを表す。図17に示す例では、先頭から4番目までの要素は、状態IDが「0」のソース状態で、入力ラベルが0、1、3、4のアークのデータをそれぞれ格納している。また、5番目から7番目までの要素は、状態IDが「1」のソース状態で、入力ラベルが0、2、7のアークのデータをそれぞれ格納している。同じ状態のアークを入力ラベルでソートしておくことで、二分探索が可能である。
 一方、メモリ1520に配置されたアークインデックス1702は、各状態のアークのアーク配列上の開始位置を格納している。アークインデックス1702は、状態IDでソートした配列型のデータである。図17に示す例では、状態IDに基づいて0、4、7、13、16、21、…の順で状態がソートされ、各要素には該当する状態IDのアーク配列1701上の開始位置を格納している。例えば、アークインデックス1702の1番目の要素には状態0のアークのアーク配列1701上の開始位置を示す0が格納され、2番目の要素には状態4のアークのアーク配列1701上の開始位置を示す4が格納されている。
 また、メモリ1520に配置された入力ラベル配列1703は、アーク配列1701上のアークに対応するラベル(入力ラベル)を、アーク配列1701と同じに配列して格納している。したがって、入力ラベル配列1703の各要素には、アーク配列1701上の同じ位置の要素のアークが持つ入力ラベルが格納されている。図17に示す例では、先頭から4番目までの要素は、状態IDが「0」のソース状態から伸びる各アークが持つ入力ラベル0、1、3、4をそれぞれ格納している。また、5番目から7番目までの要素は、状態IDが「1」のソース状態から伸びる各アークが持つ入力ラベル0、2、7をそれぞれ格納している。
 CPU1510が、ディスク1530上でアーク配列1701の形式で配置された言語モデルWFSTの探索を行なう際には、まず、メモリ1520上のアークインデックス1702を参照して、目的のアークのソース状態の状態IDのアーク配列上の開始位置を特定する。そして、入力ラベル配列1703の同開始位置の要素から目的のアークの入力ラベルを検索することで、ディスク1530に配置されたアーク配列1701上の該当する要素にたどり着くことができる。つまり、1回のディスクアクセスで、任意のアークを取得することができる。
G-3.ディスクのアクセス回数の削減方法(2)
 上記G-2項で説明した手法では、メモリ1520に配置するWFST(大)アクセス用データのサイズが大きいという問題がある。特に、入力ラベル配列は、アーク配列の各要素のアークに対応する入力ラベルのデータを格納するので、ディスク1530に配置するアーク配列の4分の1くらいのデータサイズになってしまい、メモリ1520の使用量削減という目的を十分に達成できなくなることが懸念される。
 例えば、状態数1億、アーク数10億のWFSTを想定すると、ディスク1530に配置されるデータは16GBとなる。これに対し、メモリ1530に配置されるデータは4.4GBとなる。具体的に言うと、アークは入力ラベル、出力ラベル、重み、及び遷移先の状態IDの4つのデータからなり、各データのサイズが4バイトずつとすると、1つのアークのデータサイズは16バイトとなる。したがって、アーク数10億で、アーク配列のデータサイズは16GBとなる。このとき、メモリ1520に配置される入力ラベル配列のデータサイズは4GB、アークインデックスのデータサイズは0.4GBであり、大部分は入力ラベル配列である。
 そこで、この項では、1回のディスクアクセスで任意のアークを取得可能としてWFST探索の高速化を実現しつつ、さらにWFST(大)アクセス用データによるメモリ使用量を削減する方法について提案する。
 一般的なオペレーティングシステム又はファイルシステムでは、ディスクのランダムアクセスはページサイズ単位で行われる。1ページは4KBであるのに対し、アークのデータサイズは16バイトである。このため、1つのアークの読み込みのためのレイテンシと、(1ページに相当する)256個のアークの読み込みのレイテンシはほぼ同等になる。
 この項で提案する方法では、目的のアークが配置されているページの位置を計算するためのデータを配置しておく。そして、目的のアークが配置されているページの位置のみを計算してディスクアクセスを実行して1ページすなわち4KBのメモリへの読み込みを行う。その後、メモリに読み込んだ256個のアークの中から目的のアークを探索する。目的のアークが配置されているページを特定するだけであれば、1ページ(256個のアーク)の先頭の入力ラベルだけ分けっていればよい。このようにすることで、処理時間を増やさずに、入力ラベル配列を256分の1のデータ長に縮減することができる。上述と同様に状態数1億及びアーク数10億のWFSTを想定すると、メモリに配置する入力ラベル配列のサイズは、4GBから0.016GBまで縮減することができる。
 図18には、この項で提案する方法を実現するための、WFST(大)アクセス用データの具体例を示している。ディスク1530上にアーク配列を配置する一方、メモリ1520にアークインデックス及び入力ラベル配列を配置する点は、図17に示した例と同様である。
 ディスク1530上のアーク配列1801は、図17に示した例と同様に、ソース状態の状態IDの順で、且つ同じソース状態を持つアークをラベル(入力ラベル)の順にソートして、各アークのデータを配置している。ここでは、アーク配列1801についての詳細な説明は省略する。
 また、メモリ1520に配置されたアークインデックス1802は、各状態のアークのアーク配列上の開始位置をしている。アークインデックス1802は、図17に示した例と同様に、状態IDでソートした配列型のデータである。ここでは、アークインデックス1802についても詳細な説明を省略する。
 図17に示した例では、入力ラベル配列1703は、アーク配列1701上のアークに対応するラベル(入力ラベル)を、アーク配列1701と同じ配列で格納している。これに対して、図18に示す例では、入力ラベル配列1803は、目的のアークが配置されているページの位置を計算するためのデータを格納する。具体的には、アーク配列1801を256個毎(すなわち、ページ毎)に区切り、各256個のアーク配列1801の先頭の入力ラベルのみを入力ラベル配列1803に格納する。256個のアークは4KBすなわち1ページに相当する。したがって、入力ラベル配列1803は、目的のアークが配置されているページの位置を計算するためのデータを格納しており、目的のアークを含むページを特定して、ディスク1530から1ページ分のアークのデータをメモリ1520へ読み込むことができる。
 CPU1510が、ディスク1530上でアーク配列1801の形式で配置された言語モデルWFSTの探索を行なう際には、まず、メモリ1520上のアークインデックス1802を参照して、状態IDに該当する要素からその状態のアークのアーク配列1801上の開始位置を特定して、目的のアークが存在し得るページ範囲を計算する。続いて、メモリ1520上の入力ラベル配列1803を参照して、目的のアークが存在し得る各ページ先頭のラベルと入力ラベルとを比較して、目的のアークが存在するページを特定する。そして、ディスク1530へのアクセスを実行して、1ページすなわち256個のアークのデータをメモリ1520に読み込んだ後、その256個のアークの中から目的のアークを探索する。
 この項で提案する方法によれば、G-2項で提案した方法と処理時間をほとんど変えることなく、メモリ1520に配置するWFST(大)アクセス用データのサイズを削減することができる。入力ラベル配列1803のデータ量は、図17に示した入力ラベル配列1703の256分の1になる。
 また、1回のディスクアクセスで読み込む256個のアークの中に、有用なアークをできるだけ増やすようにアーク配列1801を並べ替えることで、さらにディスクアクセスの回数を削減することができる。有用なアークをできるだけ増やすということは、つまり、同時に使用される可能性の高いアークを同じページ(256個のアークのグループ)の中に入れるということである。上述したように、同じ状態(ノード)から伸びるアークをまとめ、且つラベル順にソートしてアーク配列に配置する必要があるので、同時に使用される可能性の高いアークをひとまとめにして並べ替える必要がある(つまり、状態IDの付け直しが必要である)。
 アークの並べ替え方として、WFSTの構造に基づいた方法が挙げられる。具体的には、WFST上で繋がっている状態(ノード)から伸びるアークを可能な限り近くにまとめて配置する方法である。
 他には、言語モデルのアクセスパターンの統計に基づいて並べ替える方法が挙げられる。これは、実際にWFST探索を動作させ、その際の言語モデルのアクセスパターンの統計に基づいてアークを並べ替える方法である。この方法では、実際の音声に基づいて統計を取るので、特定のサービスに最適化することもできる。
 また、処理時間を短縮するため、言語モデルのアークの事前読み込みを行うようにしてもよい。この方法によれば、次にディスク1530から読み込まれそうなアークを予測して、あらかじめメモリ1520に読み込んでおき、ディスクアクセスのレイテンシ分の処理時間の削減を図ることができる。予測が外れた場合には、無駄なディスクアクセスが生じてしまうが、ディスク1530のIOPSがボトルネックにならなければ、処理時間の削減には有効である。言語モデルのアクセスパターンの予測器は、HMMやRNN(Recurrent Neural Network)などのシーケンスモデルを使って学習することができる。WFST探索の実行時には、事前に学習済みのモデルを使用してもよいし、音声認識システム1500の処理中にオンラインで学習するようにしてもよい。
G-4.機能的構成例
 図19には、第2の実施例として提案する技術を適用した音声認識システム1500の具体的な機能的構成例を示している。
 CPU1900内には、信号処理部1901と、特徴量抽出部1902と、HMMスコア計算部1903と、WFST探索部1904と、認識結果出力部1905が配置される。参照番号1901~1905で示されるこれらの機能モジュールは、実際には、CPU1900で実行されるソフトウェアプログラムであってもよい。また、CPUの代わりにGPUのようなメニーコア演算器を使い、あるいは、CPUとGPUの組み合わせにより、参照番号1901~1905で示される機能モジュールを実現するようにしてもよい。
 音声入力部1931は、マイクロホンなどからなり、音声信号を収音する。信号処理部1901は、音声入力部1931で受け付けた音声信号に対して所定のデジタル処理を施す。特徴量抽出部1902は、例えばフーリエ変換やメルフィルタバンクなどの既知の技術を用いて、音声の特徴量を抽出する。HMMスコア計算部1903は、音声の特徴量の情報を受け取り、RAM1910内の音響モデル1911を使って、各HMM状態のスコアを計算する。HMMには、GMMやDNNが使用される。
 WFST探索部1904は、HMM状態スコアを受け取り、上述したメモリとしてのRAM(Random Access Memory)1910上の小グラフ(小さい方のWFSTモデル)1912と、上述したディスクとしてのSSD1920上の大グラフ(大きい方のWFSTモデル)1921を使って、オンザフライ合成による探索処理を行う。
 SSD1920上の大グラフ(大きい方のWFSTモデル)1921は、アーク配列である。アーク配列は、ソース状態の状態IDの順で、且つ同じソース状態を持つアークをラベル(入力ラベル)の順にソートして、各アークのデータを配置している(前述)。WFST探索部1904は、RAM1910内にWFSTモデル(大)アクセス用データ1914として格納されているアークインデックス及び入力ラベル配列を活用して、SSD1920内のアーク配列に高速アクセスすることができる。
 また、WFST探索部1904がWFST探索処理を行なう際、RAM1910上の言語モデルアークキャッシュ1913には、一度SSD1920から読み出されたアークがページ単位で格納される。また、RAM1910内の作業領域1915には、WFST探索時のトークンなどのデータが一時格納される。
 CPU1900内では、音声入力部1931からの音声データの入力がなくなるまで(言い換えれば、発話の終端まで)、信号処理乃至WFST探索の処理を繰り返す。そして、音声データの入力がなくなると、WFST探索部1904は、尤も確からしい仮説から抽出した認識結果を、認識結果出力部1905に出力する。そして、認識結果出力部1905は、ディスプレイやスピーカなどからなる出力部1932から認識結果を表示又は出力するための処理を実施する。
 なお、音声認識システム1500は、音声入力部1931又は出力部1932の少なくとも一方を含めた装置として構成されてもよい。あるいは、CPU1900及びGPU320はクラウド上のサーバ内に搭載され、音声入力部441及び出力部442は音声エージェント装置として構成されてもよい(後述)。
G-5.システム動作
 図20には、図19に示した音声認識システム1500で実行される音声認識の全体的な処理手順をフローチャートの形式で示している。
 音声入力部1931に対して音声の入力があると(ステップS2001のYes)、信号処理部1901でデジタル処理後の音声データが、例えば10ミリ秒毎に区切られて、特徴量抽出部1902に入力される。
 特徴量抽出部1902は、信号処理部1901でデジタル処理した後の音声データに基づいて、例えばフーリエ変換やメルフィルタバンクなどの既知の技術を用いて、音声の特徴量を抽出して(ステップS1902)、特徴量データをHMMスコア計算部1903に入力する。
 続いて、HMMスコア計算部1903は、音声の特徴量の情報を受け取り、音響モデル1921を使って、各HMM状態のスコアを計算する(ステップS2003)。
 続いて、WFST探索部1904は、HMM状態スコアを受け取り、RAM1911上の小グラフ(小さい方のWFSTモデル)1912と、SSD1920上の大グラフ(大きい方のWFSTモデル)1921を使って、オンザフライ合成による探索処理を行う(ステップS2004)。
 ステップS2004では、WFST探索部1904は、まずRAM1911上の小グラフ1912でトークンを遷移させていく。その遷移で小グラフから単語が出力された場合には、SSD1920上の大グラフ1921での遷移を行う。その際、WFST探索部1904は、RAM1910内にWFSTモデル(大)アクセス用データ1914として格納されているアークインデックス及び入力ラベル配列を使って、必要なアークが配置されているページを特定する。WFST探索部1904は、該当するアークを含むページが言語モデルアークキャッシュ1913に存在すれば、WFST探索部1904は、そこから読み込み、存在しなければ、SSD1920上の大グラフ1921から読み込む。そして、WFST探索部1904は、読み込んだページから目的のアークを探索して、そのアークのデータを使って、大グラフ上のトークンの遷移を行う。
 入力音声の終端に到達するまでは(ステップS2001のYes)、例えば10ミリ秒毎に区切られた音声データに対して、上記ステップS2002~S2004の処理が繰り返し実行される。
 また、入力音声の終端に到達すると(ステップS2001のNo)、WFST探索部1904は、RAM1910の作業領域1915のトークンの中から、尤も確からしい仮説を選択して、認識結果として出力する。そして、認識結果出力部1905は、ディスプレイやスピーカなどからなる出力部1932から認識結果を表示又は出力するための処理を実施する(ステップS2005)。
 図21には、図20に示したフローチャート中のステップS2004で実行される、WFST探索処理の詳細な処理手順の一例をフローチャートの形式で示している。但し、図21に示す処理手順は、上述したG-2項で説明したディスクアクセス方法(図17を参照のこと)に従うものとする。
 WFST探索部1904は、RAM1910上の小グラフ1912(小さい方のWFSTモデル)でトークンを遷移させていく(ステップS2101)。
 ここで、遷移したアークから単語が出力されない場合には(ステップS2102のNo)、WFST探索部1904は、全体で仮説の枝刈りを行って(ステップS2107)、本処理を終了する。
 遷移したアークから単語が出力された場合には(ステップS2102のYes)、WFST探索部1904は、WFST(大)アクセス用データ1914を使って、WFTSモデル(大)1921上における目的のアークの位置を特定する(ステップS2103)。WFST探索部1904は、まず、WFST(大)アクセス用データ1914内のアークインデックスを参照して、目的のアークのソース状態の状態IDのアーク配列上の開始位置を特定する。次いで、WFST探索部1904は、WFST(大)アクセス用データ1914内の入力ラベル配列の同開始位置の要素から目的のアークの入力ラベルを検索することで、アーク配列上の目的とするアークの位置を特定する。
 次いで、WFST探索部1904は、該当するページ(すなわち、目的とするアークのデータを含むページ)が言語モデルアークキャッシュ1913内に存在するかどうかをチェックする(ステップS2104)。
 該当するページが言語モデルアークキャッシュ1913内に既に存在する場合には(ステップS2104のYes)、WFST探索部1904は、言語モデルアークキャッシュ1913から目的とするアークのデータを読み込んで(ステップS2105)、大グラフ上のトークンの遷移を行う(ステップS2106)。
 一方、該当するページが言語モデルアークキャッシュ1913内に存在しない場合には(ステップS2104のNo)、WFST探索部1904は、SSD1920に配置されたWFSTモデル(大)1921すなわちアーク配列から、ステップS2103で特定された位置を含むページを読み込んで(ステップS2108)、言語モデルアークキャッシュ1913に書き込む(ステップS2109)。そして、WFST探索部1904は、読み込んだページから目的のアークを探索して、そのアークのデータを使って、大グラフ上のトークンの遷移を行う(ステップS2106)。
 そして、WFST探索部1904は、すべての仮説を遷移させたら、全体で仮説の枝刈りを行って(ステップS2107)、本処理を終了する。
 また、図22には、図20に示したフローチャート中のステップS2004で実行されるWFST探索処理の詳細な処理手順の他の例をフローチャートの形式で示している。但し、図22に示す処理手順は、上述したG-3項で説明したディスクアクセス方法(図18を参照のこと)に従うものとする。
 WFST探索部1904は、RAM1910上の小グラフ1912(小さい方のWFSTモデル)でトークンを遷移させていく(ステップS2201)。
 ここで、遷移したアークから単語が出力されない場合には(ステップS2202のNo)、WFST探索部1904は、全体で仮説の枝刈りを行って(ステップS2208)、本処理を終了する。
 遷移したアークから単語が出力された場合には(ステップS2202のYes)、WFST探索部1904は、WFST(大)アクセス用データ1914を使って、WFTSモデル(大)1921上における目的のアークが配置されているページを特定する(ステップS2203)。WFST探索部1904は、まず、WFST(大)アクセス用データ1914内のアークインデックスを参照して、状態IDに該当する要素からその状態のアークのアーク配列上の開始位置を特定して、目的のアークが存在し得るページ範囲を計算する。続いて、WFST(大)アクセス用データ1914内の入力ラベル配列を参照して、目的のアークが存在し得る各ページ先頭のラベルと入力ラベルとを比較して、目的のアークが存在するページを特定する。
 次いで、WFST探索部1904は、該当するページが言語モデルアークキャッシュ1913内に存在するかどうかをチェックする(ステップS2204)。
 該当するページが言語モデルアークキャッシュ1913内に既に存在する場合には(ステップS2204のYes)、WFST探索部1904は、言語モデルアークキャッシュ1913から該当するページすなわち256個のアークのデータを読み込む(ステップS2205)、その256個のアークの中から目的のアークを探索する(ステップS2206)。
 一方、該当するページが言語モデルアークキャッシュ1913内に存在しない場合には(ステップS2204のNo)、WFST探索部1904は、SSD1920に配置されたWFSTモデル(大)1921すなわちアーク配列から、ステップS2203で特定された位置を含むページを読み込んで(ステップS2209)、言語モデルアークキャッシュ1913に書き込む(ステップS2210)。
 そして、WFST探索部1904は、読み込んだページから目的のアークを探索して(ステップS2206)、大グラフ上のトークンの遷移を行う(ステップS2207)。
 次いで、WFST探索部1904は、すべての仮説を遷移させたら、全体で仮説の枝刈りを行って(ステップS2208)、本処理を終了する。
 図23には、図22に示したフローチャート中のステップS2203で実行される、WFTSモデル(大)1921(すなわち、アーク配列)上における目的のアークが配置されているページを特定するための詳細な処理手順をフローチャートの形式で示している。
 WFST探索部1904は、まず、WFST(大)アクセス用データ1914内のアークインデックス中の、目的のアークの状態IDに該当する要素及びその次の要素を参照して、目的のアークが存在し得るページ範囲を計算する(ステップS2301)。
 例えば、図18に示したアークインデックス1802において、目的のアークの状態IDが「0」であれば、1番目の要素「0」と2番目(すなわち、状態IDが「4」)の要素「4」を参照して、状態IDが「0」のソース状態から伸びるアークが1~256番目の範囲内であることから、目的のアークがページ0に存在することを特定することができる。
 もちろん、アークインデックス中の目的のアークの状態IDに該当する要素とその次の要素が256以上離間している場合には、目的のアークが存在し得るページ範囲は複数ページにまたがることになる。例えば、目的のアークの状態IDのアーク配列上の開始位置がN番目の場合、そのソース状態から伸びる先頭のアークは、[N/256]ページ目に存在する(但し、[X]は実数Xに対してX以下の最大の整数とする)。具体的には、目的のアークのソース状態の状態IDがアークインデックスの10番目であり、10番目の要素が300で、続く11番目の要素が900であった場合、目的のアークは、[300/256]=1ページ目から[900/256]=3ページ目の中に存在することになる。
 続いて、WFST探索部1904は、WFST(大)アクセス用データ1914内の入力ラベル配列を参照して、先行ステップS2301で計算したページ範囲に対応する各ページの先頭のラベルを目的のアークの入力ラベルと比較して、目的のアークが存在するページを特定する(ステップS2302)。
 各状態から伸びるアークは複数あるが、同じソース状態を持つアークはラベル(入力ラベル)でソートされている(前述)。したがって、各ページの先頭ラベルと目的のアークの入力ラベルとを比較することで、ページを特定することができる。例えば、目的のアークの入力ラベルが100で、目的のアークが存在し得るページ範囲が1ページ目から3ページ目の間であり、入力ラベル配列中の1ページ目、2ページ目、及び3ページ目の各々の先頭のラベルが300、50、150であったとする。1ページ目の先頭ラベルは目的のアークの入力ラベルの範囲外であり、前の状態の入力ラベルであることが分かる。したがって、目的のアークの入力ラベルは2ページ目の開始位置から3ページ目の開始位置までの間に存在することになるので、目的のアークは2ページ目に存在することを特定することができる。
 続いて、WFST探索部1904は、特定したページを、SSD1920上の大グラフ1921すなわちアーク配列から読み込む(ステップS2303)。
 次いで、WFST探索部1904は、SSD1920上のアーク配列から読み込んだページの256個のアークの中から、入力ラベルを使って、目的のアークを検索する(ステップS2304)。
 読み込んだ各アークは、入力ラベル情報を持っている(例えば、図14を参照のこと)。ステップS2301でアークインデックスを参照した時点で、256個のアークのうち、目的のアークの状態IDのソース状態から伸びるアークの範囲が分かる。すなわち、目的のアークの状態IDに該当する要素及びその次の要素の差が、その状態から伸びるアークの数である。したがって、その範囲内で入力ラベルを比較すれば、目的のアークを1つに特定することができる(又は、目的のアークが存在しないことが分かる)。
 そして、WFST探索部1904は、目的のアークが存在したかどうかをチェックする(ステップS2305)。SSD1920から読み出したページに目的のアークが存在する場合には(ステップS2305のYes)、WFST探索部1904は、本処理を終了する。
 一方、読み出したページに目的のアークが存在しない場合には(ステップS2305のNo)、WFST探索部1904は、バックオフ状態へ遷移する。具体的には、入力ラベルに0をセットして(ステップS2306)、ステップS2301に戻り、上記と同様の処理を繰り返す。ラベル0は、バックオフ遷移するアークを示す。
G-6.アークの事前読み込み機能を持つシステム
 図24には、アークの事前読み込み機能を持つ音声認識システム1500の具体的な機能的構成例を示している。
 CPU2400内には、信号処理部2401と、特徴量抽出部2402と、HMMスコア計算部2403と、WFST探索部2404と、認識結果出力部2405が配置される。参照番号2401~2405で示されるこれらの機能モジュールは、実際には、CPU2400で実行されるソフトウェアプログラムであってもよい。また、参照番号2401~2405で示される各機能モジュールは、基本的には、図19に示した音声認識システム1500内の同名の機能モジュールと同様の機能又は役割を果たすので、ここでは詳細な説明を省略する。
 また、RAM2410は上述したメモリに相当し、SSD2420は上述したディスクに相当する。RAM2410には、HMM状態のスコア計算に使用する音響モデル2411、小グラフ(小さい方のWFSTモデル)2512、一度SSD2420から読み出されたアークがページ単位で格納される言語モデルアークキャッシュ2413、並びに、アークインデックス及びに宇力ラベル配列などからなるWFSTモデル(大)アクセス用データ2414が配置される。一方、SSD2420には、大グラフ(大きい方のWFSTモデル)2421が配置される。
 図24に示す音声認識システム1500では、RAM2410上に、言語モデルのアークの事前読み込みに使用する言語モデルアクセスパターンモデル2416がさらに配置されている。言語モデルのアークの事前読み込み機能について、以下で説明する。
 図24に示した音声認識システム1500では、ディスクすなわちSSD2420の読み込みのレイテンシを隠ぺいするために、実際に必要となる前にあらかじめアークをSSD2420からRAM2410内の言語モデルアークキャッシュ2413に読み込んでおく。WFST探索部2404(又は、CPU2400で実行される他の(図示しない)機能モジュール)は、RAM2410内に配置されている言語モデルアクセスパターンモデル2416を用いて、次に必要となりそうなアークを予測して、事前読み込みを実施する。
 言語モデルアクセスパターンモデル2416は、事前学習済みのHMMやLSTM(Long-Short Term Memory)などのシーケンスモデルを使用したものでもよいし、音声認識システム1500の処理を動作させながらオンラインに学習するようにしてもよい。言語モデルアクセスパターンモデル2416は、過去のアークへのアクセスパターン(1回前、又は複数回前)を入力にとり、次にアクセスされる可能性が高い(又は、上位からN個の)アーク(又は、ページ)を出力する。事前読み込みされたアークは、RAM2410内の言語モデルアークキャッシュ2413に配置される。
 もし予測が当たっており、事前読み込みができていれば、次の処理でアクセスされるアークが既に言語モデルアークキャッシュ2413に存在するので、SSD2320からの読み込みが不要となり、ディスクアクセスのレイテンシによる処理時間の増加を防ぐことができる。
 なお、事前読み込みはアーク単位でもよいし、ページ単位でもよい。言語モデルアークキャッシュ2413がアーク単位であればアーク単位で事前読み込みし、キャッシュがページ単位であればページ単位で事前読み込みする。
 図25及び図26には、図24に示した音声認識システム1500において、WFST探索部2404が実行するWFST探索処理の詳細な処理手順をフローチャートの形式で示している。図示の処理手順では、WFST探索処理と並行して、アークの事前読み込みが実施される。但し、図示の処理手順は、上述したG-3項で説明したディスクアクセス方法(図18を参照のこと)に従うものとする。
 WFST探索部2404は、RAM1910上の小グラフ1912(小さい方のWFSTモデル)でトークンを遷移させていく(ステップS2501)。
 ここで、遷移したアークから単語が出力されない場合には(ステップS2502のNo)、WFST探索部2404は、全体で仮説の枝刈りを行って(ステップS2508)、本処理を終了する。
 遷移したアークから単語が出力された場合には(ステップS2502のYes)、WFST探索部2404は、WFST(大)アクセス用データ2414を使って、WFTSモデル(大)1921上における目的のアークが配置されているページを特定する(ステップS2503)。ステップS2503では、基本的には図23に示した処理手順に従って実施される。
 次いで、WFST探索部2404は、該当するページが言語モデルアークキャッシュ2413内に存在するかどうかをチェックする(ステップS2504)。該当するページが言語モデルアークキャッシュ2413内に既に存在する場合には(ステップS2504のYes)、WFST探索部2404は、言語モデルアークキャッシュ2413から該当するページを読み込んで(ステップS2505)、そのページの中から目的のアークを探索する(ステップS2506)。
 一方、該当するページが言語モデルアークキャッシュ2413内に存在しない場合には(ステップS2504のNo)、WFST探索部2404は、SSD2420に配置されたWFSTモデル(大)2421すなわちアーク配列から、ステップS2503で特定された位置を含むページを読み込んで(ステップS2509)、言語モデルアークキャッシュ2413に書き込む(ステップS2510)。
 そして、WFST探索部2404は、読み込んだページから目的のアークを探索して(ステップS2506)、大グラフ上のトークンの遷移を行う(ステップS2507)。次いで、WFST探索部2404は、すべての仮説を遷移させたら、全体で仮説の枝刈りを行って(ステップS2508)、本処理を終了する。
 また、WFST探索部2404(又は、CPU2400が実行する事前読み込み用の機能モジュール)は、目的のアークが配置されているページを特定する処理(ステップS2503)と並行して、アークの事前読み込み処理を実施する。
 WFST探索部2404は、ページのアクセスパターンを言語モデルアクセスパターンモデル2416に入力する(ステップS2511)。言語モデルアクセスパターンモデル2416は、過去のアークへのアクセスパターン(1回前、又は複数回前)を入力にとり、次にアクセスされる可能性が高いページを出力する。
 そして、WFST探索部2404は、言語モデルアクセスパターンモデル2416から出力された、次にアクセスされる可能性が高いページが言語モデルアークキャッシュ2413内に存在するかどうかをチェックする(ステップS2512)。ここで、該当するページが言語モデルアークキャッシュ2413内に既に存在する場合には(ステップS2504のYes)、事前読み込みの必要がないので、本処理を終了する。
 一方、該当するページが言語モデルアークキャッシュ2413内に存在しない場合には(ステップS2512のNo)、WFST探索部2404は、ステップS2511で言語モデルアクセスパターンモデル2416から出力されたページの事前読み込みを実施する。すなわち、SSD2420に配置されたWFSTモデル(大)2421すなわちアーク配列から該当するページを読み込んで(ステップS2513)、言語モデルアークキャッシュ2413に書き込む(ステップS2514)。
H.ハイブリッド環境下でディスクを用いたオンザフライ合成
 上記G項では、2分割したWFSTデータをメモリ及びディスクに配置してオンザフライ合成をCPU(言い換えれば、単一のプロセッサ)で実現する技術について説明してきた。これに対し、この項では、CPUとGPUからなるハイブリッド環境下でディスクを用いたオンザフライ合成を実現する技術について説明する。
 図27には、ハイブリッド環境下でディスクを用いたオンザフライ合成を実現する音声認識システム2700の機能的構成例を示している。
 音声認識システム2700は、音声認識処理に関わる処理を実行するプロセッサとして、CPU2710とGPU2720を備えている。CPU2710内には、信号処理部2701と、特徴量抽出部2702と、認識結果処理部2705の各機能モジュールが配置される。また、GPU2720内には、HMMスコア計算部2703と、WFST探索部2704の各機能モジュールが配置される。参照番号2701~2705で示されるこれらの機能モジュールは、実際には、CPU2710及びGPU2720でそれぞれ実行されるソフトウェアプログラムであってもよい。また、音声認識システム2700では、ディスクとしてSSD2740が使用されるが、メモリとしてGPU2720の内蔵メモリ(以下、「GPUメモリ」とする)2730が使用される。
 音声入力部2751は、マイクロホンなどからなり、収音した音声信号をCPU2710に入力する。CPU2710内では、信号処理部2701は、音声信号に対して所定のデジタル処理を施す。そして、特徴量抽出部2702は、音声の特徴量を抽出して、GPU2720に出力する。
 GPU2720内では、HMMスコア計算部2703は、音声の特徴量の情報を受け取り、GPUメモリ2730内の音響モデル2731を使って、各HMM状態のスコアを計算する。そして、WFST探索部2704は、HMM状態スコアを受け取り、GPUメモリ2730内の小グラフ(小さい方のWFSTモデル)2732と、SSD2740上の大グラフ(大きい方のWFSTモデル)2741を使って、オンザフライ合成による探索処理を行う。
 SSD2740上の大グラフ(大きい方のWFSTモデル)2741は、アーク配列である。WFST探索部2704は、GPUメモリ2730内にWFSTモデル(大)アクセス用データ2734として格納されているアークインデックス及び入力ラベル配列を活用して、SSD2740内のアーク配列に高速アクセスすることができる(同上)。
 WFST探索部2704がWFST探索処理を行なう際、GPUメモリ2730内の言語モデルアークキャッシュ2733には、一度SSD2740から読み出されたアークがページ単位で格納される。また、GPUメモリ2730内の作業領域2735には、WFST探索時のトークンなどのデータが一時格納される。
 また、WFST探索部2704がWFST探索処理を行なう際、アークの事前読み込み処理を並行して実施する。WFST探索部2704は、GPUメモリ2730内の言語モデルアクセスパターンモデル2736にページのアクセスパターンを入力する。そして、WFST探索部2704は、言語モデルアクセスパターンモデル2736から出力される、次にアクセスされる可能性が高いページをSSD2740内のWFSTモデル(大)2741から読み込んで、GPUメモリ2730内の言語モデルアークキャッシュ2733に書き込む。
 CPU2710及びGPU2720では、音声入力部2751からの音声データの入力がなくなるまで(言い換えれば、発話の終端まで)、信号処理乃至WFST探索の処理を繰り返す。そして、音声データの入力がなくなると、GPU2720内のWFST探索部2704は、尤も確からしい仮説から抽出した認識結果を、CPU2710側の認識結果出力部2705に出力する。そして、認識結果出力部2705は、ディスプレイやスピーカなどからなる出力部2752から認識結果を表示又は出力するための処理を実施する。
 図28には、図27に示した音声認識システム2700で実行される音声認識の全体的な処理手順をフローチャートの形式で示している。
 音声入力部2751に対して音声の入力があると(ステップS2801のYes)、信号処理部2701でデジタル処理後の音声データが、例えば10ミリ秒毎に区切られて、特徴量抽出部2702に入力される。
 特徴量抽出部2702は、信号処理部2701でデジタル処理した後の音声データに基づいて、例えばフーリエ変換やメルフィルタバンクなどの既知の技術を用いて、音声の特徴量を抽出する(ステップS2802)。図27に示したようにGPU2720上でHMMスコア計算を行なう場合には、特徴量データをGPUメモリ2730の作業領域2735にコピーして、HMMスコア計算部2703に入力する(ステップS2803)。
 続いて、HMMスコア計算部273は、音声の特徴量の情報を受け取り、GPUメモリ2730内の音響モデル2731を使って、各HMM状態のスコアを計算する(ステップS2804)。
 続いて、WFST探索部2704は、HMM状態スコアを受け取り、GPUメモリ2730上の小グラフ(小さい方のWFSTモデル)2732と、言語モデルアークキャッシュ2733、並びにSSD2740上の大グラフ(大きい方のWFSTモデル)2741を使って、オンザフライ合成による探索処理を行う(ステップS2805)。
 ステップS2805では、WFST探索部2704は、まず小グラフでトークンを遷移させていく。その遷移で小グラフから単語が出力された場合には、ソース状態(遷移する前の状態)のIDと入力ラベルを入力にとり、大グラフのアークの情報を言語モデルアークキャッシュ2733から取得して、大グラフのトークンの遷移を行う。また、言語モデルアークキャッシュ2733でキャッシュミスが発生したときには、SSD2740上の大グラフ(大きい方のWFSTモデル)2741を探索して目的のアークを読み込む。WFST探索部2704は、は、例えば図25及び図26に示した処理手順に従って大グラフ(大きい方のWFSTモデル)2741の探索を行い、アークの事前読み込みを並行して行うようにしてもよい。そして、WFST探索部2704は、すべての仮説を遷移させたら、全体で仮説の枝刈りを行う。
 入力音声の終端に到達するまでは(ステップS2801のYes)、例えば10ミリ秒毎に区切られた音声データに対して、上記ステップS2802~S2805の処理が繰り返し実行される。
 また、入力音声の終端に到達すると(ステップS2801のNo)、WFST探索部2704による音声認識結果の文字列が、GPUメモリ2730上の作業領域2735から、CPU2710側のメインメモリにコピーされる(ステップS2806)。
 そして、CPU2710側の認識結果出力処理部2705は、ディスプレイやスピーカなどからなる出力部2752から認識結果を表示又は出力するための処理を実施する(ステップS2807)。
I.まとめ
 第2の実施例に係る技術の効果について言及しておく。
 第2の実施例に係る技術を適用した音声認識システムによれば、2分割したWFSTデータをメモリ及びディスクに配置してオンザフライ合成を行うことにより、すべてのWFSTデータをディスクに配置することによる処理時間の増加を抑制しつつ、リアルタイム処理を実現することができる。これによって、以下のメリットがもたらされる。
(a)メモリ容量の限られたシステムで大規模グラフ探索を実行することができる。
(b)ディスクにWFSTモデルを配置しても、高速にグラフ探索処理を実行することができる。
(c)同じメモリ使用量で、さらに大きいWFSTモデルを使用することができる。
J.具体例
 ここでは、本開示に係る大規模グラフ探索技術を適用した音声認識システムを搭載する製品の具体例について説明する。
 最近、音声などを用いてユーザと対話を行いながら、用途や状況に応じて種々の情報をユーザに提示する「エージェント」、「アシスタント」、若しくは「スマートスピーカー」と呼ばれるサービスが普及し始めている。例えば、テレビのオンオフや選局並びに音量調整、冷蔵庫の温度設定の変更、照明やエアコンなどの家電機器のオンオフや調整操作を代行する音声エージェントが知られている。音声エージェントはさらに、天気予報や株・為替情報、ニュースについて聞かれると音声で回答したり、商品の注文を受け付けたり、購入した書籍の内容を読み上げたりすることもできる。
 エージェント機能は、例えば、家庭内などでユーザの周囲に設置されるエージェントデバイスと、クラウド上に構築されるエージェントサービスの連携により提供される(例えば、特許文献2を参照のこと)。エージェントデバイスは、ユーザが発話する音声を受け付ける音声入力、並びにユーザからの問い合せに対して音声で回答する音声出力といったユーザインターフェースを主に提供する。一方のエージェントサービス側では、エージェントデバイスで入力された音声の認識や意味解析を実行する。また、エージェントサービス側では、ユーザの問い合わせに応じた情報検索などの処理、処理結果に基づく音声合成など、負荷の高い処理も併せて実行するようにしてもよい。
J-1.音声による家電の操作
 図12には、本開示に係る技術を適用した音声認識システムを搭載するエージェントシステム1200の機能的構成例を示している。エージェントシステム1200は、エージェントデバイス1201と、エージェントサービス1202で構成される。
 エージェントデバイス1201は、例えば家庭内などでユーザの周囲に設置される。エージェントデバイス1201は、イーサネット(登録商標)などの有線LAN(Local Area Network)やWi-Fi(登録商標)などの無線LANを介して、テレビ1211や冷蔵庫1212、LED(Light Emitting Diode)照明1213といった、さまざまな家電機器と相互接続している。また、エージェントデバイス1201は、マイクロホンなどの音声入力部と、スピーカやディスプレイなどの出力部を備えている。
 エージェントサービス1202は、音声認識システム1204と、意味解析部1203を含んでいる。但し、音声認識システム1204は、例えば図4、図9、図19、図24、又は図27のうちいずれかに示した機能的構成を想定しており、ここでは詳細な説明を省略する。
 エージェントサービス1202は、例えばクラウド上のサーバとして構成される。エージェントデバイス1201とエージェントサービス1202とは、例えばインターネットなどの広域ネットワークを介して相互接続されている。但し、エージェントサービス1202の機能がエージェントデバイス1201の中に組み込まれているというシステム構成も可能である。
 エージェントデバイス1201は、ユーザが発話した音声コマンドを収音した音声信号を、エージェントサービス1202に送信する。音声コマンドには、「テレビを付けて」、「冷蔵庫の中身を教えて」、「明かりを消して」といった家電機器に対する指示も含まれている。
 エージェントサービス1202側では、音声認識システム1204が受信した音声認識信号を、オンザフライ合成を利用した音声認識処理によって、認識結果のテキストを出力する。そして、意味解析部1203は、認識結果のテキストを意味解析して、意味解析結果をエージェントデバイス1201に返信する。
 ユーザの音声コマンドの意味解析結果は、テレビ1211のオンオフや選局並びに音量調整、冷蔵庫1212の温度設定の変更、LED照明1213のオンオフや光量調整といった、各家電機器に対する操作指令が含まれる。エージェントデバイス1201は、エージェントサービス1202から受信した意味解析結果に基づいて、テレビ1211に対するオンオフや選局並びに音量調整といった操作信号、冷蔵庫1212に対する温度設定の変更といった操作信号、LED照明1213に対するオンオフや光量調整といった操作信号を、家庭内のネットワークを介して送信する。
J-2.スマートフォンでの大語彙音声認識
 本開示に係る技術を適用した音声認識システムによれば、語彙数100万以上の大語彙音声認識を、メモリ使用量3GB以下で動作させることができる。そのため、クラウドのサーバに比べてメモリ容量の小さいスマートフォンでも音声認識処理を動作させることができる。その結果、スマートフォン上で高性能な音声認識処理に基づく高度なエージェント機能を実現することができる。例えば、図12に示したエージェントシステム1200のうちエージェントサービス1202の部分を、クラウド上のサーバからスマートフォンに置き換えることができる。
 以上、特定の実施形態を参照しながら、本開示に係る技術について詳細に説明してきた。しかしながら、本開示に係る技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
 本明細書では、グラフ探索の一例として音声認識のWFSTに適用した実施形態を中心に説明してきたが、本開示に係る技術の用途はこれに限定されるものではなく、同等の処理を行う他のグラフ探索処理に対しても同様に本開示に係る技術を適用することができる。オンザフライ合成が可能なグラフの探索処理をCPUとGPUのハイブリッド環境に適用するさまざまなケースにおいて、同様に第1の実施例として説明した技術を適用することができる。また、第2の実施例として説明した技術を、主記憶装置と補助記憶装置の組み合わせだけでなく、GPUメモリと補助記憶装置の組み合わせなど、異なるアクセス性能や容量を持つ任意の記憶装置の組み合わせに対して適用することができる。
 本開示に係る技術によれば、CPUとGPUを用いたハイブリッド環境下において、GPUで音声認識の大規模グラフの探索処理を実現することができる。また、本開示に係る技術の適用対象は、GPU及び音声認識のグラフ探索処理に限定されるものではなく、GPUはメモリ容量の限られた(グラフサイズより小さいメモリ容量を持つ)メニーコア演算器に置き換え、音声認識のグラフ探索処理は一般的なグラフ探索処理に置き換えることができる。
 また、本開示に係る技術を適用したWFSTによる音声認識システムは、パーソナルコンピュータ、スマートフォン、タブレット、音声エージェントなどのさまざまなタイプの情報処理装置若しくは情報端末に搭載することができる。
 要するに、例示という形態により本開示に係る技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本開示に係る技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。
 なお、本開示に係る技術は、以下のような構成をとることも可能である。
(1)演算部と、第1の記憶装置と、第2の記憶装置を具備し、
 グラフ情報を第1のグラフ情報と第2のグラフ情報に2分割し、
 前記第1のグラフ情報を前記第1の記憶装置に配置し、
 前記第2のグラフ情報を前記第2の記憶装置に配置し、
 前記演算部が、前記第1の記憶装置に配置された前記第1のグラフ情報及び前記第2の記憶装置に配置された第2のグラフ情報を用いてグラフ探索処理を実施する、
情報処理装置。
(2)前記第1のグラフ情報は前記第2のグラフ情報よりもサイズが小さく、
 前記第1の記憶装置は前記第2の記憶装置よりも容量が小さい、
上記(1)に記載の情報処理装置。
(3)前記グラフ情報は、音声認識において音響モデル、発音辞書及び言語モデルを表現したWFSTモデルであり、
 前記第1のグラフはWFSTモデルを大小2つの分割した小さい方のWFSTモデルであり、前記第2のグラフは大きい方のWFSTモデルである、
上記(2)に記載の情報処理装置。
(4)言語モデルを大小2つに分割し、第1の個数以下の単語のつながりを考慮した小さい方の言語モデルを音響モデル及び発音辞書と合成した小さいWFSTモデルを前記第1のグラフ情報とし、前記第1の個数より多い任意の個数の単語のつながりを考慮した言語モデルからなる大きいWFSTモデルを前記第2のグラフ情報とする、
上記(3)に記載の情報処理装置。
(5)前記演算部は、前記第1のグラフ情報を用いて探索処理を実行中に前記第2のグラフ情報の参照が必要になったときに、前記第2のグラフ情報のうち必要な部分を前記第2の記憶装置から前記第1の記憶装置へコピーして、前記探索処理を継続させる、
上記(1)乃至(4)のいずれかに記載の情報処理装置。
(6)前記演算部は、GPU又はその他のメニーコア演算器からなる第1の演算部と、CPUからなる第2の演算部を含み、
 前記第1の記憶装置は前記GPU内のメモリであり、前記第2の記憶装置は前記CPUのローカルメモリである、
上記(1)乃至(5)のいずれかに記載の情報処理装置。
(7)前記グラフ情報はWFSTモデルであり、
 前記第1の演算部は、小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルのトークンの状態遷移を行う必要が発生したときに、処理に必要なデータを前記第2の記憶装置から前記第1の記憶装置へコピーにコピーしながら、前記第1の演算部がすべての探索処理を行う、
上記(6)に記載の情報処理装置。
(8)前記第1の演算部は、前記第2のグラフのうち必要なアークが配置されている前記第2の記憶装置上の位置をあらかじめ計算しておく、
上記(6)に記載の情報処理装置。
(9)前記第1の演算部と前記第2の演算部で共通のページテーブルを持ち、前記第1の演算部が前記第1の記憶装置上にないページのアークを参照したことに応答して、該当するページを前記第2の記憶装置から前記第1の記憶装置へ移動させる、
上記(8)に記載の情報処理装置。
(10)前記第1の演算部があらかじめ計算した前記必要なアークの位置情報のリストを前記第2の演算部に送信し、
 前記第2の演算部は、前記リストに基づいて、前記第1の演算部がグラフ探索中に必要となったアークを前記第2の記憶装置から前記第1の記憶装置へコピーする、
上記(8)に記載の情報処理装置。
(11)前記第1の記憶装置は、前記第2のグラフ情報を保持するキャッシュを備える、
上記(1)に記載の情報処理装置。
(12)前記キャッシュは、ソース状態の識別情報と入力ラベルを入力にとり、アークを返すデータ構造を有する、
上記(11)に記載の情報処理装置。
(13)音声認識処理に適用され、
 前記第2の演算部において、入力音声の特徴量を計算する特徴量抽出を実行し、
 前記第1の演算部において特徴量からHMM状態スコアを計算するHMMスコア計算と、前記第1の記憶装置に配置された前記第1のグラフ情報と前記第2の記憶装置に配置された前記第2のグラフ情報を用いてオンザフライ合成による探索処理を実行する、
上記(5)に記載の情報処理装置。
(14)前記第2の演算部において、前記第1の演算部が実行した探索処理により得られた音声認識結果を出力するための処理をさらに実行する、
上記(13)に記載の情報処理装置。
(15)前記第1の記憶装置は前記演算部のローカルメモリであり、前記第2の記憶装置は補助記憶装置であり、
 前記演算部は、小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルのトークンの状態遷移を行う必要が発生したときに、処理に必要なデータを前記第2の記憶装置から前記第1の記憶装置へコピーしながら、前記探索処理を行う、
上記(4)に記載の情報処理装置。
(15-1)前記演算部は、CPU又はGPUからなる、
上記(15)に記載の情報処理装置。
(15-2)音声認識処理に適用され、
 前記演算部は、入力音声の特徴量を計算する特徴量抽出と、前記特徴量からHMM状態スコアを計算するHMMスコア計算と、前記第1の記憶装置に配置された前記第1のグラフ情報と前記第2の記憶装置に配置された前記第2のグラフ情報を用いてオンザフライ合成による探索処理を実行する、
上記(15)に記載の情報処理装置。
(16)前記第1の記憶装置は、前記第2の記憶装置内の大きい方のWFSTモデルへのアクセス用データを保持し、
 前記演算部は、前記アクセス用データに基づいて、処理に必要なデータを前記第2の記憶装置から前記第1の記憶装置へコピーする、
上記(15)に記載の情報処理装置。
(17)大きい方のWFSTモデルは、アークをソースの状態の状態IDと入力ラベルでソートしたアーク配列からなり、
 前記第1の記憶装置は、前記アクセス用データとして、各状態のアークの前記アーク配列上の開始位置を格納するアークインデックスと、前記アーク配列上のアークに対応する入力ラベルを前記アーク配列と同じ配列で格納する入力ラベル配列を備え、
 前記演算部は、前記アークインデックスで目的のアークのソース状態の状態IDのアーク配列上の開始位置を特定し、前記入力ラベル配列上の前記開始位置の要素から目的のアークの入力ラベルを検索することによって、前記アーク配列上の目的のアークが格納されている位置を特定して、前記第2の記憶装置の前記アーク配列から目的のアークのデータを取得する、
上記(16)に記載の情報処理装置。
(18)大きい方のWFSTモデルは、アークをソースの状態の状態IDと入力ラベルでソートしたアーク配列からなり、
 前記第1の記憶装置は、前記アクセス用データとして、各状態のアークの前記アーク配列上の開始位置を格納するアークインデックスと、前記アーク配列をページ毎の区切り、各ページの前記アーク配列の先頭の要素の入力ラベルを格納する入力ラベル配列を備え、
 前記演算部は、前記アークインデックスに基づいて目的のアークが存在するページ範囲を計算し、前記入力ラベル配列に基づいて、前記ページ範囲の中から目的のアークが存在するページを特定して、前記第2の記憶装置の前記アーク配列から前記特定したページを取得する、
上記(16)に記載の情報処理装置。
(19)過去のアークへのアクセス履歴に基づいて次にアクセスされる可能性が高いアーク又はページを予測するアクセスパターンモデルをさらに備え、
 前記演算部は、前記アクセスパターンモデルに基づいて予測されるアークまたはページの前記第2の記憶装置からの事前読み込みを行う、
上記(17)又は(18)のいずれかに記載の情報処理装置。
(20)演算部と、第1の記憶装置と、第2の記憶装置を具備する情報処理装置において、
 グラフ情報を分割した第1のグラフ情報を第1の記憶装置に配置するステップと、
 前記グラフ情報を分割した第2のグラフ情報を第2の記憶装置に配置するステップと、
 前記演算部が、前記第1の記憶装置に配置された前記第1のグラフ情報及び前記第2の記憶装置に配置された第2のグラフ情報を用いてグラフ探索処理を実行するステップと、
を有する情報処理方法。
(101)グラフ情報を第1のグラフ情報と第2のグラフ情報に2分割し、
 前記第1のグラフ情報を第1の演算部の第1のメモリに配置し、
 前記第2のグラフ情報を第2の演算部の第2のメモリに配置し、
 前記第1の演算部が、前記第1のメモリに配置された前記第1のグラフ情報及び前記第2のメモリに配置された第2のグラフ情報を用いてグラフ探索処理を実施する、
情報処理装置。
(102)前記第1のグラフ情報は前記第2のグラフ情報よりもサイズが小さく、
 前記第1のメモリは前記第2のメモリよりも容量が小さい、
上記(101)に記載の情報処理装置。
(103)前記第1の演算部はGPU又はその他のメニーコア演算器からなり、前記第2の演算部はCPUからなる、
上記(101)又は(102)のいずれかに記載の情報処理装置。
(104)前記グラフ情報は、音声認識において音響モデル、発音辞書及び言語モデルを表現したWFSTモデルであり、
 前記第1のグラフはWFSTモデルを大小2つの分割した小さい方のWFSTモデルであり、前記第2のグラフは大きい方のWFSTモデルである、
上記(103)に記載の情報処理装置。
(105)言語モデルを大小2つに分割し、第1の個数以下の単語のつながりを考慮した小さい方の言語モデルを音響モデル及び発音辞書と合成した小さい方のWFSTモデルを前記第1のグラフ情報とし、前記第1の個数より多い任意の個数の単語のつながりを考慮した言語モデルからなる大きい方のWFSTモデルを前記第2のグラフ情報とする、
上記(104)に記載の情報処理装置。
(106)前記第1の演算部が前記第1のグラフ情報を用いて探索処理を実行中に前記第2のグラフ情報の参照が必要になったときに、前記第2のグラフ情報のうち必要な部分を前記第2のメモリから前記第1のメモリへコピーして、前記第1の演算部による探索処理を継続させる、
上記(101)乃至(105)のいずれかに記載の情報処理装置。
(107)前記グラフ情報はWFSTモデルであり、
小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルのトークンの状態遷移を行う必要が発生したときに、処理に必要なデータを前記第2のメモリから前記第1のメモリへコピーにコピーしながら、前記第1の演算部がすべての探索処理を行う、
上記(106)に記載の情報処理装置。
(108)前記第1の演算部は、前記第2のグラフのうち必要なアークが配置されている前記第2のメモリ上の位置をあらかじめ計算しておく、
上記(101)乃至(107)のいずれかに記載の情報処理装置。
(109)前記第1の演算部と前記第2の演算部で共通のページテーブルを持ち、前記第1の演算部が前記第1のメモリ上にないページのアークを参照したことに応答して、該当するページを前記第2のメモリから前記第1のメモリへ移動させる、
上記(108)に記載の情報処理装置。
(110)前記第1の演算部があらかじめ計算した前記必要なアークの位置情報のリストを前記第2の演算部に送信し、
 前記第2の演算部は、前記リストに基づいて、前記第1の演算部がグラフ探索中に必要となったアークを前記第2のメモリから前記第1のメモリへコピーする、
上記(108)に記載の情報処理装置。
(111)前記第1のメモリは、前記第2のグラフ情報を保持するキャッシュを備える、
上記(101)乃至(110)のいずれかに記載の情報処理装置。
(112)前記キャッシュは、ソース状態の識別情報と入力ラベルを入力にとり、アークを返すデータ構造を有する、
上記(111)に記載の情報処理装置。
(113)音声認識処理に適用され、
 前記第2の演算部において、入力音声の特徴量を計算する特徴量抽出を実行し、
 前記第1の演算部において特徴量からHMM状態スコアを計算するHMMスコア計算と、前記第1のメモリに配置された前記第1のグラフ情報と前記第2のメモリに配置された前記第2のグラフ情報を用いてオンザフライ合成による探索処理を実行する、
上記(101)乃至(112)のいずれかに記載の情報処理装置。
(114)前記第2の演算部において、前記第1の演算部が実行した探索処理により得られた音声認識結果を出力するための処理をさらに実行する、
上記(113)に記載の情報処理装置。
(115)音声を入力する音声入力部又は音声認識結果を出力する出力部のうち少なくとも一方をさらに備える、
上記(114)に記載の情報処理装置。
(116)グラフ情報を分割した第1のグラフ情報を第1の演算部の第1のメモリに配置するステップと、
 前記グラフ情報を分割した第2のグラフ情報を第2の演算部の第2のメモリに配置するステップと、
 前記第1の演算部が、前記第1のメモリに配置された前記第1のグラフ情報及び前記第2のメモリに配置された第2のグラフ情報を用いてグラフ探索処理を実行するステップと、
を有する情報処理方法。
 100…音声認識システム、101…特徴量抽出部
 102…DNN計算部、103…WFST探索部
 300…音声認識システム、310…CPU
 311…メインメモリ、320…GPU、321…デバイスメモリ
 401…信号処理部、402…特徴量抽出部
 403…HMMスコア計算部、404…グラフ探索部
 405…認識結果出力処理部
 441…音声入力部、442…出力部
 901…大グラフキャッシュ
 1200…エージェントシステム、1201…エージェントデバイス
 1202…エージェントサービス、1203…意味解析部
 1211…テレビ、1212…冷蔵庫、1213…LED照明
 1500…音声認識システム、1510…CPU、1520…メモリ
 1530…ディスク
 1701…アーク配列、1702…アークインデックス
 1703…入力ラベル配列
 1801…アーク配列、1802…アークインデックス
 1803…入力ラベル配列
 1900…CPU、1901…信号処理部、1902…特徴量抽出部
 1903…HMMスコア計算部、1904…WFST探索部
 1905…認識結果出力部、1910…RAM
 1911…音響モデル、1912…WFSTモデル(小)
 1913…言語モデルアークキャッシュ
 1914…WFSTモデル(大)アクセス用データ
 1915…作業領域、1920…SSD
 1921…WFSTモデル(大)、1931…音声入力部
 1932…出力部
 2400…CPU、2401…信号処理部、2402…特徴量抽出部
 2403…HMMスコア計算部、2404…WFST探索部
 2405…認識結果出力部、2410…RAM
 2411…音響モデル、2412…WFSTモデル(小)
 2413…言語モデルアークキャッシュ
 2414…WFSTモデル(大)アクセス用データ
 2415…作業領域、2416…言語モデルアクセスパターンモデル
 2420…SSD、2421…WFSTモデル(大)
 2431…音声入力部、2432…出力部
 2700…音声認識システム、2701…信号処理部
 2702…特徴量抽出部、2703…HMMスコア計算部
 2704…WFST探索部、2705…認識結果出力部
 2710…CPU、2720…GPU、2730…GPUメモリ
 2731…音響モデル、2732…WFSTモデル(小)
 2733…言語モデルアークキャッシュ
 2734…WFSTモデル(大)アクセス用データ
 2735…作業領域、2736…言語モデルアクセスパターンモデル
 2740…SSD、2741…WFSTモデル(大)
 2751…音声入力部、2752…出力部

Claims (20)

  1.  演算部と、第1の記憶装置と、第2の記憶装置を具備し、
     グラフ情報を第1のグラフ情報と第2のグラフ情報に2分割し、
     前記第1のグラフ情報を前記第1の記憶装置に配置し、
     前記第2のグラフ情報を前記第2の記憶装置に配置し、
     前記演算部が、前記第1の記憶装置に配置された前記第1のグラフ情報及び前記第2の記憶装置に配置された第2のグラフ情報を用いてグラフ探索処理を実施する、情報処理装置。
  2.  前記第1のグラフ情報は前記第2のグラフ情報よりもサイズが小さく、
     前記第1の記憶装置は前記第2の記憶装置よりも容量が小さい、
    請求項1に記載の情報処理装置。
  3.  前記グラフ情報は、音声認識において音響モデル、発音辞書及び言語モデルを表現したWFST(Weighted Finite State Transducer)モデルであり、
     前記第1のグラフはWFSTモデルを大小2つの分割した小さい方のWFSTモデルであり、前記第2のグラフは大きい方のWFSTモデルである、
    請求項2に記載の情報処理装置。
  4.  言語モデルを大小2つに分割し、第1の個数以下の単語のつながりを考慮した小さい方の言語モデルを音響モデル及び発音辞書と合成した小さいWFSTモデルを前記第1のグラフ情報とし、前記第1の個数より多い任意の個数の単語のつながりを考慮した言語モデルからなる大きいWFSTモデルを前記第2のグラフ情報とする、
    請求項3に記載の情報処理装置。
  5.  前記演算部は、前記第1のグラフ情報を用いて探索処理を実行中に前記第2のグラフ情報の参照が必要になったときに、前記第2のグラフ情報のうち必要な部分を前記第2の記憶装置から前記第1の記憶装置へコピーして、前記探索処理を継続させる、
    請求項1に記載の情報処理装置。
  6.  前記演算部は、GPU(Graphics Processing Unit)又はその他のメニーコア演算器からなる第1の演算部と、CPU(Central Processing Unit)からなる第2の演算部を含み、
     前記第1の記憶装置は前記GPU内のメモリであり、前記第2の記憶装置は前記CPUのローカルメモリである、
    請求項1に記載の情報処理装置。
  7.  前記グラフ情報はWFSTモデルであり、
     前記第1の演算部は、小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルのトークンの状態遷移を行う必要が発生したときに、処理に必要なデータを前記第2の記憶装置から前記第1の記憶装置へコピーにコピーしながら、前記第1の演算部がすべての探索処理を行う、
    請求項6に記載の情報処理装置。
  8.  前記第1の演算部は、前記第2のグラフのうち必要なアークが配置されている前記第2の記憶装置上の位置をあらかじめ計算しておく、
    請求項6に記載の情報処理装置。
  9.  前記第1の演算部と前記第2の演算部で共通のページテーブルを持ち、前記第1の演算部が前記第1の記憶装置上にないページのアークを参照したことに応答して、該当するページを前記第2の記憶装置から前記第1の記憶装置へ移動させる、
    請求項8に記載の情報処理装置。
  10.  前記第1の演算部があらかじめ計算した前記必要なアークの位置情報のリストを前記第2の演算部に送信し、
     前記第2の演算部は、前記リストに基づいて、前記第1の演算部がグラフ探索中に必要となったアークを前記第2の記憶装置から前記第1の記憶装置へコピーする、
    請求項8に記載の情報処理装置。
  11.  前記第1の記憶装置は、前記第2のグラフ情報を保持するキャッシュを備える、
    請求項1に記載の情報処理装置。
  12.  前記キャッシュは、ソース状態の識別情報と入力ラベルを入力にとり、アークを返すデータ構造を有する、
    請求項11に記載の情報処理装置。
  13.  音声認識処理に適用され、
     前記第2の演算部において、入力音声の特徴量を計算する特徴量抽出を実行し、
     前記第1の演算部において特徴量からHMM(Hidden Markov Model)状態スコアを計算するHMMスコア計算と、前記第1の記憶装置に配置された前記第1のグラフ情報と前記第2の記憶装置に配置された前記第2のグラフ情報を用いてオンザフライ合成による探索処理を実行する、
    請求項5に記載の情報処理装置。
  14.  前記第2の演算部において、前記第1の演算部が実行した探索処理により得られた音声認識結果を出力するための処理をさらに実行する、
    請求項13に記載の情報処理装置。
  15.  前記第1の記憶装置は前記演算部のローカルメモリであり、前記第2の記憶装置は補助記憶装置であり、
     前記演算部は、小さいWFSTモデルでトークンを遷移させていくが、遷移したアークから単語が出力され、大きいWFSTモデルのトークンの状態遷移を行う必要が発生したときに、処理に必要なデータを前記第2の記憶装置から前記第1の記憶装置へコピーしながら、前記探索処理を行う、
    請求項4に記載の情報処理装置。
  16.  前記第1の記憶装置は、前記第2の記憶装置内の大きい方のWFSTモデルへのアクセス用データを保持し、
     前記演算部は、前記アクセス用データに基づいて、処理に必要なデータを前記第2の記憶装置から前記第1の記憶装置へコピーする、
    請求項15に記載の情報処理装置。
  17.  大きい方のWFSTモデルは、アークをソースの状態の状態IDと入力ラベルでソートしたアーク配列からなり、
     前記第1の記憶装置は、前記アクセス用データとして、各状態のアークの前記アーク配列上の開始位置を格納するアークインデックスと、前記アーク配列上のアークに対応する入力ラベルを前記アーク配列と同じ配列で格納する入力ラベル配列を備え、
     前記演算部は、前記アークインデックスで目的のアークのソース状態の状態IDのアーク配列上の開始位置を特定し、前記入力ラベル配列上の前記開始位置の要素から目的のアークの入力ラベルを検索することによって、前記アーク配列上の目的のアークが格納されている位置を特定して、前記第2の記憶装置の前記アーク配列から目的のアークのデータを取得する、
    請求項16に記載の情報処理装置。
  18.  大きい方のWFSTモデルは、アークをソースの状態の状態IDと入力ラベルでソートしたアーク配列からなり、
     前記第1の記憶装置は、前記アクセス用データとして、各状態のアークの前記アーク配列上の開始位置を格納するアークインデックスと、前記アーク配列をページ毎の区切り、各ページの前記アーク配列の先頭の要素の入力ラベルを格納する入力ラベル配列を備え、
     前記演算部は、前記アークインデックスに基づいて目的のアークが存在するページ範囲を計算し、前記入力ラベル配列に基づいて、前記ページ範囲の中から目的のアークが存在するページを特定して、前記第2の記憶装置の前記アーク配列から前記特定したページを取得する、
    請求項16に記載の情報処理装置。
  19.  過去のアークへのアクセス履歴に基づいて次にアクセスされる可能性が高いアーク又はページを予測するアクセスパターンモデルをさらに備え、
     前記演算部は、前記アクセスパターンモデルに基づいて予測されるアークまたはページの前記第2の記憶装置からの事前読み込みを行う、
    請求項17に記載の情報処理装置。
  20.  演算部と、第1の記憶装置と、第2の記憶装置を具備する情報処理装置において、
     グラフ情報を分割した第1のグラフ情報を第1の記憶装置に配置するステップと、
     前記グラフ情報を分割した第2のグラフ情報を第2の記憶装置に配置するステップと、
     前記演算部が、前記第1の記憶装置に配置された前記第1のグラフ情報及び前記第2の記憶装置に配置された第2のグラフ情報を用いてグラフ探索処理を実行するステップと、
    を有する情報処理方法。
PCT/JP2019/049771 2019-03-04 2019-12-19 情報処理装置及び情報処理方法 WO2020179193A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021503424A JPWO2020179193A1 (ja) 2019-03-04 2019-12-19
US17/433,389 US20220147570A1 (en) 2019-03-04 2019-12-19 Information processing apparatus and information processing method

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2019-039051 2019-03-04
JP2019039051 2019-03-04
JP2019-182142 2019-10-02
JP2019182142 2019-10-02

Publications (1)

Publication Number Publication Date
WO2020179193A1 true WO2020179193A1 (ja) 2020-09-10

Family

ID=72338554

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/049771 WO2020179193A1 (ja) 2019-03-04 2019-12-19 情報処理装置及び情報処理方法

Country Status (3)

Country Link
US (1) US20220147570A1 (ja)
JP (1) JPWO2020179193A1 (ja)
WO (1) WO2020179193A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11605376B1 (en) * 2020-06-26 2023-03-14 Amazon Technologies, Inc. Processing orchestration for systems including machine-learned components

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015011709A (ja) * 2013-07-01 2015-01-19 パロ・アルト・リサーチ・センター・インコーポレーテッドPalo Alto Research Center Incorporated 明示的に表されたグラフで並列探索を行うシステムおよび方法
JP2015014774A (ja) * 2013-06-03 2015-01-22 日本電信電話株式会社 音声認識用wfst作成装置、音声認識装置、音声認識用wfst作成方法、音声認識方法及びプログラム
JP2015041055A (ja) * 2013-08-23 2015-03-02 ヤフー株式会社 音声認識装置、音声認識方法、およびプログラム
JP2015529350A (ja) * 2012-09-07 2015-10-05 カーネギー メロン ユニバーシティCarnegie Mellon University ハイブリッドgpu/cpuデータ処理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10255911B2 (en) * 2014-12-17 2019-04-09 Intel Corporation System and method of automatic speech recognition using parallel processing for weighted finite state transducer-based speech decoding
US9972314B2 (en) * 2016-06-01 2018-05-15 Microsoft Technology Licensing, Llc No loss-optimization for weighted transducer
US11366866B2 (en) * 2017-12-08 2022-06-21 Apple Inc. Geographical knowledge graph

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015529350A (ja) * 2012-09-07 2015-10-05 カーネギー メロン ユニバーシティCarnegie Mellon University ハイブリッドgpu/cpuデータ処理方法
JP2015014774A (ja) * 2013-06-03 2015-01-22 日本電信電話株式会社 音声認識用wfst作成装置、音声認識装置、音声認識用wfst作成方法、音声認識方法及びプログラム
JP2015011709A (ja) * 2013-07-01 2015-01-19 パロ・アルト・リサーチ・センター・インコーポレーテッドPalo Alto Research Center Incorporated 明示的に表されたグラフで並列探索を行うシステムおよび方法
JP2015041055A (ja) * 2013-08-23 2015-03-02 ヤフー株式会社 音声認識装置、音声認識方法、およびプログラム

Also Published As

Publication number Publication date
JPWO2020179193A1 (ja) 2020-09-10
US20220147570A1 (en) 2022-05-12

Similar Documents

Publication Publication Date Title
Price et al. A low-power speech recognizer and voice activity detector using deep neural networks
CN107408384B (zh) 部署的端对端语音识别
US11798535B2 (en) On-device custom wake word detection
US6574597B1 (en) Fully expanded context-dependent networks for speech recognition
KR101970041B1 (ko) 하이브리드 지피유/씨피유(gpu/cpu) 데이터 처리 방법
Arısoy et al. Converting neural network language models into back-off language models for efficient decoding in automatic speech recognition
CN110364171A (zh) 一种语音识别方法、语音识别系统及存储介质
US11107461B2 (en) Low-power automatic speech recognition device
Price et al. A 6 mW, 5,000-word real-time speech recognizer using WFST models
GB2453366A (en) Automatic speech recognition method and apparatus
KR20140041735A (ko) 가변길이 문맥을 이용한 음성인식
CN112420026A (zh) 优化关键词检索系统
Bai et al. End-to-end keywords spotting based on connectionist temporal classification for mandarin
US11551668B1 (en) Generating representations of speech signals using self-supervised learning
Suyanto et al. End-to-End speech recognition models for a low-resourced Indonesian Language
Rajendran et al. Language dialect based speech emotion recognition through deep learning techniques
WO2020179193A1 (ja) 情報処理装置及び情報処理方法
Markovnikov et al. Investigating joint CTC-attention models for end-to-end Russian speech recognition
Lin et al. A multi-FPGA 10x-real-time high-speed search engine for a 5000-word vocabulary speech recognizer
Ström Continuous speech recognition in the WAXHOLM dialogue system
Price Energy-scalable speech recognition circuits
US20220319501A1 (en) Stochastic future context for speech processing
You et al. Flexible and expandable speech recognition hardware with weighted finite state transducers
Domokos et al. Romanian phonetic transcription dictionary for speeding up language technology development
Pinto et al. Design and evaluation of an ultra low-power human-quality speech recognition system

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19918308

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021503424

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19918308

Country of ref document: EP

Kind code of ref document: A1