---
name: "dtlk"
section: "4"
platform: "linux"
package: "dtlk"
version: "1.12-7"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/dtlk"
---

# dtlk(4)

DoubleTalk PC device for Linux kernel

## NAME

dtlk - DoubleTalk PC device for Linux kernel

## DESCRIPTION

This is a character device to access a DoubleTalk PC, a speech synthesizer manufactured by RC Systems (http://www.rcsys.com/).

This file is typically created by:

    mknod -m 777 /dev/dtlk c 127 0

However, the major device number (here 127) is dynamically assigned, so yours may be different.  You can find out with the command

    cat /proc/devices\|grep

The DoubleTalk PC contains four voice synthesizers: text-to-speech (TTS), linear predictive coding (LPC), PCM/ADPCM, and CVSD.  It also has a tone generator.  Output data for LPC are written to the LPC port, and output data for the other modes are written to the TTS port.

Two kinds of data can be read from the DoubleTalk: status information (in response to the " 01?" interrogation command) is read from the TTS port, and index markers (which mark the progress of the speech) are read from the LPC port.  Not all models of the DoubleTalk PC implement index markers.  Both the TTS and LPC ports can also display status flags.

The DoubleTalk PC generates no interrupts.

These characteristics are mapped into the Unix stream I/O model as follows:

"write" sends bytes to the TTS port.  This driver is intended for use with the text-to-speech synthesizer.  If LPC output is needed some day, other minor device numbers can be used to select among output modes.

"read" gets index markers from the LPC port.  If the device does not implement index markers, the read will fail with error **EINVAL**.

One ioctl() call is also provided:

- **int ioctl(int** *fd***, DTLK\_INTERROGATE, int** *arg***)**

  Get status information. *arg* should be a pointer to a **struct** **dtlk\_settings** which is defined as follows:

  ```
  struct dtlk_settings
  {
    unsigned short serial_number;	/* 0-7Fh:0-7Fh */
    unsigned char rom_version[24]; /* null terminated string */
    unsigned char mode;		/* 0=Character 1=Phoneme 2=Text */
    unsigned char punc_level;	/* nB; 0-7 */
    unsigned char formant_freq;	/* nF; 0-9 */
    unsigned char pitch;		/* nP; 0-99 */
    unsigned char speed;		/* nS; 0-9 */
    unsigned char volume;		/* nV; 0-9 */
    unsigned char tone;		/* nX; 0-2 */
    unsigned char expression;	/* nE; 0-9 */
    unsigned char ext_dict_loaded; /* 1=exception dictionary
                                      loaded */
    unsigned char ext_dict_status; /* 1=exception dictionary
                                      enabled */
    unsigned char free_ram;	/* # pages (truncated)
                                     remaining for text buffer */
    unsigned char articulation;	/* nA; 0-9 */
    unsigned char reverb;		/* nR; 0-9 */
    unsigned char eob;		/* 7Fh value indicating end of
                                     parameter block */
    unsigned char has_indexing;	/* nonzero if indexing is
                                     implemented */
  };
  ```

  The parameters are explained in the file *manual.txt* on the floppy disk shipped with the DoubleTalk synthesizer.

## FILES

*/dev/dtlk* - DoubleTalk device

## BUGS

The LPC (linear predictive coding) mode is not supported.

## AUTHOR

```
Original author: Chris Pallotta <chris@allmedia.com>
Current maintainer: Jim Van Zandt <jrv@vanzandt.mv.com>
```

## SEE ALSO

**emacspeak-dt**(1), [**dtlk-install**(8)](/dtlk-install/8.md)
