Structured Codebook Storage with Sub-Vector Recombination

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing speech and audio codecs require significant memory and computational resources for encoding, particularly in ROM-based memory, despite the use of structured codebooks, which limits further reduction in memory requirements.

Innovation Solution

The proposed solution involves forming basis code vectors by combining vector components from sub-vectors pointed to by integers modulo n, stored in tables, allowing for efficient storage and retrieval of basis code vectors, reducing memory usage by using a sub-basis code vector table and a pointer table, and employing modulo arithmetic to extend the range of pointer values for operating modes beyond the data type limit.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If structured codebooks are used in speech and audio codecs, then coding efficiency is preserved, but memory requirements remain significant

Engineering Contradiction:
Improvecoding efficiencyVSAvoidmemory requirements
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The codebook is divided into multiple leader classes, each representing a subset of the full codebook. Instead of storing all code vectors, only leader vectors are stored in memory. During encoding, the input vector is compared against these leader classes to determine which leader class contains the nearest neighbor code vector, significantly reducing memory requirements while maintaining coding efficiency.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Leader vectors serve as intermediaries between the input vector and the full codebook. The leader class comparison acts as an intermediate step that avoids direct comparison with all code vectors in the codebook, reducing the computational and memory burden while preserving the ability to find the nearest neighbor code vector.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If multiple operating modes are supported in the codec, then adaptability is improved, but memory consumption increases

Engineering Contradiction:
Improveoperating modes supportVSAvoidmemory consumption
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The leader class structure is designed to be universal across multiple operating modes. The same leader class framework can accommodate different codebook sizes and structures by adjusting the number of leader classes and their dimensions, allowing a single memory-efficient implementation to serve multiple operating modes without requiring separate codebook storage for each mode.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The system adapts to different operating modes by changing parameters such as the number of leader classes, the dimensionality of leader vectors, and the scaling factors applied to leader classes. These parameter adjustments allow the same fundamental data structure to support multiple operating modes while maintaining memory efficiency.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentEP3413309B1Efficient storage of multiple structured codebooks
Publication Date: 2020.07.22 NOKIA TECHNOLOGIES OY
  • EP3413309B1 patent drawingFigure 1a~1b
  • EP3413309B1 patent drawingFigure 2
  • EP3413309B1 patent drawingFigure 3

AI summary

It is inter alia disclosed an apparatus comprising: a table comprising a plurality of sub vectors, wherein each entry of the table is a sub vector and each sub vector have vector components which are the same as vector components of one or more basis code vectors; and a further table wherein an entry of the further table comprises a first pointer pointing to a sub vector in the table and a second pointer pointing to a sub vector in the table, wherein the first pointer and the second pointer are arranged in the further table such that when vector components of the sub vector pointed to by the first pointer are combined with vector components of the sub vector pointed to by the second pointer a basis code vector is formed.