menu "Speakup console speech"

config SPEAKUP
	depends on VT
	tristate "Speakup core"
	---help---
		This is the Speakup screen reader.  Think of it as a
		video console for blind people.  If built in to the
		kernel, it can speak everything on the text console from
		boot up to shutdown.  For more information on Speakup,
		point your browser at http://www.linux-speakup.org/.
		There is also a mailing list at the above url that you
		can subscribe to.
		
		Supported synthesizers are accent sa, accent pc,
		appollo II., Auddapter, Braille 'n Speak, Dectalk
		external (old), Dectalk PC (full length isa board),
		Dectalk express, Doubletalk, Doubletalk LT or
		Litetalk, Keynote Gold internal PC, software
		synthesizers, Speakout, transport, and a dummy module
		that can be used with a plain text terminal.
		
		Speakup can either be built in or compiled as a module
		by answering y or m.  If you answer y here, then you
		must answer either y or m to at least one of the
		synthesizer drivers below.  If you answer m here, then
		the synthesizer drivers below can only be built as
		modules.
		
		These drivers are not standalone drivers, but must be
		used in conjunction with Speakup.  Think of them as
		video cards for blind people.
		
		
		The Dectalk pc driver can only be built as a module, and
		requires software to be pre-loaded on to the card before
		the module can be loaded.  See the decpc choice below
		for more details.
		
		If you are not a blind person, or don't have access to
		one of the listed synthesizers, you should say n.

if SPEAKUP
config SPEAKUP_SYNTH_ACNTSA
	tristate "Accent SA synthesizer support"
	---help---
		This is the Speakup driver for the Accent SA
		synthesizer.  You can say y to build it into the kernel,
		or m to build it as a module.  See the configuration
		help on the Speakup choice above for more info.

config SPEAKUP_SYNTH_ACNTPC
	tristate "Accent PC synthesizer support"
	---help---
		This is the Speakup driver for the accent pc
		synthesizer.  You can say y to build it into the kernel,
		or m to build it as a module.  See the configuration
		help on the Speakup choice above for more info.

config SPEAKUP_SYNTH_APOLLO
	tristate "Apollo II synthesizer support"
	---help---
		This is the Speakup driver for the Apollo II
		synthesizer.  You can say y to build it into the kernel,
		or m to build it as a module.  See the configuration
		help on the Speakup choice above for more info.

config SPEAKUP_SYNTH_AUDPTR
	tristate "Audapter synthesizer support"
	---help---
		This is the Speakup driver for the Audapter synthesizer.
		 You can say y to build it into the kernel, or m to
		build it as a module.  See the configuration help on the
		Speakup choice above for more info.

config SPEAKUP_SYNTH_BNS
	tristate "Braille 'n' Speak synthesizer support"
	---help---
		This is the Speakup driver for the Braille 'n' Speak
		synthesizer.  You can say y to build it into the kernel,
		or m to build it as a module.  See the configuration
		help on the Speakup choice above for more info.

config SPEAKUP_SYNTH_DECTLK
	tristate "DECtalk Express synthesizer support"
	---help---
		
		This is the Speakup driver for the DecTalk Express
		synthesizer.  You can say y to build it into the kernel,
		or m to build it as a module.  See the configuration
		help on the Speakup choice above for more info.

config SPEAKUP_SYNTH_DECEXT
	tristate "DECtalk External (old) synthesizer support"
	---help---
		
		This is the Speakup driver for the DecTalk External
		(old) synthesizer.  You can say y to build it into the
		kernel, or m to build it as a module.  See the
		configuration help on the Speakup choice above for more
		info.

config SPEAKUP_SYNTH_DECPC
	depends on m
	tristate "DECtalk PC (big ISA card) synthesizer support"
	---help---
		
		This is the Speakup driver for the DecTalk PC (full
		length ISA) synthesizer.  You can say m to build it as
		a module.  See the configuration help on the Speakup
		choice above for more info.
		
		In order to use the DecTalk PC driver, you must download
		the dec_pc.tgz file from linux-speakup.org.  It is in
		the pub/linux/goodies directory.  The dec_pc.tgz file
		contains the software which must be pre-loaded on to the
		DecTalk PC board in order to use it with this driver.
		This driver must be built as a module, and can not be
		loaded until the file system is mounted and the DecTalk
		PC software has been pre-loaded on to the board.
		
		See the README file in the dec_pc.tgz file for more
		details.

config SPEAKUP_SYNTH_DTLK
	tristate "DoubleTalk PC synthesizer support"
	---help---
		
		This is the Speakup driver for the internal DoubleTalk
		PC synthesizer.  You can say y to build it into the
		kernel, or m to build it as a module.  See the
		configuration help on the Speakup choice above for more
		info.

config SPEAKUP_SYNTH_KEYPC
	tristate "Keynote Gold PC synthesizer support"
	---help---
		
		This is the Speakup driver for the Keynote Gold
		PC synthesizer.  You can say y to build it into the
		kernel, or m to build it as a module.  See the
		configuration help on the Speakup choice above for more
		info.

config SPEAKUP_SYNTH_LTLK
	tristate "DoubleTalk LT/LiteTalk synthesizer support"
---help---

		This is the Speakup driver for the LiteTalk/DoubleTalk
		LT synthesizer.  You can say y to build it into the
		kernel, or m to build it as a module.  See the
		configuration help on the Speakup choice above for more
		info.

config SPEAKUP_SYNTH_SOFT
	tristate "Userspace software synthesizer support"
	---help---

		This is the software synthesizer device node.  It will
		register a device /dev/softsynth which midware programs
		and speech daemons may open and read to provide kernel
		output to software synths such as espeak, festival,
		flite and so forth.  You can select 'y' or 'm' to have
		it built-in to the kernel or loaded as a module.

config SPEAKUP_SYNTH_SPKOUT
	tristate "Speak Out synthesizer support"
	---help---
		
		This is the Speakup driver for the Speakout synthesizer.
		 You can say y to build it into the kernel, or m to
		build it as a module.  See the configuration help on the
		Speakup choice above for more info.

config SPEAKUP_SYNTH_TXPRT
	tristate "Transport synthesizer support"
	---help---
		
		This is the Speakup driver for the Transport
		synthesizer.  You can say y to build it into the kernel,
		or m to build it as a module.  See the configuration
		help on the Speakup choice above for more info.

config SPEAKUP_SYNTH_DUMMY
	tristate "Dummy synthesizer driver (for testing)"
	---help---
		
		This is a dummy Speakup driver for plugging a mere serial
		terminal.  This is handy if you want to test speakup but
		don't have the hardware.  You can say y to build it into
		the kernel, or m to build it as a module.  See the
		configuration help on the Speakup choice above for more info.

endif	# SPEAKUP
endmenu
