File Description: CSL NSP file
File Extension: Commonly .nsp
File Byte Order: Little-endian
Prof. Peter Kabal, MMSP Lab, ECE, McGill University: Last update:
2017-01-20
(with contributions from R. Roark)
The Computerized Speech Lab (CSL) from KayPENTAX (Kay Elemetrics) uses a proprietary file format. The NSP file format was also used for the Phonetic Datbase (PDB) from Speech Technology Research. At one time, STR had a free NSP Player: SpeakNSP.
Note that CSL files may contain both sound and bioelectric data. Typically, the first channel is sound pressure (audio) and additional channels are data such as laryngeal kinematic or aerodynamic (air pressure or air flow) obtained by instruments such as those from KayPENTAX.
CSL NSP file reading and writing is supported by the WaveSurfer package from the Speech Communication & Technology Group at KTH in Sweden; reading is supported by the AFsp package.
The NSP header format uses chunks. Each chunk consists of a chunk identifier, chunk length and chunk data.
The header for an NSP file starts with a pair of identifiers.
Offset | Length | Type | Contents |
---|---|---|---|
0 | 4 | character | Identifier: FORM |
4 | 4 | character | Chunk identifier: DS16 |
8 | 4 | unsigned integer | Chunk length |
12 | - | - | Chunk data |
FORM
chunk, the chunk length is the file length less 12 bytes.DS16
indicates that the data are coded as 16-bit integer.DS16
chunk.HEDR
or HDR8
,
NOTE
, SDA_
,
SD_B
, SDAB
.
SD_2
, ... SD_8
.HEDR
or HDR8
ChunkOffset | Length | Type | Contents |
---|---|---|---|
0 | 4 | character | Identifier: HEDR or HDR8 |
4 | 4 | unsigned integer | Chunk length (32 or 44 ) |
8 | 20 | character | Date, e.g. May 26 23:57:43 1995 |
28 | 4 | unsigned integer | Sampling rate |
32 | 4 | unsigned integer | Data length (bytes) |
36 | 2 | unsigned integer | Maximum absolute value for channel A; 0xFFFF if not defined |
38 | 2 | unsigned integer | Maximum absolute value for channel B: 0xFFFF if not defined |
40 | 12 | 6 unsigned integers | HDR8 only: Maximum absolute values for channel 3 through
channel 8 |
NOTE
ChunkOffset | Length | Type | Contents |
---|---|---|---|
0 | 4 | character | Identifier: NOTE |
4 | 4 | integer | Chunk length |
8 | - | character | Comment string |
SDA_
, SD_A
, SDAB
,
SD_2
, SD_3
, ... , SD_8
Chunk
Offset | Length | Type | Contents |
---|---|---|---|
0 | 4 | character | Identifier: SDA_ , SD_B ,
SDAB , SD_2 , ... ,
SD_8 |
4 | 4 | integer | Chunk length |
8 | 2N | N integers | Integer data |
SDAB
, the two-channel data are
interlaced. For all other chunk identifiers, the data values are sequential by
channel. The chunk designators indicate whether left, right, both channels, or
multiple channels are present.