Академический Документы
Профессиональный Документы
Культура Документы
ECE(ES)
CHAPTER 1
INTRODUCTION
1.1 Objective of the project
In order to make the user listen any text into voice conversions which will make the systems
to readout any written text into a audible mode. The text file which will be converted into
speech. For this we are using an embedded RASPBERRY PI processor which has the
capability of operating system porting. An open source speech synthesis algorithm is
deployed in RASPBERRY PI Processor for text to speech conversion. This algorithm will
help not only sighted people to enjoy audio files but also visually impaired people because
almost all of their information is obtained from speech. So by using this project the visually
impaired people can be have better advantage by listening the speech. Apart from this we can
use in in Railway stations, Companies, Bus stations, Shopping malls etc.. so whatever we
enter in the Text file it will be converted in the form of speech, so burden on the Human
beings will be less.
The objective of the project include
1. Converting the given Written Text file into voice conversion
1.2 MOTIVATION
Nowadays, listening to audio books on mobile devices is quite common. Therefore, in the
future we will obtain ever-increasing amounts of information through speech instead of
conventional printed materials. So instead of Reading the books we can hear the speech in the
form of the headphones or in the form of the speakers and also whatever the User will Write
it will be read in the form of the speech. In this project we have used Open source Speech
Synthesis Algorithm for converting the files from Text to Speech So People read books at
various levels of detail from close reading to skimming. By using this concept what ever we
entered in the Text file will be converted in the form of the Speech in the form of the
computer generated voice. This opens up a lot of opportunities in the future by their own
generated voice.
1
ECET
ECE(ES)
2
ECET
ECE(ES)
CHAPTER 2
LITERATURE SURVEY
2.1 Introduction
To Design a low cost Text to speech embedded device. We describe an adaptive
speech rate control technology for ultrafast listening that is equivalent to skimming.
Nowadays, listening to audio books on mobile devices is quite common. Therefore, in the
future we will obtain ever-increasing amounts of information through speech instead of
conventional printed materials. People read books at various levels of detail from close
reading to skimming. Although a similar feature to skimming is required to efficiently obtain
information from audio sources, there is no tool equivalent to skimming for audio playback.
ECE(ES)
used to count the duration of the characters from the Intonation and the Linguistic Analysis is
to change the Language according to the textile and it generates the Utterance composed of
Phonemes and by using Waveform Generator block Synthetic Voice is inbuilt in Flite Speech
Synthesis which will readout the Output Phonemes through Audio port.
Using Qutopia GUI, designer interface for loading the file by using select button and
by clicking on the play button, the Text will be loaded into the Open Source Speech Synthesis
Algorithm and Speech will be generated as output.
4
ECET
ECE(ES)
CHAPTER 3
ADC
ECE(ES)
The input to the circuit is applied from the regulated power supply. The
a.c. input i.e., 230V from the mains supply is step down by the
transformer to 12V and is fed to a rectifier. The output obtained from the
rectifier is a pulsating d.c voltage. So in order to get a pure d.c voltage,
the output voltage from the rectifier is fed to a filter to remove any a.c
components present even after rectification. Now, this voltage is given to
a voltage regulator to obtain a pure constant dc voltage.
ECE(ES)
("samples" the input) periodically. The result is a sequence of digital values that have been
converted from a continuous-time and continuous-amplitude analog signals to a discrete-time
and discrete-amplitude digital signal.
3.2.5 SPEAKER
A system's speaker is the component that takes the electronic signal stored on things like
CDs, tapes and DVDs and turns it back into actual sound that we can hear.
CHAPTER 4
RASPBERRY PI PROCESSOR
Released in July 2014, the Model B+ is a updated revision of the Model B. It
increases the number of USB ports to 4 and the number of pins on the GPIO
header to 40. In addition, it has improved power circuitry which allows higher
powered USB devices to be attached and now hotplugged. The full size
composite video connector has been removed and the functionality moved to the
3.5mm audio/video jack. The full size SD card slot has also been replaced with a
much more robust microSD slot.
7
ECET
ECE(ES)
The following list details some of the improvements over the Model B.
Current monitors on the USB ports mean the B+ now supports hot plugging.
Current limiter on the 5V for HDMI means HDMI cable powered VGA converters
will now all work
14 more GPIO pins
EEPROM readout support for the new HAT expansion boards
Higher drive capacity for analog audio out, from a separate regulator, which
means a better audio DAC quality.
No more backpowering problems, due to the USB current limiters which also
inhibit back flow, together with the "ideal power diode"
Composite output moved to 3.5mm jack
Connectors now moved to two sides of the board rather than the four of the
original device.
Ethernet LED's moved to the ethernet connector
4 squarely positioned mounting holes for more rigid attachment to cases etc.
The power circuit changes also means a reduction in power requirements of
between 0.5W and 1W.
Product Description:
The Raspberry Pi Model B+ incorporates a number of enhancements and new
features. Improved power consumption, increased connectivity and greater IO
are among the improvements to thisPowerful, small and lightweight ARM based
computer.
Specifications
Chip Broadcom
Core architecture
CPU
: BCM2835 SoC
: ARM11
: 700 MHz Low Power ARM1176JZFS Applications Processor
8
ECET
GPU
ECE(ES)
Memory
: 512MB SDRAM
Operating System
Dimensions
: 85 x 56 x 17mm
Power
Ethernet
Video Output
Audio Output
USB
GPIO Connector
supply lines
Camera Connector
JTAG
Display Connector
: Micro SDIO
REVISIONS:
There have been a number of revison changes over the lifetime of the Model B,
and the B+, despite its dramatic improvements over the B, is simply a new
revision, and is expected to be the final one using the BCM2835. It is in effect
revision 3 of the board.
Revision 1 is the revision as of initial launch, whilst revision 2 improved the
power and USB circuitry to increase reliability, and also included 2 registration
holes that could also be used for mounting the device. There have also been
9
ECET
ECE(ES)
minor revision changes during the lifetime of the board to help wth manufacture,
testing, and production line BOM (Bill of material) transitions.
10
ECET
ECE(ES)
4.5.9 BCM2835:
The Broadcom chip used in the Raspberry Pi Model A, B and B+
The BCM2835 is a cost-optimized, full HD, multimedia applications processor for
advanced mobile and embedded applications that require the highest levels of
multimedia performance. Designed and optimized for power efficiency, BCM2835
uses Broadcom's VideoCore IV technology to enable applications in media
playback, imaging, camcorder, streaming media, graphics and 3D gaming.
Features:
Low Power ARM1176JZ-F Applications Processor
11
ECET
ECE(ES)
12
ECET
ECE(ES)
this
page,
reference
should
be
made
to
the
BCM2835
ARM
13
ECET
ECE(ES)
4.5.13 INTERRUPTS
Each GPIO pin, when configured as a general-purpose input, can be configured as
an interrupt source to the ARM. Several interrupt generation sources are
configurable:
Level-sensitive (high/low)
Rising/falling edge
Asynchronous rising/falling edge
Level interrupts maintain the interrupt status until the level has been cleared by
system software (e.g. by servicing the attached peripheral generating the
interrupt).
The normal rising/falling edge detection has a small amount of synchronisation
built into the detection. At the system clock frequency, the pin is sampled with
the criteria for generation of an interrupt being a stable transition within a 3cycle window, i.e. a record of "1 0 0" or "0 1 1". Asynchronous detection
bypasses this synchronisation to enable the detection of very narrow events.
14
ECET
ECE(ES)
For more detailed information see the Low level peripherals page on the
elinuxwikiThere are 54 general-purpose I/O (GPIO) lines split into two banks. All
GPIO pins have atleast two alternative functions within BCM. The alternate
functions are usually peripheral IOand a single peripheral may appear in each
bank to allow flexibility on the choice of IOvoltage. Details of alternative
functions are given in section 6.2. Alternative FunctionAssignments.
The block diagram for an individual GPIO pin is given below :
ECE(ES)
4.5.15 UART
The BCM2835 device has two UARTS. On mini UART and and
PL011 UART. This section describes the PL011 UART. For details
of the mini UART see 2.2 Mini UART. The PL011 UART is a
Universal Asynchronous Receiver/Transmitter. This is the ARM
UART (PL011) implementation. The UART performs serial-toparallel conversion on data characters received from an
external
peripheral
serialconversion
on
device
data
or
modem,
characters
and
received
parallel-tofrom
the
CPU core.
Enhanced ARM architecture MMU to support WinCE, EPOC 32 and Linux.
Instruction cache, data cache, writes buffer and Physical address TAG RAM to
16
ECET
ECE(ES)
CHAPTER 5
PHASING
WAVEFORM
TEXT
ANALYSYS
ECET
INTONATION
GENERATION17
ECE(ES)
DURATION
Text
Speech
Utterance composed
of words
Utterance composed
of phonemes
CHAPTER 6
6.2 FEATURES
Resolution: 10-bit
Differential Linearity Error: 1.0 LSB
Integral Linearity Error: 2.0 LSB
Maximum Conversion Rate: 500 KSPS
Low Power Consumption
Power Supply Voltage: 3.3V
Analog Input Range: 0 ~ 3.3V
On-chip sample-and-hold function
Normal Conversion Mode
Separate X/Y position conversion Mode
Auto(Sequential) X/Y Position Conversion Mode
Waiting for Interrupt Mode
18
ECET
ECE(ES)
ECE(ES)
signal to be quantized. If an ADC operates at a sampling rate greater than twice the
bandwidth of the signal, then perfect reconstruction is possible given an ideal ADC and
neglecting quantization error. The presence of quantization error limits the dynamic range of
even an ideal ADC, however, if the dynamic range of the ADC exceeds that of the input
signal, its effects may be neglected resulting in an essentially perfect digital representation of
the input signal.
An ADC may also provide an isolated measurement such as an electronic device that converts
an input analog voltage or current to a digital number proportional to the magnitude of the
voltage or current. However, some non-electronic or only partially electronic devices, such
as rotary encoders, can also be considered ADCs. The digital output may use different coding
schemes. Typically the digital output will be a two's complement binary number that is
proportional to the input, but there are other possibilities. An encoder, for example, might
output a Gray code.
20
ECET
ECE(ES)
CHAPTER 7
ECE(ES)
An object produces sound when it vibrates in air (sound can also travel through liquids and
solids, but air is the transmission medium when we listen to speakers). When something
vibrates, it moves the air particles around it. Those air particles in turn move the air particles
around them, carrying the pulse of the vibration through the air as a travelling disturbance.
To see how this works, a simple vibrating object, a bell, is considered. When a bell is rung,
the metal vibrates, flexes in and out, rapidly. When it flexes out on one side, it pushes out on
the surrounding air particles on that side. These air particles then collide with the particles in
front of them, which collide with the particles in front of them and so on.
When the bell flexes away, it pulls in on these surrounding air particles, creating a drop in
pressure that pulls in on more surrounding air particles, which creates another drop in
pressure that pulls in particles that are even farther out and so on. This decreasing of pressure
is called rarefaction. In this way, a vibrating object sends a wave of pressure fluctuation
through the atmosphere. When the fluctuation wave reaches the human ear, it vibrates the
eardrum back and forth. Thus, the brain interprets this motion as sound.
22
ECET
ECE(ES)
sound, or treble. Professional audio dynamic speakers that offer higher performance may also
have drivers on the rear of the speaker enclosure to further amplify sound.
7.1.3 SUBWOOFER SPEAKER
Subwoofers are one-driver dynamic loudspeakers with a single woofer driver. The speakers
enclosure typically includes a bass port to increase low-frequency performance. These
speakers are used to transmit bass or low-frequency sound. They are also used to enhance
bass from any accompanying main speakers in a multi-speaker system, allowing users to
offer and deliver bass enhancement without compromising other sound at higher frequencies.
7.2 POWER SUPPLY
The input to the circuit is applied from the regulated power supply. The
a.c. input i.e., 230V from the mains supply is step down by the
transformer to 12V and is fed to a rectifier. The output obtained from the
rectifier is a pulsating d.c voltage. So in order to get a pure d.c voltage,
the output voltage from the rectifier is fed to a filter to remove any a.c
components present even after rectification. Now, this voltage is given to
a voltage regulator to obtain a pure constant dc voltage.
7.2.1 Transformer:
23
ECET
ECE(ES)
7.2.2 Rectifier:
The output from the transformer is fed to the rectifier. It converts
A.C. into pulsating D.C. The rectifier may be a half wave or a full wave
rectifier. In this project, a bridge rectifier is used because of its merits like
good stability and full wave rectification.
7.2.3Filter:
Capacitive filter is used in this project. It removes the ripples from
the output of rectifier and smoothens the D.C. Output received from this
filter is constant until the mains voltage and load is maintained constant.
However, if either of the two is varied, D.C. voltage received at this point
changes. Therefore a regulator is applied at the output stage.
24
ECET
ECE(ES)
CHAPTER 8
FLOW CHART
start
RASPBERRY PI
PROCESSOR
HDMI cable
AND SPEAKER
25
ECE(ES)
QUTOIA TTS
(Text to speech)
Play
stop
stosop
End
CHAPTER 9
SOFTWARE DESCRIPTION
ECE(ES)
gcc-arm-linux-gnueabi
aptitude
libncurses5-dev
autoconf
libtool
libqt4-dev
qt4-dev-tools
libusb-dev
The first software we need on our ubuntu system in minicom.Minicom is just like
hyperterminal.Install minicom first
sudo apt-get install minicom
Now connect Raspberry pi to our system two connection one from the serial port and next
from the Type B USB plug must be made to the system.On the friendly arm board the
NAND/NOR switch must be placed in the NOR position
Now invoke minicom from terminal using command
sudo minicom
usually you will get something like this on your terminal
27
ECET
ECE(ES)
The problem is you need to configure minicom the port etc use the command dmesg this
command lists several other messages also so you have to closely observe to which port the
board is connected. Here am using serial to usb converter so the port deteced for mine
is ttyUSB0 if you connected it to serial port itself it will be different
28
ECET
ECE(ES)
there change serial device to the port detected in my case it will be /dev/ttyUSB0 (It may vary
from 0 to any number) we can edit that by selecting A option. Also double check that both
software and hardware flow control must be in NO
29
ECET
ECE(ES)
After that exit from minicom and try our first command
sudo minicom
30
ECET
ECE(ES)
If everything went correct then you will get a boot loader like this .This is the preinstalled
SuperVivi boot loader on memory.
ECE(ES)
Now the next step is to load supervivi to target board using usbpush. Supervivi is the boot
loader.
First select V
Only after this you should push file from the host system. Push the file like this
sudo ./usbpush/usbpush/usbpush supervivi_20100818/supervivi-128M
32
ECET
ECE(ES)
If the push is successful then the minicom prompt will be like this and will be back to the
boot loader
So supervivi is successfully installed. Next is zImage, Kernel images generated by the kernel
build process are either uncompressed Image files or compressed zImage files. Here we
select zImage W35 because RASPBERRY PI with 3.5 display.
Now we selects K option to download Linux kernel and pushes the extracted zImage
sudo ./usbpush/usbpush/usbpush linux-zImage_20110421/zImage_W35
After this step the basic Linux kernel image will be loaded into memory
Now we need to Download the root yaffs image.YAFFS (Flash File System) is now in its
second generation and provides a fast robust file system for NAND and NOR Flash.
Select Y to download yaffs image and push the qtopia image file
33
ECET
ECE(ES)
34
ECET
ECE(ES)
Now calibrate the screen by clicking on the crosshairs shown and you will be taken to qtopia
screen by default qtopia will be in Chinese in second tab there is a flag symbol select that it
changes the language select English and we are done
After that we need to download package or it can found in provided CD Linux folder
Download the File provide by us and follow the below commands
35
ECET
ECE(ES)
After this restart the system, then open a terminal and type arm-linux-gcc v, then u should
received the output of gcc version .If so u have successfully installed arm gcc.
ECE(ES)
#include<stdio.h>
int main(){
printf("Hello World\n");
}
Save it as hello.c .Now compiling it for our target or Raspberry pi.
open terminal and change directory to the folder where c program is present and issue this
command
arm-linux-gcc hello.c -o hello
The arm-linux-gcc command was present bcoz we setup the toolchain early. Now a binary
hello will be present in the folder. Use file command to know the type of the binary it will
suitable for ARM.
Move the binary to Raspberry pi using pen drive or sdcard.To see the output execute the
binary like this.
./hello
You can directly download the files provide by us and save in /usr/local/ and provide
permissions, the below details for your presentation purpose
ECE(ES)
1. tslib compilation
$ sudo mkdir /usr/local/tslib
$git clone http://github.com/kergoth/tslib.git
$export CROSS_COMPILE=arm-none-linux-gnueabi$export CC=${CROSS_COMPILE}gcc
$export CFLAGS=-march=armv4t
$export CXX=${CROSS_COMPILE}"g++"
$export AR=${CROSS_COMPILE}"ar"
$export AS=${CROSS_COMPILE}"as"
$export RANLIB=${CROSS_COMPILE}"ranlib"
$export LD=${CROSS_COMPILE}"ld"
$export STRIP=${CROSS_COMPILE}"strip"
$export ac_cv_func_malloc_0_nonnull=yes
$cd tslib
$./autogen-clean.sh
$./autogen.sh
$./configure --host=arm-linux --prefix=/usr/local/tslib --enable-shared=yes --enablestatic=yes
$make
$sudo make install
#after successful tslib compilation
root@laptop:/usr/local/tslib
38
ECET
ECE(ES)
root@laptop: ls
bin etc include lib
2. Qt4.6.3 compilation
#get Qt4.6.3 from the link http://download.qt-project.org/archive/qt/4.6/
#copy to home folder
QMAKE_CFLAGS_RELEASE += -O2
QMAKE_CFLAGS_RELEASE += -O0
/************************************************************
change the file into, note that, the path /usr/local/arm/4.3.2/ is the path which you
installed tool chain. i.e go to /usr/local/ , do the pwd for toochain directory copy the
path and replace with above mentioned.
/**********************************************************/
#
# qmake configuration for building with arm-linux-g++
#
include(../../common/g++.conf)
include(../../common/linux.conf)
39
ECET
ECE(ES)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC
= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc -msoft-float
= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ -msoft-float
= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ -msoft-float
= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-g++ -msoft-
# modifications to linux.conf
QMAKE_AR
QMAKE_OBJCOPY
QMAKE_STRIP
QMAKE_INCDIR
= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-ar cqs
= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-objcopy
= /usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-strip
+= /home/tslib/include/
QMAKE_LIBDIR += /home/tslib/lib/
ECE(ES)
load(qt_config)
#then, save the file. Continue on console panel:
$ sudo mkdir /usr/local/Qt
$cd qt-everywhere-opensource-src-4.6.3
$./configure -embedded arm -xplatform qws/linux-arm-g++ -prefix /usr/local/Qt -qtmouse-tslib -little-endian -no-webkit -no-qt3support -no-cups -no-largefile -optimizedqmake -no-openssl -nomake tools -qt-sql-sqlite -no-3dnow -system-zlib -qt-gif -qt-libtiff
-qt-libpng -qt-libmng -qt-libjpeg -no-opengl -gtkstyle -no-openvg -no-xshape -no-xsync
-no-xrandr -qt-freetype -qt-gfx-linuxfb -qt-kbd-tty -qt-kbd-linuxinput -qt-mouse-tslib
-qt-mouse-linuxinput
#chose 'o' Open Source Edition
#chose 'yes' to accept license offer
#then, you will wait for about 5 miniutes
$make
41
ECET
ECE(ES)
#it will take nearly one hour on my due core 1.7GHz laptop, too long!
$make install
#Ok, if the compilation is done, you will see the result files in /usr/local/Qt.
3. Copy library of tslib and Qt4.6.3into Raspberry pi board.
#I use sdcard or pendrive to copy file from Ubuntu to Raspberry pi board. It should be copied
the library of tslib, Qt, and the example program of Qt that will be run on Raspberry pi board.
#place your SDcard or pendrive into Raspberry pi board, copy all file to the board.
#in Raspberry pi console
$mkdir /usr/local/Qt/lib/
$cp /sdcard/*4.6.3/usr/local/Qt/lib/ (or) cp /udisk/*4.6.3/usr/local/Qt/lib/
#rename all *.4.6.3in /usr/local/Qt/lib into *.4, for example
$mv libQtCore.so.4.6.3libQtCore.so.4
$cp -r /sdcard/fonts/ /usr/local/Qt/lib/ (or) cp -r /udisk/fonts/ /usr/local/Qt/lib/
$cp -r /sdcard/demos/ /mnt/ (or) cp -r / udisk /demos/ /mnt/
$cp -r /sdcard/tslib/ /usr/local/ (or) cp -r / udisk/tslib/ /usr/local/
42
ECET
ECE(ES)
#bin/qtopia&
#echo"
"> /dev/tty1
43
ECET
ECE(ES)
Mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<festival.h>
#include<QtSpeech.h>
#include<QtSpeech>
#include<QtSpeech_unx.h>
#include <QApplication>
#include<signal.h>
#include<sys/types.h>
#include<stdlib.h>
//QtSpeech voice;
QString path;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
44
ECET
ECE(ES)
void MainWindow::on_pushButton_2_clicked()
{
// close = new QtSpeech;
45
ECET
ECE(ES)
// close->~QtSpeech();
// close->thread();
// close->say(path);
//QApplication::quit();
system("/home/t1/./a.out&");
}
QtSpeech_unx.cpp
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMainWindow>
#include <QDialog>
#include <QtCore>
#include <QtGui>
#include <QString>
#include <QDebug>
#include <QtSpeech>
#include <QtCore>
#include <QtSpeech>
#include <QtSpeech_unx.h>
#include <festival.h>
#include <QPushButton>
namespace Ui
{
class MainWindow;
}
class MainWindow : public QMainWindow
46
ECET
ECE(ES)
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_treeView_clicked(const QModelIndex &index);
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::MainWindow *ui;
QFileSystemModel *dirmodel;
QApplication *a;
QtSpeech *close;
};
#endif // MAINWINDOW_H
#include <QtCore>
#include <QtSpeech>
#include <QtSpeech_unx.h>
#include <festival.h>
namespace QtSpeech_v1 { // API v1.0
// some defines for throwing exceptions
#define Where QString("%1:%2:").arg(__FILE__).arg(__LINE__)
#define SysCall(x,e) {\
47
ECET
ECE(ES)
int ok = x;\
if (!ok) {\
QString msg = #e;\
msg += ":"+QString(__FILE__);\
msg += ":"+QString::number(__LINE__)+":"+#x;\
throw e(msg);\
}\
}
// qobject for speech thread
bool QtSpeech_th::init = false;
void QtSpeech_th::say(QString text) {
try {
if (!init) {
int heap_size = FESTIVAL_HEAP_SIZE;
festival_initialize(true,heap_size);
init = true;
}
has_error = false;
EST_String est_text(text.toUtf8());
SysCall(festival_say_file(est_text), QtSpeech::LogicError);
}
catch(QtSpeech::LogicError e) {
has_error = true;
err = e;
}
emit finished();
}
// internal data
class QtSpeech::Private {
public:
Private()
48
ECET
ECE(ES)
:onFinishSlot(0L) {}
VoiceName name;
static const QString VoiceId;
const char * onFinishSlot;
QPointer<QObject> onFinishObj;
static QPointer<QThread> speechThread;
};
QPointer<QThread> QtSpeech::Private::speechThread = 0L;
const QString QtSpeech::Private::VoiceId = QString("festival:%1");
// implementation
QtSpeech::QtSpeech(QObject * parent)
:QObject(parent), d(new Private)
{
VoiceName n = {Private::VoiceId.arg("english"), "English"};
if (n.id.isEmpty())
throw InitError(Where+"No default voice in system");
d->name = n;
}
QtSpeech::QtSpeech(VoiceName n, QObject * parent)
:QObject(parent), d(new Private)
{
if (n.id.isEmpty()) {
VoiceName def = {Private::VoiceId.arg("english"), "English"};
n = def;
}
if (n.id.isEmpty())
throw InitError(Where+"No default voice in system");
49
ECET
ECE(ES)
d->name = n;
}
QtSpeech::~QtSpeech()
{
//if ()
delete d;
}
const QtSpeech::VoiceName & QtSpeech::name() const {
return d->name;
}
QtSpeech::VoiceNames QtSpeech::voices()
{
VoiceNames vs;
VoiceName n = {Private::VoiceId.arg("english"), "English"};
vs << n;
return vs;
}
void QtSpeech::tell(QString text) const {
tell(text, 0L,0L);
}
void QtSpeech::tell(QString text, QObject * obj, const char * slot) const
{
if (!d->speechThread) {
d->speechThread = new QThread;
d->speechThread->start();
}
d->onFinishObj = obj;
d->onFinishSlot = slot;
50
ECET
ECE(ES)
ECE(ES)
CHAPTER 10
ADVANTAGES AND APPLICATIONS OF THE PROJECT
9.1ADVANTAGES OF THE PROJECT
9.3 APPLICATIONS
Railway Stations
Companys
Hospitals
Shopping malls
Schools and Colleges
CHAPTER 11
ECE(ES)
53
ECET
ECE(ES)
54
ECET
ECE(ES)
55
ECET
ECE(ES)
56
ECET
ECE(ES)
57
ECET
ECE(ES)
CHAPTER 12
COMPONENT NAME
QUANTITY
Speaker
MSBI Port
USB Port
Monitor LCD
58
ECET
ECE(ES)
CHAPTER 13
CONCLUSION & FUTURE SCOPE
13.1 CONCLUSION
We have implemented efficient Speech Synthesis System which can be further improved in
future by using more advanced Processors.
59
ECET
ECE(ES)
CHAPTER 14
BIBLIOGRAPHY
1.
2.
3.
4.
www.wikipedia.com
www.allaboutcircuits.com
www.microchip.com
www.howstuffworks.com
Books referred:
1. Raj Kamal Microcontrollers Architecture, Programming, Interfacing System
Design.
2. Mazidi and Mazidi David.L.Jones.
60
ECET
ECE(ES)
61
ECET