mirror of https://github.com/stella-emu/stella.git
Some massive pruning of the rsynth codebase. Hopefully I haven't removed
anything that was necessary. Changed AtariVox code to be a compile-time option, and integrated rsynth code into the 'Stella build' style, with a module.mk file. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1112 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
815a111b25
commit
758a4ed3ff
|
@ -13,7 +13,7 @@
|
|||
## See the file "license" for information on usage and redistribution of
|
||||
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
##
|
||||
## $Id: Makefile,v 1.25 2006-06-11 07:13:19 urchlay Exp $
|
||||
## $Id: Makefile,v 1.26 2006-06-11 21:49:04 stephena Exp $
|
||||
##
|
||||
## Based on code from ScummVM - Scumm Interpreter
|
||||
## Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -28,7 +28,7 @@ srcdir ?= .
|
|||
DEFINES :=
|
||||
LDFLAGS :=
|
||||
INCLUDES :=
|
||||
LIBS := -Lsrc/emucore -lrsynth
|
||||
LIBS :=
|
||||
OBJS :=
|
||||
PROF :=
|
||||
|
||||
|
@ -67,7 +67,6 @@ endif
|
|||
#######################################################################
|
||||
|
||||
EXECUTABLE := stella$(EXEEXT)
|
||||
RSYNTH = src/emucore/librsynth.a
|
||||
|
||||
all: tags $(EXECUTABLE)
|
||||
|
||||
|
@ -93,10 +92,6 @@ MODULES += \
|
|||
src/gui \
|
||||
src/common
|
||||
|
||||
$(RSYNTH): $(RSYNTH_OBJS)
|
||||
( cd src/emucore/rsynth && ./configure && make Rsynth/librsynth.a ) && \
|
||||
cp src/emucore/rsynth/Rsynth/librsynth.a src/emucore
|
||||
|
||||
######################################################################
|
||||
# The build rules follow - normally you should have no need to
|
||||
# touch whatever comes after here.
|
||||
|
@ -113,7 +108,7 @@ DEPDIRS = $(addsuffix /$(DEPDIR),$(MODULE_DIRS))
|
|||
DEPFILES =
|
||||
|
||||
# The build rule for the Stella executable
|
||||
$(EXECUTABLE): $(OBJS) $(RSYNTH)
|
||||
$(EXECUTABLE): $(OBJS)
|
||||
$(LD) $(LDFLAGS) $(PRE_OBJS_FLAGS) $+ $(POST_OBJS_FLAGS) $(LIBS) $(PROF) -o $@
|
||||
|
||||
distclean: clean
|
||||
|
|
|
@ -27,6 +27,7 @@ _build_joystick=yes
|
|||
_build_cheats=yes
|
||||
_build_static=no
|
||||
_build_profile=no
|
||||
_build_atarivox=yes
|
||||
|
||||
# more defaults
|
||||
_ranlib=ranlib
|
||||
|
@ -265,6 +266,8 @@ Optional Features:
|
|||
--disable-joystick
|
||||
--enable-cheats enable/disable cheatcode support [enabled]
|
||||
--disable-cheats
|
||||
--enable-atarivox enable/disable AtariVox support [enabled]
|
||||
--disable-atarivox
|
||||
--enable-shared build shared binary [enabled]
|
||||
--enable-static build static binary (if possible) [disabled]
|
||||
--disable-static
|
||||
|
@ -280,8 +283,8 @@ Optional Libraries:
|
|||
|
||||
--with-sdl-prefix=DIR Prefix where the sdl-config script is installed (optional)
|
||||
|
||||
--with-nasm-prefix=DIR Prefix where nasm executable is installed (optional)
|
||||
--disable-nasm disable assembly language optimizations [autodetect]
|
||||
# --with-nasm-prefix=DIR Prefix where nasm executable is installed (optional)
|
||||
# --disable-nasm disable assembly language optimizations [autodetect]
|
||||
|
||||
--x-libraries Path to X11 libraries [${X_LIBS}]
|
||||
|
||||
|
@ -312,6 +315,8 @@ for ac_option in $@; do
|
|||
--disable-joystick) _build_joystick=no ;;
|
||||
--enable-cheats) _build_cheats=yes ;;
|
||||
--disable-cheats) _build_cheats=no ;;
|
||||
--enable-atarivox) _build_atarivox=yes ;;
|
||||
--disable-atarivox) _build_atarivox=no ;;
|
||||
--enable-zlib) _zlib=yes ;;
|
||||
--disable-zlib) _zlib=no ;;
|
||||
--enable-png) _png=yes ;;
|
||||
|
@ -739,6 +744,14 @@ else
|
|||
echo
|
||||
fi
|
||||
|
||||
if test "$_build_atarivox" = yes ; then
|
||||
echo_n " AtariVox support enabled"
|
||||
echo
|
||||
else
|
||||
echo_n " AtariVox support disabled"
|
||||
echo
|
||||
fi
|
||||
|
||||
if test "$_build_static" = yes ; then
|
||||
echo_n " Static binary enabled"
|
||||
echo
|
||||
|
@ -770,6 +783,7 @@ DBG="$SRC/debugger"
|
|||
DBGGUI="$SRC/debugger/gui"
|
||||
YACC="$SRC/yacc"
|
||||
CHEAT="$SRC/cheat"
|
||||
ATARIVOX="$SRC/emucore/rsynth"
|
||||
|
||||
INCLUDES="-I$CORE -I$CORE/m6502/src -I$CORE/m6502/src/bspf/src -I$COMMON -I$GUI"
|
||||
|
||||
|
@ -882,6 +896,12 @@ if test "$_build_cheats" = yes ; then
|
|||
INCLUDES="$INCLUDES -I$CHEAT"
|
||||
fi
|
||||
|
||||
if test "$_build_atarivox" = yes ; then
|
||||
DEFINES="$DEFINES -DATARIVOX_SUPPORT"
|
||||
MODULES="$MODULES $ATARIVOX"
|
||||
INCLUDES="$INCLUDES -I$ATARIVOX"
|
||||
fi
|
||||
|
||||
if test "$_build_profile" = no ; then
|
||||
_build_profile=
|
||||
fi
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: SpeakJet.cxx,v 1.1 2006-06-11 07:13:19 urchlay Exp $
|
||||
// $Id: SpeakJet.cxx,v 1.2 2006-06-11 21:49:04 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include "SpeakJet.hxx"
|
||||
|
@ -160,4 +160,3 @@ const char *SpeakJet::ourPhonemeTable[] = {
|
|||
"p", // 198 PE People, Computer
|
||||
"p" // 199 PO Paw, Copy ???
|
||||
};
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: SpeakJet.hxx,v 1.1 2006-06-11 07:13:19 urchlay Exp $
|
||||
// $Id: SpeakJet.hxx,v 1.2 2006-06-11 21:49:04 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#ifndef SPEAKJET_HXX
|
||||
|
@ -75,16 +75,14 @@
|
|||
anyway).
|
||||
|
||||
@author B. Watson
|
||||
@version $Id: SpeakJet.hxx,v 1.1 2006-06-11 07:13:19 urchlay Exp $
|
||||
@version $Id: SpeakJet.hxx,v 1.2 2006-06-11 21:49:04 stephena Exp $
|
||||
*/
|
||||
|
||||
#include "bspf.hxx"
|
||||
|
||||
extern "C" {
|
||||
#include <SDL.h>
|
||||
#include <SDL_thread.h>
|
||||
#include "rsynth/rsynth.h"
|
||||
}
|
||||
|
||||
class SpeakJet
|
||||
{
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
yes
|
|
@ -1,741 +0,0 @@
|
|||
Change 2707 on 2003/07/06 by nick@llama
|
||||
|
||||
SuSE 8.2 and gcc-3.* support
|
||||
Mainly adding -fno-scrict-aliasing and removing -Werrors (for now)
|
||||
|
||||
Change 2636 on 2003/01/08 by nick@nickwork
|
||||
|
||||
Some tidy up on RedHat 7.1
|
||||
|
||||
Change 2635 on 2003/01/07 by nick@dromedary
|
||||
|
||||
Depends on Audio::Data
|
||||
|
||||
Change 2630 on 2003/01/05 by nick@dromedary
|
||||
|
||||
Decouple dict (and hence db routines) from rest of
|
||||
text-to-phones stuff.
|
||||
|
||||
Change 2629 on 2003/01/05 by nick@dromedary
|
||||
|
||||
Restore ability to make CC=g++
|
||||
|
||||
Change 2628 on 2003/01/05 by nick@dromedary
|
||||
|
||||
Perl bindings for librsynth.a
|
||||
|
||||
Change 2627 on 2003/01/05 by nick@dromedary
|
||||
|
||||
Move Elements.pm under perl Rsynth dir
|
||||
|
||||
Change 2626 on 2003/01/04 by nick@dromedary
|
||||
|
||||
Nearly there - restructure once more to make
|
||||
a usable library at two levels - text and phonetics
|
||||
|
||||
Change 2625 on 2003/01/04 by nick@dromedary
|
||||
|
||||
More cleanup of obsolete files.
|
||||
|
||||
Change 2624 on 2003/01/04 by nick@bactrian
|
||||
|
||||
Typo in ansi-izeing
|
||||
|
||||
Change 2623 on 2003/01/04 by nick@dromedary
|
||||
|
||||
Moderernize autoconf stuff
|
||||
|
||||
Change 2622 on 2003/01/04 by nick@dromedary
|
||||
|
||||
Cleanup and move things about so distribution
|
||||
isn't full of my junk
|
||||
|
||||
Change 2621 on 2003/01/03 by nick@dromedary
|
||||
|
||||
More C++ isms and memory leak fixes.
|
||||
|
||||
Change 2620 on 2003/01/03 by nick@dromedary
|
||||
|
||||
More pickyness from build with CC=g++
|
||||
|
||||
Change 2619 on 2003/01/03 by nick@dromedary
|
||||
|
||||
More API cleanup and portability.
|
||||
|
||||
Change 2618 on 2003/01/03 by nick@bactrian
|
||||
|
||||
Correct dependancies
|
||||
|
||||
Change 2617 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Lost edit
|
||||
|
||||
Change 2616 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Re-structure API to remove most of the globals
|
||||
(Also re-indent.)
|
||||
|
||||
Change 2615 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Comments etc. after amp_adj changes.
|
||||
|
||||
Change 2614 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Remove sops to K&R C - this is 21st century.
|
||||
|
||||
Change 2613 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Move amp adjsutments into Elements.def
|
||||
Convert 'an' to nasal fraction.
|
||||
Loose 'a1' as it never does anything in cascade scheme.
|
||||
|
||||
Change 2612 on 2003/01/03 by nick@dromedary
|
||||
|
||||
Collect all dB adjustments of /^a\w+/ paramters into one place.
|
||||
|
||||
Change 2611 on 2003/01/02 by nick@dromedary
|
||||
|
||||
[E] and [{] seemed to be swapped.
|
||||
Extraction of F1..F3 from CD is less helpful than expected
|
||||
very hard to get John and Jill's cardinal vowels to look
|
||||
right on tkvdgm.
|
||||
|
||||
Change 2610 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Tweak near-equivalence script, avoid $Id: Change.log,v 1.1 2006-06-11 07:13:19 urchlay Exp $ in phtoelm.def
|
||||
|
||||
Change 2609 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Re-arange code to allow dominance on a per-paramter basis
|
||||
|
||||
Change 2608 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Avoid special elements for affricates where lengths of normal
|
||||
elements sound acceptable.
|
||||
Loose "QQ" as dummy target element in middle of fricatives.
|
||||
(Prepare QQ to become [?] when we can do per-parameter rank
|
||||
targeting.)
|
||||
Correct av for closure parts of voiced stops.
|
||||
|
||||
Change 2607 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Read new Elements.def format
|
||||
|
||||
Change 2606 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Loose dict/ipa strings in favour of one sampa string.
|
||||
Make font slot short and fill with Unicode.
|
||||
|
||||
Change 2605 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Re-format without "error in fixed" term now we don't have it.
|
||||
|
||||
Change 2604 on 2003/01/02 by nick@dromedary
|
||||
|
||||
Drop 'stdy' slot in element data and use stdy*(1-prop) instead.
|
||||
(Having established that making all data was like that did
|
||||
not make things worse.)
|
||||
|
||||
Change 2603 on 2003/01/01 by nick@dromedary
|
||||
|
||||
Prune the #if 0 code now that new voice scheme and removal
|
||||
of 1st difference seems to work.
|
||||
Also re-instate long mis-understood 'avc' parameter.
|
||||
|
||||
Change 2602 on 2003/01/01 by nick@dromedary
|
||||
|
||||
Remove some entries for words written the same but
|
||||
with different pronounciation when latter cause poblems
|
||||
e.g. we want gin to be [dZIn] not [gIn] (Latter seems wrong)
|
||||
and put to be [pUt] not golfer's [pVt].
|
||||
|
||||
Change 2601 on 2002/12/31 by nick@dromedary
|
||||
|
||||
More oddities - none of stops "stop" - weird - added
|
||||
no-source and external duration to KY GY and seems to help
|
||||
(Do same for [bptd]?)
|
||||
|
||||
Change 2600 on 2002/12/31 by nick@dromedary
|
||||
|
||||
Velars [kg] had no stimulus on in/out - no wonder they were weak!
|
||||
|
||||
Change 2598 on 2002/12/30 by nick@dromedary
|
||||
|
||||
"Restore" naive "f0 decline with stress pulses" approach for
|
||||
un-assisted text-to-speech. Festival as a front end is
|
||||
of course much better, but this restores stand-alone "prosody"
|
||||
element.
|
||||
|
||||
Change 2597 on 2002/12/30 by nick@dromedary
|
||||
|
||||
Gate more messages with -v (verbose) switch
|
||||
|
||||
Change 2596 on 2002/12/30 by nick@dromedary
|
||||
|
||||
Festival binding.
|
||||
|
||||
Change 2595 on 2002/12/29 by nick@dromedary
|
||||
|
||||
Mend ability to say text files. Reset dumb F0 scheme on ',' etc.
|
||||
as well as end of sentence.
|
||||
Add a mode to use .pho file F0 data but ignore its duration data.
|
||||
Correct pronounciation of 'diphones' in beep (dip-hones indeed!).
|
||||
|
||||
Change 2594 on 2002/12/28 by nick@dromedary
|
||||
|
||||
Another try at ms -> num-of-frames interpolation.
|
||||
(Goal is to avoid non-stop elements which vanish as they
|
||||
get 0 time.)
|
||||
|
||||
Change 2593 on 2002/12/28 by nick@dromedary
|
||||
|
||||
General overhaul of Elements.def removing duplicates
|
||||
and correcting accidentally identical elements.
|
||||
|
||||
Change 2591 on 2002/12/28 by nick@dromedary
|
||||
|
||||
"Correct" fix contribution term
|
||||
|
||||
Change 2590 on 2002/12/28 by nick@dromedary
|
||||
|
||||
More info in and tidier plot file.
|
||||
Turn on parameter smoothing by default.
|
||||
|
||||
Change 2589 on 2002/12/28 by nick@dromedary
|
||||
|
||||
Turn of debug :-(
|
||||
|
||||
Change 2588 on 2002/12/28 by nick@dromedary
|
||||
|
||||
Improve mbrola .pho file interpollation:
|
||||
- allow length reduction for non stops
|
||||
- invent new attribute 'stl' (stop locus) to mark in/out
|
||||
elements of stops so only central part is marked as stp
|
||||
(with above this means in/put can change length).
|
||||
- Remove specific [A:] etc. entries in phtoelem.def and handle
|
||||
':' in phtoelm.c
|
||||
|
||||
Change 2587 on 2002/12/28 by nick@dromedary
|
||||
|
||||
At least attempt all vowels on IPA diagram.
|
||||
(Missing ones F1,F2,F2 from IPA CD.)
|
||||
|
||||
Change 2586 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Better error messages for phone translation problems
|
||||
|
||||
Change 2585 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Experimental "rsc" resonator to lift centre of spectrum.
|
||||
Inspired by frequent occurance of such in LPC spectra from tkscope.
|
||||
|
||||
Change 2584 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Tweak [{] based on tkscope analysis of IPA CD
|
||||
|
||||
Change 2581 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Make 1st half of [D] same as 2nd half (looks like an
|
||||
old experiment that got left in.
|
||||
|
||||
Change 2580 on 2002/12/27 by nick@dromedary
|
||||
|
||||
Try waiting longer for /dev/dsp
|
||||
|
||||
Change 2579 on 2002/12/24 by nick@dromedary
|
||||
|
||||
First pass at adding Copyright and LGPL/GPL notices.
|
||||
|
||||
Change 2576 on 2002/12/23 by nick@dromedary
|
||||
|
||||
Switch to piece-wise linear/quadratic voicing waveform.
|
||||
|
||||
Change 2575 on 2002/12/23 by nick@dromedary
|
||||
|
||||
Add "Medi" (Welsh woman's christian name) to dict for personal
|
||||
reasons ;-)
|
||||
|
||||
Change 2574 on 2002/12/23 by nick@dromedary
|
||||
|
||||
#if to switch between taking 1st diff of output + lowpass
|
||||
or not doing either (supposed to be equivalent).
|
||||
The non-diff case should make it easier to inject specific
|
||||
voice waveform.
|
||||
|
||||
Change 2573 on 2002/12/23 by nick@dromedary
|
||||
|
||||
Some light tidying
|
||||
|
||||
Change 2570 on 2002/12/22 by nick@dromedary
|
||||
|
||||
Update comments, experiment with pitch-sync cascade update
|
||||
|
||||
Change 2564 on 2002/12/19 by nick@dromedary
|
||||
|
||||
Tune [N] based on tkscope analysis of "Sounds of IPA" CD
|
||||
- match f4/f5/f6 to John Well's and then adjust [N]'s fn..f3
|
||||
and bandwidths till it looks best.
|
||||
|
||||
Change 2563 on 2002/12/19 by nick@dromedary
|
||||
|
||||
Back port the try severl times tweak
|
||||
|
||||
Change 2550 on 2002/12/15 by nick@dromedary
|
||||
|
||||
SAMPA corrections for sylabic consonants
|
||||
|
||||
Change 2549 on 2002/12/15 by nick@dromedary
|
||||
|
||||
Update/add SAMPA labels for Klatt/MITalk phones
|
||||
|
||||
Change 2548 on 2002/12/12 by nick@dromedary
|
||||
|
||||
Add SAMPA IPA Unicode HTML and script for manipulating it.
|
||||
|
||||
Change 2547 on 2002/12/10 by nick@dromedary
|
||||
|
||||
Place holders for high central vowels [1] and [}]
|
||||
|
||||
Change 2545 on 2002/12/09 by nick@dromedary
|
||||
|
||||
Add x-sampa [4] [K] [?]
|
||||
|
||||
Change 2544 on 2002/12/04 by nick@dromedary
|
||||
|
||||
Restore speed from -S
|
||||
- some clicks seem to be "rapid" changes in f2
|
||||
i.e. go away with more steps as in -S 10 -m 1
|
||||
|
||||
Change 2543 on 2002/12/04 by nick@dromedary
|
||||
|
||||
Adjust global gain to avoid clipping on /Q/
|
||||
|
||||
Change 2542 on 2002/12/03 by nick@dromedary
|
||||
|
||||
Add check for f1-f2-f3-f4 spacing and correct problems
|
||||
it showed
|
||||
- raise fixed f4 above common f3 in several elements
|
||||
- move f1/f2 of /A/ to rp values as perl tkvdgm
|
||||
Update tkvdgm to get data from Elements.def via Elements.pm
|
||||
|
||||
Change 2541 on 2002/11/28 by nick@dromedary
|
||||
|
||||
Clean up tracks of /N/ - still not right (sounds too much like /n/)
|
||||
|
||||
Change 2540 on 2002/11/28 by nick@dromedary
|
||||
|
||||
Amplitude investigations - plot avg power
|
||||
Allow amp/db fudge factor experiments.
|
||||
|
||||
Change 2539 on 2002/11/26 by nick@dromedary
|
||||
|
||||
Compute and plot output amplitude.
|
||||
|
||||
Change 2538 on 2002/11/25 by nick@dromedary
|
||||
|
||||
Tweak duration code with comment till we are clearer
|
||||
about effects to shortened durations on the parameter
|
||||
interpollation.
|
||||
|
||||
Change 2537 on 2002/11/25 by nick@dromedary
|
||||
|
||||
Support say -f whatever.pho
|
||||
where whatever.pho is a mbrola phone/duration/f0 file.
|
||||
Interpolation between durations in ms and frames is
|
||||
still a little rough. Also have some issues when specified
|
||||
duration is less than duration of stops (and maybe some others.)
|
||||
|
||||
Change 2536 on 2002/11/24 by nick@dromedary
|
||||
|
||||
end-of-weekend checkin
|
||||
|
||||
Change 2535 on 2002/11/24 by nick@dromedary
|
||||
|
||||
Some initial mbrola compatibility tweaks
|
||||
|
||||
Change 2528 on 2002/11/19 by nick@dromedary
|
||||
|
||||
Separate voice and parameter data for plotting
|
||||
|
||||
Change 2527 on 2002/11/19 by nick@dromedary
|
||||
|
||||
Parameter track plotting
|
||||
|
||||
Change 2526 on 2002/11/18 by nick@dromedary
|
||||
|
||||
Start reconciling element params and synth params
|
||||
|
||||
Change 2525 on 2002/11/18 by nick@dromedary
|
||||
|
||||
Start of cleanup removing uses of old Klatt code
|
||||
|
||||
Change 2524 on 2002/11/17 by nick@dromedary
|
||||
|
||||
Allow study of old synth
|
||||
|
||||
Change 2522 on 2002/11/17 by nick@dromedary
|
||||
|
||||
Overhaul voice generation - amplitude and basic sound
|
||||
should now be sample rate independant.
|
||||
|
||||
Change 2521 on 2002/11/13 by nick@dromedary
|
||||
|
||||
Update comments, play with sox stats
|
||||
|
||||
Change 2519 on 2002/11/08 by nick@dromedary
|
||||
|
||||
Show phone table
|
||||
|
||||
Change 2503 on 2002/10/05 by nick@bactrian
|
||||
|
||||
Update to modern linux's math.h
|
||||
|
||||
Change 2222 on 2001/05/22 by nick@dromedary
|
||||
|
||||
Clean up f1 too close to f2, f2 to f3 etc.
|
||||
|
||||
Change 2213 on 2001/04/30 by nick@dromedary
|
||||
|
||||
Honour gain terms in impulse response output.
|
||||
|
||||
Change 2212 on 2001/04/24 by nick@pluto
|
||||
|
||||
Boost af gain (i.e. stop * 0.25),
|
||||
move [k] near its voiced analogue [g] and apply
|
||||
same changes.
|
||||
|
||||
Change 2211 on 2001/04/24 by nick@pluto
|
||||
|
||||
[g] edits
|
||||
- av for in/out is low, av for 'nail' is high.
|
||||
- silence/burst
|
||||
|
||||
Change 2210 on 2001/04/24 by nick@pluto
|
||||
|
||||
Support for getting impluse response from frame parameters.
|
||||
|
||||
Change 2209 on 2001/04/24 by nick@pluto
|
||||
|
||||
Apply Klatt f1..f3, b1..b3 to [g]
|
||||
|
||||
Change 2208 on 2001/04/24 by nick@pluto
|
||||
|
||||
Mark fmtelm as executable.
|
||||
|
||||
Change 2207 on 2001/04/23 by nick@dromedary
|
||||
|
||||
Add element trace.
|
||||
|
||||
Change 2206 on 2001/04/23 by nick@dromedary
|
||||
|
||||
Add klatt mapping table. Order parms as perl MITalk book by default.
|
||||
|
||||
Change 2205 on 2001/04/23 by nick@dromedary
|
||||
|
||||
Rename variables to match parameter struct slot names.
|
||||
|
||||
Change 2204 on 2001/04/20 by nick@bactrian
|
||||
|
||||
Modern nas needs -lXt
|
||||
|
||||
Change 2202 on 2001/04/17 by nick@dromedary
|
||||
|
||||
A few systematic adjustments
|
||||
|
||||
Change 2201 on 2001/04/17 by nick@dromedary
|
||||
|
||||
Perl version of Elements.def read/write prior to systematic changes.
|
||||
|
||||
Change 2200 on 2001/04/17 by nick@dromedary
|
||||
|
||||
Finish off the basic osay/say nsynth/opsynth decoupling.
|
||||
|
||||
Change 2199 on 2001/04/17 by nick@dromedary
|
||||
|
||||
Branch Elements
|
||||
|
||||
Change 2198 on 2001/04/17 by nick@pluto
|
||||
|
||||
Makefile tweak to allow nasay to build.
|
||||
Make some of checking Linux only.
|
||||
|
||||
Change 2197 on 2001/04/16 by nick@dromedary
|
||||
|
||||
More flexible sorting.
|
||||
|
||||
Change 2195 on 2001/04/16 by nick@dromedary
|
||||
|
||||
Byteswapping issues in au_file
|
||||
|
||||
Change 2194 on 2001/04/16 by nick@dromedary
|
||||
|
||||
Bounds checking.
|
||||
A hack for 8kHz issue, seems skirt of r5c is aliasing ?
|
||||
|
||||
Change 2193 on 2001/04/16 by nick@dromedary
|
||||
|
||||
Fix gross C->perl->C mis-re-translation in dB routine.
|
||||
|
||||
Change 2191 on 2001/04/15 by nick@dromedary
|
||||
|
||||
Start of new synth.
|
||||
|
||||
Change 2190 on 2001/04/15 by nick@dromedary
|
||||
|
||||
Tweak parameters-for-plot dump
|
||||
|
||||
Change 2189 on 2001/04/14 by nick@dromedary
|
||||
|
||||
Filter efficency and use new features in tkanal.
|
||||
|
||||
Change 2186 on 2001/04/13 by nick@dromedary
|
||||
|
||||
More features for analysing rsynth element tables.
|
||||
|
||||
Change 2113 on 2001/01/27 by nick@dromedary
|
||||
|
||||
Work better on modern linux (SuSE6.4)
|
||||
|
||||
Change 1536 on 1999/11/27 by nick@bactrian_nt
|
||||
|
||||
Win32 fixes
|
||||
|
||||
Change 1496 on 1999/11/09 by nick@bactrian
|
||||
|
||||
Cleanup alignment generation process
|
||||
|
||||
Change 1481 on 1999/09/27 by nick@pluto
|
||||
|
||||
Remove near duplicate file
|
||||
|
||||
Change 1480 on 1999/09/27 by nick@pluto
|
||||
|
||||
Inherit minor tweak on work version of txt710.dat
|
||||
|
||||
Change 1478 on 1999/09/26 by nick@bactrian
|
||||
|
||||
Configure searches /usr/local on linux where gcc suggests /usr
|
||||
as prefix.
|
||||
Bug fix in db API.
|
||||
|
||||
Change 1476 on 1999/09/24 by nick@bactrian
|
||||
|
||||
Builds to use /dev/dspW (16 bit) under OSS
|
||||
|
||||
Change 1475 on 1999/09/22 by nick@bactrian
|
||||
|
||||
Correct gdbm abstraction
|
||||
|
||||
Change 1474 on 1999/09/22 by nick@bactrian
|
||||
|
||||
Update autoconf versions, config.guess etc.
|
||||
|
||||
Change 1455 on 1999/09/02 by nick@bactrian
|
||||
|
||||
On-the-road Monterey/San Jose/Dallas changes
|
||||
|
||||
Change 1316 on 1999/05/14 by nick@ni-s
|
||||
|
||||
Update manifest
|
||||
|
||||
Change 1226 on 1999/03/12 by nick@pluto
|
||||
|
||||
Do not skip source for of Makefile, config.h etc.
|
||||
|
||||
Change 1224 on 1999/03/11 by nick@pluto
|
||||
|
||||
MANIFEST stuff
|
||||
|
||||
Change 1215 on 1999/02/20 by nick@camel
|
||||
|
||||
Fixup for Win32
|
||||
|
||||
Change 1214 on 1999/02/20 by nick@ni-s
|
||||
|
||||
Add Makefile
|
||||
|
||||
Change 1213 on 1999/02/20 by nick@ni-s
|
||||
|
||||
Add "align" stuff
|
||||
|
||||
Change 1205 on 1999/01/23 by nick@camel
|
||||
|
||||
Update for VC++6.0
|
||||
|
||||
Change 1204 on 1999/01/23 by nick@camel
|
||||
|
||||
Add VC++ package
|
||||
|
||||
Change 898 on 1998/06/02 by nick@ni-s
|
||||
|
||||
F/B splitting of text-only trie works
|
||||
|
||||
Change 895 on 1998/06/01 by nick@ni-s
|
||||
|
||||
Re-start from degenerate case (with bugs...)
|
||||
|
||||
Change 893 on 1998/05/31 by nick@ni-s
|
||||
|
||||
Bad splits break re-finding
|
||||
|
||||
Change 892 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Don't match if cannot split both word and phon
|
||||
|
||||
Change 891 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Basic splitting working, problem with silly partition on
|
||||
Dutchmen/Dutchman
|
||||
|
||||
Change 890 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Separate functions for forward/backward insert
|
||||
|
||||
Change 889 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Split functions
|
||||
|
||||
Change 888 on 1998/05/30 by nick@ni-s
|
||||
|
||||
Dual disjoint trees
|
||||
|
||||
Change 887 on 1998/05/29 by nick@pluto
|
||||
|
||||
Fridays changes - try stack of nodes
|
||||
|
||||
Change 886 on 1998/05/28 by nick@pluto
|
||||
|
||||
End of Thur - backward match stuff
|
||||
|
||||
Change 885 on 1998/05/28 by nick@pluto
|
||||
|
||||
After re-structure to allow guess/build
|
||||
|
||||
Change 884 on 1998/05/28 by nick@pluto
|
||||
|
||||
End of Wednesday
|
||||
|
||||
Change 883 on 1998/05/26 by nick@ni-s
|
||||
|
||||
dtree seems to build
|
||||
|
||||
Change 882 on 1998/05/26 by nick@ni-s
|
||||
|
||||
Missed file
|
||||
|
||||
Change 881 on 1998/05/26 by nick@pluto
|
||||
|
||||
Add autoconf input file, remove Makefile as it is built
|
||||
|
||||
Change 880 on 1998/05/26 by nick@pluto
|
||||
|
||||
Support db as well as gdbm, update to latest autoconf
|
||||
|
||||
Change 879 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Pre s-rule messing
|
||||
|
||||
Change 878 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Added consonat rules as far as 's' from LPD side-bars
|
||||
|
||||
Change 877 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Re-structure for stand-alone guess for debug
|
||||
|
||||
Change 876 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Snapshot more rule changes
|
||||
|
||||
Change 875 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Switched text.c rules to lower case
|
||||
|
||||
Change 874 on 1998/05/25 by nick@ni-s
|
||||
|
||||
Pre-downcase
|
||||
|
||||
Change 873 on 1998/05/24 by nick@ni-s
|
||||
|
||||
More rule tweaks
|
||||
|
||||
Change 872 on 1998/05/24 by nick@ni-s
|
||||
|
||||
1st round of rule-fixups by cross check with CUVOALD
|
||||
|
||||
Change 870 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Open as ktext
|
||||
|
||||
Change 869 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Add integer version of synth
|
||||
|
||||
Change 868 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Wilbur's pitch floor tweak.
|
||||
|
||||
Change 867 on 1998/05/23 by nick@camel
|
||||
|
||||
Builds under mingw32
|
||||
|
||||
Change 866 on 1998/05/23 by nick@camel
|
||||
|
||||
Works on Win32 (watch the volume...)
|
||||
|
||||
Change 865 on 1998/05/23 by nick@camel
|
||||
|
||||
Links under borland
|
||||
|
||||
Change 864 on 1998/05/23 by nick@camel
|
||||
|
||||
Gross fixup
|
||||
|
||||
Change 863 on 1998/05/23 by nick@camel
|
||||
|
||||
Win32-side fixup
|
||||
|
||||
Change 861 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Raw timidity win32 stuff
|
||||
|
||||
Change 860 on 1998/05/23 by nick@ni-s
|
||||
|
||||
gcc 2.8 fussyness
|
||||
|
||||
Change 858 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Import /home/nick/speak/rsynth
|
||||
|
||||
Change 857 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Import /home/nick/speak/rsynth-2.0
|
||||
|
||||
Change 856 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Import /tmp/rsynth
|
||||
|
||||
Change 855 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Version 1.99
|
||||
|
||||
Change 854 on 1998/05/23 by nick@ni-s
|
||||
|
||||
"ntalk" May 7 1994
|
||||
|
||||
Change 853 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Version c. 'Feb 24 1994' rsynth.tar.Z
|
||||
|
||||
Change 852 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Version "rsynth_cuvolad.tar.gz"
|
||||
|
||||
Change 851 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Version released as 'nsynth.tar.gz'
|
||||
|
||||
Change 850 on 1998/05/23 by nick@ni-s
|
||||
|
||||
Original 'synth.tar.gz'
|
||||
|
|
@ -1,169 +0,0 @@
|
|||
$Id: INSTALL,v 1.1 2006-06-11 07:13:20 urchlay Exp $
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source directory by typing `make clean'. To also remove the files
|
||||
that `configure' created (so you can compile the package for a
|
||||
different kind of computer), type `make distclean'.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
Using a Different Build Directory
|
||||
=================================
|
||||
|
||||
You can compile the package in a different directory from the one
|
||||
containing the source code. Doing so allows you to compile it on more
|
||||
than one kind of computer at the same time. To do this, you must use a
|
||||
version of `make' that supports the `VPATH' variable, such as GNU
|
||||
`make'. `cd' to the directory where you want the object files and
|
||||
executables to go and run the `configure' script. `configure'
|
||||
automatically checks for the source code in the directory that
|
||||
`configure' is in and in `..'.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Save the results of the tests in FILE instead of `config.cache'.
|
||||
Set FILE to `/dev/null' to disable caching, for debugging
|
||||
`configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made.
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
||||
|
|
@ -1,114 +0,0 @@
|
|||
COPYING GPL
|
||||
COPYING.LIB LGPL
|
||||
Change.log What has happened
|
||||
Elements.def Definition of elements
|
||||
INSTALL How to install
|
||||
MANIFEST This file
|
||||
MANIFEST.SKIP Things that don't get included here
|
||||
Makefile.in Pre configure Makefile
|
||||
OldChanges Changes from RCS days
|
||||
PORTING Outline of audio driver needs
|
||||
kmap Phone mappings
|
||||
README Please do ;-)
|
||||
Revision.c Clunky way of setting revision
|
||||
Rsynth/Audio.pm Perl API to this
|
||||
Rsynth/Audio.xs Perl C bindings
|
||||
Rsynth/Elements.pm Perl access to Elements
|
||||
Rsynth/Makefile.PL Perl API build
|
||||
Rsynth/t/elem.t Test low level Perl API
|
||||
Rsynth/t/phones.t Test data
|
||||
Rsynth/phtoelm.def Phone to element data
|
||||
Rsynth/typemap Perl/C type conversion
|
||||
Sampa.pm Perl code to read sampa.htm
|
||||
aufile.c Sun .au file writer
|
||||
aufile.h Sun .au file writer
|
||||
charset.c Locale and charcter set choices
|
||||
charset.h
|
||||
config.guess configure support
|
||||
config.h.in configure support
|
||||
config.sub configure support
|
||||
config/NeXTplay.c
|
||||
config/config.win32
|
||||
config/dummyplay.c
|
||||
config/freebsdplay.c
|
||||
config/hpuxplay.c
|
||||
config/alsaplay.c New ALSA Audio driver
|
||||
config/ossplay.c OSS Audio driver
|
||||
config/make_dist
|
||||
config/mmsystem.h
|
||||
config/naplay.c NAS Audio Driver
|
||||
config/pipeplay.c
|
||||
config/sgiplay.c
|
||||
config/sunplay.c
|
||||
config/sunplay_mm.c
|
||||
config/win32play.c
|
||||
configure Generated build script
|
||||
configure.in configure support
|
||||
darray.c Dynamic array C code
|
||||
darray.h
|
||||
dat2au Perl script for something ...
|
||||
dbif.h DB/GDBM abstraction for dictionary
|
||||
deutsch.c Some support for german
|
||||
deutsch.h Some support for german
|
||||
dict.c Dictionary code
|
||||
dict.h
|
||||
dlookup.c Dictionary lookup command line application
|
||||
efix
|
||||
elements.c Element code
|
||||
elmdgm Vowel parameter display/edit tool
|
||||
english.c Letter to Sound rules
|
||||
english.h
|
||||
euler.pho MBrola style pho file ( say -f euler.pho )
|
||||
euler.txt Plain text of above ( say < euler.txt )
|
||||
festival/.festivalrc Copy to ~/.festivalrc to enable rsynth as a voice for festival
|
||||
festival/lib/rsynth.scm Festival Hackery
|
||||
festival/lib/voices/english/rsynth_br_f/festvox/rsynth_br_f.scm
|
||||
festival/lib/voices/english/rsynth_br_f/mrpa-sampa
|
||||
festival/lib/voices/english/rsynth_br_m/festvox/rsynth_br_m.scm
|
||||
festival/lib/voices/english/rsynth_br_m/mrpa-sampa
|
||||
fmtelem Re-format Elements.def
|
||||
fmtfeat Re-format phfeat.h
|
||||
fsay Use via festival
|
||||
getarg.c Command line parser
|
||||
getargs.h
|
||||
getrev Build assist script
|
||||
guess.c Command line tool to test letter to sound rules
|
||||
holmes.c Element parameter interpolation
|
||||
hplay.h Audio driver API
|
||||
hpuxcc.doc
|
||||
iam.txt Test data
|
||||
install.sh configure support
|
||||
l2u.c uLaw conversion tables
|
||||
l2u.h
|
||||
lang.h
|
||||
ldbdict perl dump of DB dictionary
|
||||
ldict perl dump of GDBM dictionary
|
||||
mbrola.txt Test data
|
||||
mkdictdb.c Build DB/GDBM dictionary from CMU style file
|
||||
naplay.c NAS audio driver
|
||||
opsynth.c Core synth
|
||||
phfeat.h Phoneme features
|
||||
phones.c Phoneme table
|
||||
phones.def Guts of phoneme table
|
||||
phones.h
|
||||
phrases.txt Test data
|
||||
phtoelm.c Phoneme to element layer
|
||||
phtoelm.h
|
||||
plotparm.h
|
||||
prune_elm Perl script that for Elements.def
|
||||
rsynth.h Main header
|
||||
sampa.htm SAMPA IPA tables as UTF-8 HTML
|
||||
sample Test data
|
||||
say.c Algrorithmic conversion of numbers etc.
|
||||
say.h
|
||||
saydate Demo
|
||||
saymain.c main() of ./say application
|
||||
showphone perl/Tk app to display phones.def
|
||||
text test data
|
||||
text.c Letter to sound driver
|
||||
text.h
|
||||
tkvdgm Old perl/Tk app to show vowel diagram from formants
|
||||
tracks gnuplot dumpped interpollated parameters
|
||||
trie.c Trie lookup code
|
||||
trie.h
|
||||
useconfig.h configure support
|
|
@ -1,21 +0,0 @@
|
|||
[%~]$
|
||||
\.[oa]$
|
||||
\.d$
|
||||
\.(bak|bck|save|old|db|plot|dat|bs|au)$
|
||||
\b(RCS|CVS|comments|Solaris|makefiles|SunOS.*)/
|
||||
\b[ab]Dict$
|
||||
\b(align|710)\b
|
||||
text710\.
|
||||
\bcheck\b
|
||||
(sampa|dist|misc|voice|dict|anal|attic|MITalk|mappings|Rsynth/blib)/
|
||||
\bconfig\.h$
|
||||
\brulebuild
|
||||
\brulecheck
|
||||
(GNU)?[Mm]akefile$
|
||||
hplay\.c
|
||||
Rsynth/Audio\.c
|
||||
pm_to_blib
|
||||
^(say|nasay|rsynth|mkdictdb|dlookup|guess|mid|small|tiny)$
|
||||
config\.(cache|status|log)$
|
||||
autom4te.cache/.*
|
||||
^phtoelm.def
|
|
@ -1,166 +0,0 @@
|
|||
# $Id: Makefile,v 1.1 2006-06-11 07:13:20 urchlay Exp $
|
||||
|
||||
|
||||
SRCDIR = .
|
||||
CC = gcc
|
||||
RANLIB = ranlib
|
||||
PREFIX = /usr/local
|
||||
BIN_DIR = $(PREFIX)/bin
|
||||
LIB_DIR = $(PREFIX)/lib/dict
|
||||
LDLIBS = -lm -lgdbm -ldb -L/usr/local/lib -lasound
|
||||
XLIBS = -L/usr/X11R6/lib64 -lXt -L/usr/X11R6/lib64 -lX11 -lnsl
|
||||
CFLAGS = -g -O2
|
||||
CPPFLAGS = -I. -I. -I/usr/local/include -I/usr/X11R6/include
|
||||
DEFS = -DDICT_DIR=\"$(LIB_DIR)\" -DDEFAULT_DICT=\"$(DEFAULT_DICT)\"
|
||||
PROGS = say mkdictdb dlookup mkdictdb dlookup
|
||||
ADICT =
|
||||
BDICT =
|
||||
BUILD = perlstuff
|
||||
DICTS =
|
||||
PERL = /usr/bin/perl
|
||||
FESTIVAL =
|
||||
DEFAULT_DICT = b
|
||||
INSTALL = /usr/bin/ginstall -c
|
||||
INSTALL_PROG = ${INSTALL}
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
EXTRA_INST = install_perl
|
||||
MESSAGE = Hello there
|
||||
LIBRARY = Rsynth/librsynth.a
|
||||
|
||||
.c.o :
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -IRsynth $(DEFS) -c -o $@ $<
|
||||
|
||||
all :: $(PROGS) $(BUILD)
|
||||
|
||||
check :: all perl_check
|
||||
(./say $(MESSAGE) || ./nasay $(MESSAGE))
|
||||
|
||||
|
||||
SYNOBJ = opsynth.o elements.o holmes.o trie.o phtoelm.o darray.o
|
||||
PHONOBJ = say.o phones.o text.o english.o deutsch.o charset.o
|
||||
|
||||
$(LIBRARY) : $(SYNOBJ) $(PHONOBJ)
|
||||
$(AR) rc $@ $(SYNOBJ) $(PHONOBJ)
|
||||
$(RANLIB) $@
|
||||
|
||||
SAY_OBJS = $(PHONOBJ) l2u.o aufile.o getarg.o Revision.o dict.o saymain.o
|
||||
|
||||
say : $(LIBRARY) $(SAY_OBJS) hplay.o
|
||||
$(CC) -o $@ $(LDFLAGS) $(SAY_OBJS) $(SYNOBJ) hplay.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
nasay : $(LIBRARY) $(SAY_OBJS) naplay.o
|
||||
$(CC) -o $@ $(LDFLAGS) $(SAY_OBJS) $(SYNOBJ) naplay.o $(LIBRARY) $(XLIBS) $(LDLIBS)
|
||||
|
||||
mkdictdb : mkdictdb.o $(LIBRARY)
|
||||
$(CC) -o $@ $(LDFLAGS) mkdictdb.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
dlookup : dlookup.o getarg.o $(LIBRARY)
|
||||
$(CC) -o $@ $(LDFLAGS) dlookup.o getarg.o dict.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
clean ::
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) clean ; fi
|
||||
rm -f $(LIBRARY) $(PROGS) $(DICTS) *.o tmp.par core *~ *% ,* .e[cks]1
|
||||
|
||||
distclean :: clean
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) distclean ; fi
|
||||
rm -f Makefile config.status config.h config.log config.cache hplay.c
|
||||
|
||||
|
||||
hplay.o : hplay.c getargs.h hplay.h
|
||||
|
||||
aDict.db : $(ADICT) mkdictdb
|
||||
LANG=en_US mkdictdb $(ADICT) aDict.db
|
||||
touch $@
|
||||
|
||||
bDict.db : $(BDICT) mkdictdb
|
||||
LANG=en_GB mkdictdb $(BDICT) bDict.db
|
||||
touch $@
|
||||
|
||||
install : $(PROGS) $(DICTS) $(EXTRA_INST)
|
||||
mkdir -p $(PREFIX) $(BIN_DIR) $(LIB_DIR)
|
||||
for f in $(PROGS); do \
|
||||
$(INSTALL_PROG) $$f $(BIN_DIR); \
|
||||
done
|
||||
$(INSTALL) -d $(LIB_DIR)
|
||||
for f in $(DICTS); do \
|
||||
$(INSTALL_DATA) $$f $(LIB_DIR); \
|
||||
done
|
||||
|
||||
perl_check :
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) test ; fi
|
||||
|
||||
perlstuff : $(LIBRARY) Rsynth/Makefile.PL
|
||||
cd Rsynth && $(PERL) Makefile.PL && $(MAKE) PERL=$(PERL)
|
||||
|
||||
festival :
|
||||
|
||||
install_perl :
|
||||
cd Rsynth && $(MAKE) PERL=$(PERL) install
|
||||
|
||||
install_festival :
|
||||
|
||||
phtoelm.def : Rsynth/phtoelm.def
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
|
||||
# This bit of Makefile only works if GNU make is available
|
||||
# The classic make version would have `$(SRCDIR)/getrev $(SRCDIR)`
|
||||
# which does not work as it gets evaluated by 'sh' once we have cd'ed
|
||||
# elsewhere. GNU make scheme uses := and $(shell...) to evaluate
|
||||
# REVISION once at Makefile parse time
|
||||
# It is really only needed by developer
|
||||
|
||||
REVISION := $(shell $(SRCDIR)/getrev $(SRCDIR))
|
||||
|
||||
distribution:
|
||||
rm -rf /tmp/rsynth-$(REVISION)
|
||||
mkdir /tmp/rsynth-$(REVISION)
|
||||
(cd $(SRCDIR); tar cf - `cat MANIFEST` ) | (cd /tmp/rsynth-$(REVISION); tar xf - )
|
||||
(cd /tmp; tar cvf - rsynth-$(REVISION) ) | gzip -c > $(SRCDIR)/../rsynth-$(REVISION).tar.gz
|
||||
|
||||
disttest :
|
||||
rm -rf /tmp/rsynth-$(REVISION)
|
||||
mkdir /tmp/rsynth-$(REVISION)
|
||||
(cd $(SRCDIR); tar cf - `cat MANIFEST` ) | (cd /tmp/rsynth-$(REVISION); tar xf - )
|
||||
(cd /tmp/rsynth-$(REVISION); CC=$(CC) configure ; make CC=$(CC) -k check)
|
||||
|
||||
|
||||
#MM Fri Jan 2 11:28:16 2004
|
||||
aufile.o: aufile.c config.h useconfig.h getargs.h l2u.h hplay.h aufile.h
|
||||
charset.o: charset.c charset.h
|
||||
darray.o: darray.c config.h useconfig.h darray.h
|
||||
deutsch.o: deutsch.c config.h darray.h lang.h say.h deutsch.h
|
||||
dict.o: dict.c config.h charset.h phones.h phones.def useconfig.h dbif.h \
|
||||
lang.h darray.h dict.h
|
||||
dlookup.o: dlookup.c config.h useconfig.h dict.h lang.h darray.h phones.h \
|
||||
phones.def getargs.h english.h
|
||||
elements.o: elements.c config.h rsynth.h darray.h trie.h phfeat.h \
|
||||
Elements.def
|
||||
english.o: english.c config.h darray.h lang.h say.h charset.h english.h \
|
||||
phones.h phones.def
|
||||
getarg.o: getarg.c config.h useconfig.h getargs.h
|
||||
guess.o: guess.c darray.h charset.h text.h phones.h phones.def lang.h \
|
||||
english.h say.h
|
||||
holmes.o: holmes.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
getargs.h plotparm.h hplay.h
|
||||
hplay.o: hplay.c config.h useconfig.h l2u.h getargs.h hplay.h
|
||||
l2u.o: l2u.c
|
||||
mkdictdb.o: mkdictdb.c config.h useconfig.h trie.h darray.h phones.h \
|
||||
phones.def charset.h dbif.h
|
||||
opsynth.o: opsynth.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
plotparm.h
|
||||
phones.o: phones.c config.h phones.h phones.def
|
||||
phtoelm.o: phtoelm.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
hplay.h phfeat.h phtoelm.def
|
||||
Revision.o: Revision.c
|
||||
rulebuild.o: rulebuild.c config.h useconfig.h darray.h lang.h english.h \
|
||||
phones.h phones.def charset.h text.h say.h
|
||||
say.o: say.c config.h useconfig.h darray.h rsynth.h trie.h hplay.h dict.h \
|
||||
lang.h text.h getargs.h phones.h phones.def aufile.h charset.h \
|
||||
english.h deutsch.h say.h
|
||||
saymain.o: saymain.c config.h useconfig.h darray.h rsynth.h trie.h \
|
||||
hplay.h dict.h lang.h text.h getargs.h phones.h phones.def aufile.h \
|
||||
charset.h english.h deutsch.h say.h
|
||||
text.o: text.c config.h useconfig.h darray.h phtoelm.h lang.h text.h \
|
||||
say.h
|
||||
trie.o: trie.c config.h useconfig.h trie.h
|
|
@ -1,145 +0,0 @@
|
|||
# $Id: Makefile.in,v 1.1 2006-06-11 07:13:22 urchlay Exp $
|
||||
|
||||
VPATH = @srcdir@
|
||||
SRCDIR = @srcdir@
|
||||
CC = @CC@
|
||||
RANLIB = @RANLIB@
|
||||
PREFIX = @prefix@
|
||||
BIN_DIR = $(PREFIX)/bin
|
||||
LIB_DIR = $(PREFIX)/lib/dict
|
||||
LDLIBS = @LIBS@
|
||||
XLIBS = @XLIBS@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
DEFS = -DDICT_DIR=\"$(LIB_DIR)\" -DDEFAULT_DICT=\"$(DEFAULT_DICT)\"
|
||||
PROGS = @PROGS@
|
||||
ADICT = @ADICT@
|
||||
BDICT = @BDICT@
|
||||
BUILD = @BUILD@
|
||||
DICTS = @DICTS@
|
||||
PERL = @PERL@
|
||||
FESTIVAL = @FESTIVAL@
|
||||
DEFAULT_DICT = @DEFAULT_DICT@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROG = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
EXTRA_INST = @EXTRA_INST@
|
||||
MESSAGE = Hello there
|
||||
LIBRARY = Rsynth/librsynth.a
|
||||
|
||||
.c.o :
|
||||
$(CC) $(CFLAGS) $(CPPFLAGS) -IRsynth $(DEFS) -c -o $@ $<
|
||||
|
||||
all :: $(PROGS) $(BUILD)
|
||||
|
||||
check :: all perl_check
|
||||
(./say $(MESSAGE) || ./nasay $(MESSAGE))
|
||||
|
||||
|
||||
SYNOBJ = opsynth.o elements.o holmes.o trie.o phtoelm.o darray.o
|
||||
PHONOBJ = say.o phones.o text.o english.o deutsch.o charset.o
|
||||
|
||||
$(LIBRARY) : $(SYNOBJ) $(PHONOBJ)
|
||||
$(AR) rc $@ $(SYNOBJ) $(PHONOBJ)
|
||||
$(RANLIB) $@
|
||||
|
||||
SAY_OBJS = $(PHONOBJ) l2u.o aufile.o getarg.o Revision.o dict.o saymain.o
|
||||
|
||||
say : $(LIBRARY) $(SAY_OBJS) hplay.o
|
||||
$(CC) -o $@ $(LDFLAGS) $(SAY_OBJS) $(SYNOBJ) hplay.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
nasay : $(LIBRARY) $(SAY_OBJS) naplay.o
|
||||
$(CC) -o $@ $(LDFLAGS) $(SAY_OBJS) $(SYNOBJ) naplay.o $(LIBRARY) $(XLIBS) $(LDLIBS)
|
||||
|
||||
mkdictdb : mkdictdb.o $(LIBRARY)
|
||||
$(CC) -o $@ $(LDFLAGS) mkdictdb.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
dlookup : dlookup.o getarg.o $(LIBRARY)
|
||||
$(CC) -o $@ $(LDFLAGS) dlookup.o getarg.o dict.o $(LIBRARY) $(LDLIBS)
|
||||
|
||||
clean ::
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) clean ; fi
|
||||
rm -f $(LIBRARY) $(PROGS) $(DICTS) *.o tmp.par core *~ *% ,* .e[cks]1
|
||||
|
||||
distclean :: clean
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) distclean ; fi
|
||||
rm -f Makefile config.status config.h config.log config.cache hplay.c
|
||||
|
||||
|
||||
hplay.o : hplay.c getargs.h hplay.h
|
||||
|
||||
aDict.db : $(ADICT) mkdictdb
|
||||
LANG=en_US mkdictdb $(ADICT) aDict.db
|
||||
touch $@
|
||||
|
||||
bDict.db : $(BDICT) mkdictdb
|
||||
LANG=en_GB mkdictdb $(BDICT) bDict.db
|
||||
touch $@
|
||||
|
||||
install : $(PROGS) $(DICTS) $(EXTRA_INST)
|
||||
mkdir -p $(PREFIX) $(BIN_DIR) $(LIB_DIR)
|
||||
for f in $(PROGS); do \
|
||||
$(INSTALL_PROG) $$f $(BIN_DIR); \
|
||||
done
|
||||
$(INSTALL) -d $(LIB_DIR)
|
||||
for f in $(DICTS); do \
|
||||
$(INSTALL_DATA) $$f $(LIB_DIR); \
|
||||
done
|
||||
|
||||
perl_check :
|
||||
if test -f Rsynth/Makefile ; then cd Rsynth && make PERL=$(PERL) test ; fi
|
||||
|
||||
perlstuff : $(LIBRARY) Rsynth/Makefile.PL
|
||||
cd Rsynth && $(PERL) Makefile.PL && $(MAKE) PERL=$(PERL)
|
||||
|
||||
festival :
|
||||
|
||||
install_perl :
|
||||
cd Rsynth && $(MAKE) PERL=$(PERL) install
|
||||
|
||||
install_festival :
|
||||
|
||||
phtoelm.def : Rsynth/phtoelm.def
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
@make_dist@
|
||||
|
||||
#MM Fri Jan 2 11:28:16 2004
|
||||
aufile.o: aufile.c config.h useconfig.h getargs.h l2u.h hplay.h aufile.h
|
||||
charset.o: charset.c charset.h
|
||||
darray.o: darray.c config.h useconfig.h darray.h
|
||||
deutsch.o: deutsch.c config.h darray.h lang.h say.h deutsch.h
|
||||
dict.o: dict.c config.h charset.h phones.h phones.def useconfig.h dbif.h \
|
||||
lang.h darray.h dict.h
|
||||
dlookup.o: dlookup.c config.h useconfig.h dict.h lang.h darray.h phones.h \
|
||||
phones.def getargs.h english.h
|
||||
elements.o: elements.c config.h rsynth.h darray.h trie.h phfeat.h \
|
||||
Elements.def
|
||||
english.o: english.c config.h darray.h lang.h say.h charset.h english.h \
|
||||
phones.h phones.def
|
||||
getarg.o: getarg.c config.h useconfig.h getargs.h
|
||||
guess.o: guess.c darray.h charset.h text.h phones.h phones.def lang.h \
|
||||
english.h say.h
|
||||
holmes.o: holmes.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
getargs.h plotparm.h hplay.h
|
||||
hplay.o: hplay.c config.h useconfig.h l2u.h getargs.h hplay.h
|
||||
l2u.o: l2u.c
|
||||
mkdictdb.o: mkdictdb.c config.h useconfig.h trie.h darray.h phones.h \
|
||||
phones.def charset.h dbif.h
|
||||
opsynth.o: opsynth.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
plotparm.h
|
||||
phones.o: phones.c config.h phones.h phones.def
|
||||
phtoelm.o: phtoelm.c config.h useconfig.h rsynth.h darray.h trie.h \
|
||||
hplay.h phfeat.h phtoelm.def
|
||||
Revision.o: Revision.c
|
||||
rulebuild.o: rulebuild.c config.h useconfig.h darray.h lang.h english.h \
|
||||
phones.h phones.def charset.h text.h say.h
|
||||
say.o: say.c config.h useconfig.h darray.h rsynth.h trie.h hplay.h dict.h \
|
||||
lang.h text.h getargs.h phones.h phones.def aufile.h charset.h \
|
||||
english.h deutsch.h say.h
|
||||
saymain.o: saymain.c config.h useconfig.h darray.h rsynth.h trie.h \
|
||||
hplay.h dict.h lang.h text.h getargs.h phones.h phones.def aufile.h \
|
||||
charset.h english.h deutsch.h say.h
|
||||
text.o: text.c config.h useconfig.h darray.h phtoelm.h lang.h text.h \
|
||||
say.h
|
||||
trie.o: trie.c config.h useconfig.h trie.h
|
|
@ -1,42 +0,0 @@
|
|||
$Log: not supported by cvs2svn $
|
||||
# Revision 1.13 1994/11/08 13:30:50 a904209
|
||||
# 2.0 release
|
||||
#
|
||||
# Revision 1.12 1994/11/04 13:32:31 a904209
|
||||
# 1.99.1 - Change configure stuff
|
||||
#
|
||||
# Revision 1.11 1994/11/02 10:55:31 a904209
|
||||
# Add autoconf. Tested on SunOS/Solaris
|
||||
#
|
||||
# Revision 1.10 1994/10/04 17:12:50 a904209
|
||||
# 3rd pre-release
|
||||
#
|
||||
# Revision 1.9 1994/10/04 09:08:27 a904209
|
||||
# Next Patch merge
|
||||
#
|
||||
# Revision 1.8 1994/10/03 08:41:47 a904209
|
||||
# 2nd pre-release
|
||||
#
|
||||
# Revision 1.7 1994/09/19 15:48:29 a904209
|
||||
# Split hplay.c, gdbm dictionary, start of f0 contour, netaudio and HP ports
|
||||
#
|
||||
# Revision 1.6 1994/04/15 16:47:37 a904209
|
||||
# Edits for Solaris2.3 (aka SunOs 5.3)
|
||||
#
|
||||
# Revision 1.5 1994/02/24 15:03:05 a904209
|
||||
# Added contributed linux, NeXT and SGI ports.
|
||||
#
|
||||
# Revision 1.4 93/11/18 16:28:56 a904209
|
||||
# Migrated nsyth.c towards Jon's scheme - merge still incomplete
|
||||
#
|
||||
# Revision 1.3 93/11/16 14:32:34 a904209
|
||||
# Added RCS Ids, partial merge of Jon's new klatt/parwave
|
||||
#
|
||||
# Revision 1.2 93/11/16 14:30:48 a904209
|
||||
# Applied suggested linux patches and added partial SGI support
|
||||
#
|
||||
# Revision 1.1 93/11/16 14:26:09 a904209
|
||||
# Add RCS version control to original posting
|
||||
#
|
||||
# First posting of rsynth-0.9.tar.Z
|
||||
|
|
@ -1,233 +0,0 @@
|
|||
|
||||
This is a text to speech system produced by integrating various pieces
|
||||
of code and tables of data, which are all (I believe) suitable
|
||||
for use in OpenSource projects.
|
||||
|
||||
The files in this distribution are either under GPL or LGPL.
|
||||
|
||||
For best quality it is highly desirable to use one of the dictionaries
|
||||
suggested below.
|
||||
|
||||
The uses GNU autoconf to build a configure script.
|
||||
The generic install instructions are in INSTALL, but basically
|
||||
it works like this :
|
||||
|
||||
configure
|
||||
make
|
||||
make check
|
||||
say --help
|
||||
say Something of your choice
|
||||
make -n install # see what it is going to do
|
||||
make install # copy program(s) to /usr/local/bin
|
||||
|
||||
configure --help and INSTALL file explain configure options
|
||||
which may help.
|
||||
|
||||
To allow the package to be built when installer cannot install the
|
||||
GNU gdbm package in the "normal" place you can specify a pathname
|
||||
to the gdbm source directory as follows :
|
||||
|
||||
configure --with-gdbm=<path-to-gdbm>
|
||||
|
||||
e.g.
|
||||
|
||||
configure --with-gdbm=$HOME/gdbm
|
||||
|
||||
Currently there are the following drivers that are actively
|
||||
maintained by me:
|
||||
|
||||
1. Linux - ALSA or OSS
|
||||
OSS driver will probably work on netbsd/freebsd etc.
|
||||
configure should sort this out.
|
||||
|
||||
2. Windows - I will be supporting it, but it may not work
|
||||
in this version.
|
||||
|
||||
3. Any machine for which a nas/netaudio port exists.
|
||||
And for which configure can find the include files and libraries.
|
||||
(Nas "net audio server" does for audio what X11 does for graphics.)
|
||||
|
||||
There are also drivers from the really old rsynth code
|
||||
which are still there:
|
||||
|
||||
* Sun SPARCStations - written & tested by me (when at TI)
|
||||
on SunOS4.1.3 and Solaris2.3
|
||||
* NeXT
|
||||
* SGI - this built on "mips-sgi-irix4.0.5H"
|
||||
* HPUX
|
||||
|
||||
|
||||
Dictionaries:
|
||||
|
||||
Dictionaries convert words in "text" to phonemes in "arpabet"
|
||||
symbols. The arpabet symbols are then "expanded" into an ASCII
|
||||
representation of the IPA.
|
||||
The IPA representation is SAMPA, as defined by J C Wells at UCL see:
|
||||
|
||||
http://www.phon.ucl.ac.uk/home/sampa/home.htm
|
||||
|
||||
Dictionary databases can be built from either of two ftp'able
|
||||
sources:
|
||||
|
||||
1. The Carnegie Mellon Pronouncing Dictionary [cmudict.0.1] is Copyright
|
||||
1993 by Carnegie Mellon University. Use of this dictionary, for any
|
||||
research or commercial purpose, is completely unrestricted. If you
|
||||
make use of or redistribute this material, we would appreciate
|
||||
acknowlegement of its origin.
|
||||
|
||||
ftp://ftp.cs.cmu.edu/project/fgdata/dict
|
||||
Latest seems to be cmudict.0.6.gz
|
||||
|
||||
2. "beep" from
|
||||
ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/dictionaries
|
||||
Latest seems to be beep-1.0.tar.gz
|
||||
|
||||
This is a direct desendant of CUVOLAD (british pronounciation)
|
||||
(as used by previous releases of rsynth), and so
|
||||
has a more restrictive copyright than CMU dictionary.
|
||||
|
||||
dict.c looks for bDict.db by default. b is for british e.g. beep
|
||||
I use aDict.db for CMU (american) dictionary.
|
||||
You can then :
|
||||
|
||||
say -d a schedule # sked...
|
||||
say -d b schedule # shed...
|
||||
|
||||
It is simplest to obtain dictionaries prior to configuring the
|
||||
package and tell it where the source are at configure time:
|
||||
|
||||
|
||||
configure --with-aDict=../dict/cmudict.0.6 --with-bDict=../dict/beep-1.0
|
||||
|
||||
If you have already built/installed the package you can
|
||||
gdbm from it as follows:
|
||||
|
||||
mkdictdb main-dictionary-file bDict.db
|
||||
mv bDict.db /usr/local/lib
|
||||
|
||||
Expect a few messages from mkdictdb about words it does not like
|
||||
in either dictionary.
|
||||
|
||||
It should not be too hard to port it to other hardware. For a discussion of
|
||||
these issues see PORTING.
|
||||
|
||||
Use say --help to get a list of command line options.
|
||||
|
||||
There is an experimental hook to allow you to "say" .pho files intended
|
||||
for MBrola diphone synth. This is used to provide a hacky back-end
|
||||
for Festival.
|
||||
|
||||
Projects:
|
||||
Plan is to pre-analyze the dictionaries and produce better letter
|
||||
to sound rules and smaller exception dictionaries.
|
||||
|
||||
Add more of IPA repertiore so that synth can attempt more languages.
|
||||
|
||||
Improve quality.
|
||||
|
||||
The components (top down ) :
|
||||
|
||||
saymain.c
|
||||
C main() function.
|
||||
Initializes lower layers and then converts words from
|
||||
command line or "stdin" to phonemes.
|
||||
|
||||
say.c / say.h
|
||||
Some "normalization" of the text is performed, in particular
|
||||
numbers can be represented as sequences of digits.
|
||||
|
||||
|
||||
dict.c / dict.h
|
||||
|
||||
As of this release uses a GNU "gdbm" database which has been
|
||||
pre-loaded with a pronounciation dictionary.
|
||||
|
||||
|
||||
text.c / english.c / text.h
|
||||
|
||||
An implementation of US Naval Research Laboratory rules
|
||||
for converting english (american?) text to phonemes.
|
||||
|
||||
Based on the version on the comp.speech archives, main changes
|
||||
were in the encoding of the phonemes from the so called "arpabet"
|
||||
to a more concise form used in the above dictionary.
|
||||
This form (which is nmemonic if you know the International Phonetic
|
||||
Alphabet), is described in the dictionary documentation. It is
|
||||
also very close to that described in the postings by Evan Kirshenbaum
|
||||
(evan@hplerk.hpl.hp.com) to sci.lang and alt.usage.english. (The
|
||||
differences are in the vowels and are probably due to the differences
|
||||
between Britsh and American english).
|
||||
|
||||
|
||||
saynum.c
|
||||
|
||||
Code for "saying" numbers derived from same source as above.
|
||||
It has been modified to call the higher level routines recursively
|
||||
rather producing phonemes directly. This will allow any systematic
|
||||
changes (e.g. British vs American switch) to affect numbers without
|
||||
having to change this module.
|
||||
|
||||
|
||||
holmes.c / holmes.h / elements.c / elements.def
|
||||
|
||||
My implementation of a phoneme to "vocal tract parameters" system
|
||||
described by Holmes et. al. [1]
|
||||
|
||||
The original used an Analogue Hardware synthesizer.
|
||||
|
||||
opsynth.c / rsynth.h
|
||||
|
||||
My re-implementation of the "Klatt" synthesizer, described
|
||||
in Klatt [2].
|
||||
|
||||
hplay.c / hplay.h
|
||||
|
||||
hplay.h describes a common interface.
|
||||
hplay.c is a link to play/xxxplay.c
|
||||
|
||||
|
||||
Acknowledgements :
|
||||
|
||||
Particular thanks to
|
||||
Tony Robinson ajr@eng.cam.ac.uk
|
||||
|
||||
for providing FTP site for alpha testing, and telnet access to a
|
||||
variety of machines.
|
||||
|
||||
Many thanks to
|
||||
|
||||
Axel Belinfante Axel.Belinfante@cs.utwente.nl (World Wide Web)
|
||||
|
||||
Jon Iles J.P.Iles@cs.bham.ac.uk
|
||||
|
||||
Rob Hooft hooft@EMBL-Heidelberg.de (linux stuff)
|
||||
|
||||
Thierry Excoffier exco@ligiahp3.univ-lyon1.fr (playpipe for hpux)
|
||||
Markus Gyger mgyger@itr.ch (HPUX port)
|
||||
|
||||
Ben Stuyts ben@stuyts.nl (NeXT port)
|
||||
|
||||
Stephen Hocking <sysseh@devetir.qld.gov.au> (Preliminary Netaudio port)
|
||||
Greg Renda <greg@ncd.com> (Netaudio cleanup)
|
||||
Tracey Bernath <bernath@bnr.ca> (Netaudio testing)
|
||||
|
||||
"Tom Benoist" <ben@ifx.com> (SGI Port)
|
||||
Andrew Anselmo <anselmo@ERXSG.rl.plh.af.mil> (SGI testing)
|
||||
Mark Hanning-Lee <markhl@iris-355.jpl.nasa.gov> (SGI testing)
|
||||
|
||||
Cornelis van der Laan <nils@ims.uni-stuttgart.de> (freebsd)
|
||||
|
||||
for assisting me in puting this package together.
|
||||
|
||||
|
||||
References :
|
||||
|
||||
[1] Holmes J. N., Mattingly I, and Shearme J. (1964)
|
||||
"Speech Synthesis by Rule" , Language Speech 7, 127-143
|
||||
|
||||
[2] Dennis H. Klatt (1980)
|
||||
"Software for a Cascade/Parallel Formant Synthesizer",
|
||||
J. Acoust. Soc. Am. 67(3), March 1980.
|
||||
|
||||
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
char *Revision = "Revision: 3.0.0";
|
||||
char *say_ident = "@(#)say 3.0.1 2001/04/17"; /* so 'what' works */
|
|
@ -1,28 +0,0 @@
|
|||
package Sampa;
|
||||
use Exporter;
|
||||
use base qw(Exporter);
|
||||
@EXPORT_OK = qw(%unicode %description %example);
|
||||
|
||||
open(my $sampa,"sampa.htm") || die "Cannot open sampa.htm:$!";
|
||||
while (<$sampa>)
|
||||
{
|
||||
my @td = m!<td[^>]*>([^<>]*)</td>!g;
|
||||
if (@td >= 5)
|
||||
{
|
||||
my ($sampa,$IPA,$hex,$dec,$desc,$example) = @td;
|
||||
die "$IPA != $dec" unless $IPA =~ /&#$dec;/;
|
||||
die "0x$hex != $dec" unless hex($hex) == $dec;
|
||||
$sampa =~ s/&/&/;
|
||||
$unicode{$sampa} = chr($dec);
|
||||
$description{$sampa} = $desc;
|
||||
$example{$sampa} = $example;
|
||||
# warn "'$sampa' => $dec\n";
|
||||
}
|
||||
elsif (/<td>/)
|
||||
{
|
||||
warn "Skip [@td]:$_";
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
|
@ -1,241 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include "useconfig.h"
|
||||
#include "getargs.h"
|
||||
#include "l2u.h"
|
||||
#include "hplay.h"
|
||||
#include "aufile.h"
|
||||
|
||||
#ifndef HAVE_FTRUNCATE
|
||||
#ifdef HAVE_CHSIZE
|
||||
#define ftruncate(fd,size) chsize(fd,size)
|
||||
#else
|
||||
#define ftruncate(fd,size) /* oh well */
|
||||
#endif
|
||||
#endif
|
||||
static const short endian = 0x1234;
|
||||
|
||||
#define SUN_MAGIC 0x2e736e64 /* Really '.snd' */
|
||||
#define SUN_HDRSIZE 24 /* Size of minimal header */
|
||||
#define SUN_UNSPEC ((unsigned)(~0)) /* Unspecified data size */
|
||||
#define SUN_ULAW 1 /* u-law encoding */
|
||||
#define SUN_LIN_8 2 /* Linear 8 bits */
|
||||
#define SUN_LIN_16 3 /* Linear 16 bits */
|
||||
|
||||
file_write_p file_write = NULL;
|
||||
file_term_p file_term = NULL;
|
||||
|
||||
static char *linear_file;
|
||||
static char *au_file;
|
||||
static int au_fd = -1; /* file descriptor for .au ulaw file */
|
||||
static int linear_fd = -1;
|
||||
|
||||
static unsigned au_encoding = SUN_ULAW;
|
||||
static unsigned au_size = 0;
|
||||
|
||||
static void wblong(int fd, unsigned long x);
|
||||
static void
|
||||
wblong(int fd, long unsigned int x)
|
||||
{
|
||||
int i;
|
||||
for (i = 24; i >= 0; i -= 8)
|
||||
{
|
||||
char byte = (char) ((x >> i) & 0xFF);
|
||||
write(fd, &byte, 1);
|
||||
}
|
||||
}
|
||||
|
||||
extern void au_header(int fd,unsigned enc,unsigned rate,unsigned size,char *comment);
|
||||
|
||||
void
|
||||
au_header(int fd, unsigned int enc, unsigned int rate, unsigned int size, char *comment)
|
||||
{
|
||||
if (!comment)
|
||||
comment = "";
|
||||
wblong(fd, SUN_MAGIC);
|
||||
wblong(fd, SUN_HDRSIZE + strlen(comment));
|
||||
wblong(fd, size);
|
||||
wblong(fd, enc);
|
||||
wblong(fd, rate);
|
||||
wblong(fd, 1); /* channels */
|
||||
write(fd, comment, strlen(comment));
|
||||
}
|
||||
|
||||
static void aufile_write(int n,short *data);
|
||||
|
||||
static void
|
||||
aufile_write(int n, short int *data)
|
||||
{
|
||||
if (n > 0)
|
||||
{
|
||||
if (linear_fd >= 0)
|
||||
{
|
||||
unsigned size = n * sizeof(short);
|
||||
if (write(linear_fd, data, n * sizeof(short)) != (int) size)
|
||||
perror("write");
|
||||
}
|
||||
if (au_fd >= 0)
|
||||
{
|
||||
if (au_encoding == SUN_LIN_16)
|
||||
{
|
||||
unsigned size = n * sizeof(short);
|
||||
if (*((const char *)(&endian)) == 0x12)
|
||||
{
|
||||
if (write(au_fd, data, size) != (int) size)
|
||||
perror("write");
|
||||
else
|
||||
au_size += size;
|
||||
}
|
||||
else
|
||||
{
|
||||
int i;
|
||||
for (i=0; i < n; i++)
|
||||
{
|
||||
if (write(au_fd, ((char *)data)+1, 1) != 1)
|
||||
perror("write");
|
||||
if (write(au_fd, ((char *)data)+0, 1) != 1)
|
||||
perror("write");
|
||||
au_size += 2;
|
||||
data++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (au_encoding == SUN_ULAW)
|
||||
{
|
||||
unsigned char *plabuf = (unsigned char *) malloc(n);
|
||||
if (plabuf)
|
||||
{
|
||||
unsigned char *p = plabuf;
|
||||
unsigned char *e = p + n;
|
||||
while (p < e)
|
||||
{
|
||||
*p++ = short2ulaw(*data++);
|
||||
}
|
||||
if (write(au_fd, plabuf, n) != n)
|
||||
perror(au_file);
|
||||
else
|
||||
au_size += n;
|
||||
free(plabuf);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "%s : No memory for ulaw data\n", program);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void aufile_term(void);
|
||||
|
||||
static void
|
||||
aufile_term(void)
|
||||
{
|
||||
/* Finish ulaw file */
|
||||
if (au_fd >= 0)
|
||||
{
|
||||
off_t here = lseek(au_fd, 0L, SEEK_CUR);
|
||||
if (here >= 0)
|
||||
{
|
||||
/* can seek this file - truncate it */
|
||||
ftruncate(au_fd, here);
|
||||
/* Now go back and overwite header with actual size */
|
||||
if (lseek(au_fd, 8L, SEEK_SET) == 8)
|
||||
{
|
||||
wblong(au_fd, au_size);
|
||||
}
|
||||
}
|
||||
if (au_fd != 1)
|
||||
close(au_fd);
|
||||
au_fd = -1;
|
||||
}
|
||||
/* Finish linear file */
|
||||
if (linear_fd >= 0)
|
||||
{
|
||||
ftruncate(linear_fd, lseek(linear_fd, 0L, SEEK_CUR));
|
||||
if (linear_fd != 1)
|
||||
close(linear_fd);
|
||||
linear_fd = -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
file_init(int argc, char **argv)
|
||||
{
|
||||
argc = getargs("File output", argc, argv,
|
||||
"l", "", &linear_file, "Raw 16-bit linear pathname",
|
||||
"o", "", &au_file, "Sun/Next audio file name",
|
||||
NULL);
|
||||
if (help_only)
|
||||
return argc;
|
||||
|
||||
if (au_file)
|
||||
{
|
||||
if (strcmp(au_file, "-") == 0)
|
||||
{
|
||||
au_fd = 1; /* stdout */
|
||||
}
|
||||
else
|
||||
{
|
||||
au_fd = open(au_file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
|
||||
if (au_fd < 0)
|
||||
perror(au_file);
|
||||
}
|
||||
if (au_fd >= 0)
|
||||
{
|
||||
if (samp_rate > 8000)
|
||||
au_encoding = SUN_LIN_16;
|
||||
else
|
||||
au_encoding = SUN_ULAW;
|
||||
au_header(au_fd, au_encoding, samp_rate, SUN_UNSPEC, "");
|
||||
au_size = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (linear_file)
|
||||
{
|
||||
if (strcmp(linear_file, "-") == 0)
|
||||
{
|
||||
linear_fd = 1 /* stdout */ ;
|
||||
}
|
||||
else
|
||||
{
|
||||
linear_fd = open(linear_file, O_WRONLY | O_CREAT | O_TRUNC, 0666);
|
||||
if (linear_fd < 0)
|
||||
perror(linear_file);
|
||||
}
|
||||
}
|
||||
if (au_fd >= 0 || linear_fd >= 0)
|
||||
{
|
||||
file_write = aufile_write;
|
||||
file_term = aufile_term;
|
||||
}
|
||||
return argc;
|
||||
}
|
||||
|
||||
|
|
@ -1,6 +1,19 @@
|
|||
#ifndef __AUFILE_H
|
||||
#define __AUFILE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int file_init(int argc,char *argv[]);
|
||||
typedef void (*file_write_p)(int n, short *data);
|
||||
typedef void (*file_term_p)(void);
|
||||
|
||||
extern file_write_p file_write;
|
||||
extern file_term_p file_term;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#ifndef CHARSET_H
|
||||
#define CHARSET_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -15,4 +16,5 @@ extern int accent(int a, int c);
|
|||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* CHARSET_H */
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -8,13 +8,13 @@
|
|||
#define HAVE_ALSA_ASOUNDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <audio/audiolib.h> header file. */
|
||||
/* #undef HAVE_AUDIO_AUDIOLIB_H */
|
||||
#define HAVE_AUDIO_AUDIOLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the `chsize' function. */
|
||||
/* #undef HAVE_CHSIZE */
|
||||
|
||||
/* Define to 1 if you have the <db.h> header file. */
|
||||
#define HAVE_DB_H 1
|
||||
/* #undef HAVE_DB_H */
|
||||
|
||||
/* Found /dev/audio */
|
||||
/* #undef HAVE_DEV_AUDIO */
|
||||
|
@ -35,7 +35,7 @@
|
|||
#define HAVE_FTRUNCATE 1
|
||||
|
||||
/* Define to 1 if you have the <gdbm.h> header file. */
|
||||
#define HAVE_GDBM_H 1
|
||||
/* #undef HAVE_GDBM_H */
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
@ -50,10 +50,10 @@
|
|||
/* #undef HAVE_LIBC_H */
|
||||
|
||||
/* Define to 1 if you have the `db' library (-ldb). */
|
||||
#define HAVE_LIBDB 1
|
||||
/* #undef HAVE_LIBDB */
|
||||
|
||||
/* Define to 1 if you have the `gdbm' library (-lgdbm). */
|
||||
#define HAVE_LIBGDBM 1
|
||||
/* #undef HAVE_LIBGDBM */
|
||||
|
||||
/* Define to 1 if you have the `m' library (-lm). */
|
||||
#define HAVE_LIBM 1
|
||||
|
@ -80,7 +80,7 @@
|
|||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Found NAS -laudio */
|
||||
/* #undef HAVE_NAS */
|
||||
#define HAVE_NAS 1
|
||||
|
||||
/* Sun hack */
|
||||
/* #undef HAVE_NONSTDARITH */
|
||||
|
|
|
@ -1,169 +0,0 @@
|
|||
/* config.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* Old ALSA API without pointers */
|
||||
#undef ALSA_PCM_OLD_HW_PARAMS_API
|
||||
|
||||
/* Define to 1 if you have the <alsa/asoundlib.h> header file. */
|
||||
#undef HAVE_ALSA_ASOUNDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <audio/audiolib.h> header file. */
|
||||
#undef HAVE_AUDIO_AUDIOLIB_H
|
||||
|
||||
/* Define to 1 if you have the `chsize' function. */
|
||||
#undef HAVE_CHSIZE
|
||||
|
||||
/* Define to 1 if you have the <db.h> header file. */
|
||||
#undef HAVE_DB_H
|
||||
|
||||
/* Found /dev/audio */
|
||||
#undef HAVE_DEV_AUDIO
|
||||
|
||||
/* Found /dev/dsp */
|
||||
#undef HAVE_DEV_DSP
|
||||
|
||||
/* Found /dev/dspW */
|
||||
#undef HAVE_DEV_DSPW
|
||||
|
||||
/* Found /dev/sbdsp */
|
||||
#undef HAVE_DEV_SBDSP
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if you have the `ftruncate' function. */
|
||||
#undef HAVE_FTRUNCATE
|
||||
|
||||
/* Define to 1 if you have the <gdbm.h> header file. */
|
||||
#undef HAVE_GDBM_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `asound' library (-lasound). */
|
||||
#undef HAVE_LIBASOUND
|
||||
|
||||
/* Define to 1 if you have the `audio' library (-laudio). */
|
||||
#undef HAVE_LIBAUDIO
|
||||
|
||||
/* Define to 1 if you have the <libc.h> header file. */
|
||||
#undef HAVE_LIBC_H
|
||||
|
||||
/* Define to 1 if you have the `db' library (-ldb). */
|
||||
#undef HAVE_LIBDB
|
||||
|
||||
/* Define to 1 if you have the `gdbm' library (-lgdbm). */
|
||||
#undef HAVE_LIBGDBM
|
||||
|
||||
/* Define to 1 if you have the `m' library (-lm). */
|
||||
#undef HAVE_LIBM
|
||||
|
||||
/* Found -lX11 */
|
||||
#undef HAVE_LIBX11
|
||||
|
||||
/* Found -lXt */
|
||||
#undef HAVE_LIBXT
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#undef HAVE_LIMITS_H
|
||||
|
||||
/* Define to 1 if you have the <machine/soundcard.h> header file. */
|
||||
#undef HAVE_MACHINE_SOUNDCARD_H
|
||||
|
||||
/* Define to 1 if you have the <malloc.h> header file. */
|
||||
#undef HAVE_MALLOC_H
|
||||
|
||||
/* Define to 1 if you have the `memcpy' function. */
|
||||
#undef HAVE_MEMCPY
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Found NAS -laudio */
|
||||
#undef HAVE_NAS
|
||||
|
||||
/* Sun hack */
|
||||
#undef HAVE_NONSTDARITH
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `strchr' function. */
|
||||
#undef HAVE_STRCHR
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sun/audioio.h> header file. */
|
||||
#undef HAVE_SUN_AUDIOIO_H
|
||||
|
||||
/* Define to 1 if you have the <sys/audioio.h> header file. */
|
||||
#undef HAVE_SYS_AUDIOIO_H
|
||||
|
||||
/* Define to 1 if you have the <sys/file.h> header file. */
|
||||
#undef HAVE_SYS_FILE_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ioccom.h> header file. */
|
||||
#undef HAVE_SYS_IOCCOM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||
#undef HAVE_SYS_IOCTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/soundcard.h> header file. */
|
||||
#undef HAVE_SYS_SOUNDCARD_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the `truncate' function. */
|
||||
#undef HAVE_TRUNCATE
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* No float prototype */
|
||||
#undef NOPROTOFLOAT
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#undef RETSIGTYPE
|
||||
|
||||
/* New ALSA API passes pointers to parms */
|
||||
#undef RSYNTH_ALSA_PCM_POINTER_PARAMS_API
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 if the X Window System is missing or not being used. */
|
||||
#undef X_DISPLAY_MISSING
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to `long' if <sys/types.h> does not define. */
|
||||
#undef off_t
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,322 +0,0 @@
|
|||
define([AC_CACHE_LOAD], )dnl
|
||||
define([AC_CACHE_SAVE], )dnl
|
||||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_REVISION($Revision: 1.1 $)
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT
|
||||
AC_CONFIG_SRCDIR([say.c])
|
||||
AC_CANONICAL_HOST
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
||||
PROGS="say"
|
||||
dnl Set up link to the native play program
|
||||
hplay=dummy
|
||||
dbm=none
|
||||
make_dist=/dev/null
|
||||
prefix=/usr/local
|
||||
|
||||
dnl AC_PREFIX_PROGRAM(gcc)
|
||||
|
||||
if test -z "$CC" && test -n "$GCC" ; then
|
||||
CC=$GCC
|
||||
fi
|
||||
|
||||
dnl Checks for programs.
|
||||
AC_PROG_CC
|
||||
|
||||
if test "$GCC" != yes; then
|
||||
CFLAGS="-O"
|
||||
fi
|
||||
|
||||
AC_ISC_POSIX
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_RANLIB
|
||||
|
||||
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(fcntl.h limits.h sys/types.h sys/file.h sys/ioctl.h sys/time.h unistd.h)
|
||||
if test "$ac_cv_header_stdc" != yes; then
|
||||
AC_CHECK_FUNCS(strchr memcpy)
|
||||
AC_CHECK_HEADERS(memory.h malloc.h)
|
||||
fi
|
||||
AC_CHECK_FUNCS(ftruncate chsize truncate)
|
||||
|
||||
case "$host" in
|
||||
*-sun-*) hplay=sun; AC_CHECK_HEADERS(sys/ioccom.h sys/audioio.h sun/audioio.h);;
|
||||
*-sgi-*) hplay=sgi ;;
|
||||
*-next-*) hplay=NeXT; AC_CHECK_HEADERS(libc.h) ;;
|
||||
*-*-freebsd*) hplay=linux ;;
|
||||
*-*-linux*) hplay=linux ;;
|
||||
*-*-hpux*) hplay=hpux ;;
|
||||
*-*-*) echo "Unknown host type $host" ;;
|
||||
esac
|
||||
|
||||
AC_MSG_WARN(prefix is $prefix)
|
||||
|
||||
if test "$hplay" = linux; then
|
||||
AC_CHECK_HEADERS(alsa/asoundlib.h,hplay=alsa,hplay=oss)
|
||||
fi
|
||||
|
||||
if test "$hplay" = alsa; then
|
||||
|
||||
AC_MSG_CHECKING(Checking for new ALSA API)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <alsa/asoundlib.h>
|
||||
]], [[
|
||||
static snd_pcm_hw_params_t *hwparams;
|
||||
static snd_pcm_uframes_t chunk;
|
||||
snd_pcm_hw_params_get_buffer_size (hwparams,&chunk);
|
||||
]])],[
|
||||
new_alsa=yes
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_DEFINE(RSYNTH_ALSA_PCM_POINTER_PARAMS_API,1,[New ALSA API passes pointers to parms])
|
||||
],[
|
||||
new_alsa=no
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
|
||||
if test $new_alsa = no; then
|
||||
AC_MSG_CHECKING(Checking for old ALSA API)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#define ALSA_PCM_OLD_HW_PARAMS_API
|
||||
#include <alsa/asoundlib.h>
|
||||
]], [[
|
||||
static snd_pcm_hw_params_t *hwparams;
|
||||
static snd_pcm_uframes_t chunk;
|
||||
chunk = snd_pcm_hw_params_get_buffer_size (hwparams);
|
||||
]])],[
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_DEFINE(ALSA_PCM_OLD_HW_PARAMS_API,1,[Old ALSA API without pointers])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
fi
|
||||
AC_CHECK_LIB(asound,snd_pcm_open)
|
||||
fi
|
||||
|
||||
if test "$hplay" = oss; then
|
||||
AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h,break,hplay=dummy)
|
||||
if test -c /dev/dspW ; then
|
||||
AC_DEFINE(HAVE_DEV_DSPW,1,[Found /dev/dspW])
|
||||
fi
|
||||
if test -c /dev/audio ; then
|
||||
AC_DEFINE(HAVE_DEV_AUDIO,1,[Found /dev/audio])
|
||||
fi
|
||||
if test -c /dev/dsp ; then
|
||||
AC_DEFINE(HAVE_DEV_DSP,1,[Found /dev/dsp])
|
||||
fi
|
||||
if test -c /dev/sbdsp ; then
|
||||
AC_DEFINE(HAVE_DEV_SBDSP,1,[Found /dev/sbdsp])
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_TYPE_OFF_T
|
||||
|
||||
dnl See if float can be used in protos followed by K&R definition
|
||||
AC_MSG_CHECKING(if we can use float in prototypes)
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
|
||||
} int func (float a);
|
||||
int func(a) float a; { ]])],[AC_MSG_RESULT(yes)],[
|
||||
AC_DEFINE(NOPROTOFLOAT,1,[No float prototype])
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
|
||||
if test -d $prefix/include; then
|
||||
CPPFLAGS="$CPPFLAGS -I$prefix/include"
|
||||
AC_MSG_WARN(Using -I$prefix/include)
|
||||
fi
|
||||
|
||||
if test -d $prefix/lib; then
|
||||
LIBS="-L$prefix/lib $LIBS"
|
||||
AC_MSG_WARN(Using -L$prefix/lib)
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(aDict,[ --with-aDict[=<path>] American Dictionary],[
|
||||
if test "$withval" != "" && test -r "$withval" ; then
|
||||
AC_MSG_NOTICE(Using $withval as American Dictionary)
|
||||
ADICT="$withval"
|
||||
BUILD="$BUILD aDict.db"
|
||||
DICTS="$DICTS aDict.db"
|
||||
else
|
||||
AC_MSG_WARN(Cannot read $withval for American Dictionary)
|
||||
fi])
|
||||
|
||||
AC_ARG_WITH(bDict,[ --with-bDict[=<path>] British Dictionary],[
|
||||
if test "$withval" != "" && test -r "$withval" ; then
|
||||
AC_MSG_NOTICE(Using $withval as British Dictionary)
|
||||
BDICT="$withval"
|
||||
BUILD="$BUILD bDict.db"
|
||||
DICTS="$DICTS bDict.db"
|
||||
else
|
||||
AC_MSG_WARN(Cannot read $withval for British Dictionary)
|
||||
fi])
|
||||
|
||||
AS_MESSAGE([checking for database libraries...])
|
||||
|
||||
AC_ARG_WITH(db,[ -with-db[=<path] Try and use Berkeley DB],[
|
||||
if test "$withval" != "" && test -d "$withval" ; then
|
||||
CPPFLAGS="-I$withval $CPPFLAGS"
|
||||
LIBS="-L$withval $LIBS"
|
||||
fi])
|
||||
|
||||
if test "$with_db" != "no" ; then
|
||||
AC_CHECK_LIB(db,db_create)
|
||||
if test "$ac_cv_lib_db_db_create" = yes ; then
|
||||
AC_CHECK_HEADERS(db.h,db_h=yes)
|
||||
fi
|
||||
if test "$db_h" = yes ; then
|
||||
PROGS="$PROGS mkdictdb dlookup"
|
||||
AC_MSG_WARN(Using db)
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(gdbm,[ --with-gdbm[=<path>] Try and use GNU gdbm (given source directory)],[
|
||||
if test "$withval" != "" && test -d "$withval" ; then
|
||||
CPPFLAGS="-I$withval $CPPFLAGS"
|
||||
LIBS="-L$withval $LIBS"
|
||||
else
|
||||
echo "--with-gdbm=$withval"
|
||||
fi])
|
||||
|
||||
if test "$with_gdbm" != "no" ; then
|
||||
AC_CHECK_HEADERS(gdbm.h,gdbm_h=yes)
|
||||
if test "$gdbm_h" = yes; then
|
||||
AC_CHECK_LIB(gdbm,gdbm_open)
|
||||
if test "$ac_cv_lib_gdbm_gdbm_open" = yes ; then
|
||||
AC_MSG_WARN(Using gdbm)
|
||||
PROGS="$PROGS mkdictdb dlookup"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$db_h$gdbm_h" = ""; then
|
||||
AC_MSG_WARN(No db.h and no gdbm.h)
|
||||
BUILD=""
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(PERL,perl)
|
||||
if test "perl" != ""; then
|
||||
BUILD="$BUILD perlstuff"
|
||||
EXTRA_INST="$EXTRA install_perl"
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(festival,[ --with-festival[=<path>] Festival Directory],[
|
||||
if test "$withval" != "" && test -d "$withval/lib/voices" ; then
|
||||
FESTIVAL="$withval"
|
||||
BUILD="$BUILD festival"
|
||||
EXTRA_INST="$EXTRA_INST install_festival"
|
||||
else
|
||||
AC_MSG_WARN(Cannot find $withval/lib/voices directory)
|
||||
fi])
|
||||
|
||||
DEFAULT_DICT=b
|
||||
|
||||
AC_ARG_WITH(defDict,[ --with-defDict[=<a|b>] Default Dictionary, American (a) or British (b)],[
|
||||
if test "$withval" != "" ; then
|
||||
DEFAULT_DICT="$withval"
|
||||
else
|
||||
echo "Cannot read $withval"
|
||||
fi])
|
||||
|
||||
CPPFLAGS="-I. -I$srcdir $CPPFLAGS"
|
||||
|
||||
AC_CHECK_LIB(M,atan)
|
||||
AC_CHECK_LIB(m,atan)
|
||||
|
||||
|
||||
if test "$hplay" = sgi; then
|
||||
AC_CHECK_LIB(audio,ALopenport)
|
||||
fi
|
||||
|
||||
|
||||
dnl Checking for X11
|
||||
AC_PATH_XTRA
|
||||
if test -n "$x_includes" ; then
|
||||
CPPFLAGS="$CPPFLAGS -I$x_includes"
|
||||
fi
|
||||
|
||||
AC_CHECK_LIB(socket,socket,XLIBS="-lsocket $XLIBS")
|
||||
AC_CHECK_LIB(nsl,inet_addr,XLIBS="-lnsl $XLIBS")
|
||||
AC_CHECK_LIB(X11,XauReadAuth,[
|
||||
XLIBS="$X_LIBS -lX11 $XLIBS"
|
||||
AC_DEFINE(HAVE_LIBX11,1,[Found -lX11])
|
||||
],,$X_LIBS $XLIBS $LIBS)
|
||||
|
||||
AC_CHECK_LIB(Xt,XtAppAddInput,[
|
||||
XLIBS="$X_LIBS -lXt $XLIBS"
|
||||
AC_DEFINE(HAVE_LIBXT,1,[Found -lXt])
|
||||
],,$X_LIBS $XLIBS $LIBS)
|
||||
|
||||
dnl See if we can find nas audio library
|
||||
AC_CHECK_HEADERS(audio/audiolib.h)
|
||||
if test "$ac_cv_header_audio_audiolib_h" = yes ; then
|
||||
AC_CHECK_LIB(audio,AuOpenServer,[
|
||||
XLIBS="$XLIBS -laudio"
|
||||
AC_DEFINE(HAVE_NAS,1,[Found NAS -laudio])
|
||||
],,$XLIBS $LIBS)
|
||||
if test "$ac_cv_lib_audio_AuOpenServer" = yes; then
|
||||
if test "$hplay" = dummy; then
|
||||
hplay="na"
|
||||
LIBS="$XLIBS $LIBS"
|
||||
XLIBS=""
|
||||
else
|
||||
PROGS="$PROGS nasay"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Check for obscure but speed-enhancing sun hack
|
||||
if test "$hplay" = sun; then
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[nonstandard_arithmetic();]])],[AC_DEFINE(HAVE_NONSTDARITH,1,[Sun hack])],[])
|
||||
fi
|
||||
|
||||
dnl Checks for library functions.
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_TYPE_SIGNAL
|
||||
|
||||
AC_MSG_CHECKING(for GNU make)
|
||||
if make -v 2>/dev/null | grep -i 'GNU *Make' > /dev/null ; then
|
||||
make_dist=$srcdir/config/make_dist
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
AC_SUBST(CC)
|
||||
AC_SUBST(RANLIB)
|
||||
AC_SUBST(INSTALL)
|
||||
AC_SUBST(INSTALL_PROGRAM)
|
||||
AC_SUBST(INSTALL_DATA)
|
||||
AC_SUBST(BUILD)
|
||||
AC_SUBST(EXTRA_INST)
|
||||
AC_SUBST(PERL)
|
||||
AC_SUBST(FESTIVAL)
|
||||
AC_SUBST(ADICT)
|
||||
AC_SUBST(BDICT)
|
||||
AC_SUBST(DICTS)
|
||||
AC_SUBST(DEFAULT_DICT)
|
||||
AC_SUBST(XLIBS)
|
||||
AC_SUBST(PROGS)
|
||||
AC_SUBST(NOPROTOFLOAT)
|
||||
AC_SUBST(HAVE_NONSTDARITH)
|
||||
AC_SUBST_FILE(make_dist)
|
||||
|
||||
ac_sources="config/${hplay}play.c"
|
||||
ac_dests="hplay.c"
|
||||
while test -n "$ac_sources"; do
|
||||
set $ac_dests; ac_dest=$1; shift; ac_dests=$*
|
||||
set $ac_sources; ac_source=$1; shift; ac_sources=$*
|
||||
ac_config_links_1="$ac_config_links_1 $ac_dest:$ac_source"
|
||||
done
|
||||
AC_CONFIG_LINKS([$ac_config_links_1])
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
/* $Id: darray.h,v 1.1 2006-06-11 07:13:23 urchlay Exp $
|
||||
/* $Id: darray.h,v 1.2 2006-06-11 21:49:07 stephena Exp $
|
||||
*/
|
||||
#if !defined(DARRAY_H)
|
||||
#define DARRAY_H
|
||||
|
@ -27,7 +27,6 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct
|
||||
{char *data; /* the items */
|
||||
unsigned items; /* number of slots used */
|
||||
|
@ -97,7 +96,4 @@ extern int darray_fget(FILE * f, darray_ptr p);
|
|||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* DARRAY_H */
|
||||
|
||||
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
use Audio::Data;
|
||||
use Audio::Play;
|
||||
|
||||
my $f = shift;
|
||||
my $n = shift(@ARGV) + 0;
|
||||
|
||||
my @data;
|
||||
while (<>)
|
||||
{
|
||||
s/#.*$//;
|
||||
next if /^\s*$/;
|
||||
s/^\s+//;
|
||||
my @f = split(/\s+/,$_);
|
||||
my $v = 0+$f[$n];
|
||||
push(@data,$v);
|
||||
}
|
||||
|
||||
my $au = Audio::Data->new(rate => 11025);
|
||||
|
||||
$au->data(@data);
|
||||
|
||||
$au /= 32768;
|
||||
|
||||
|
||||
my ($max,$min) = $au->bounds;
|
||||
my $dur = $au->duration;
|
||||
warn "Original $max - $min ${dur}s\n";
|
||||
|
||||
if ($max > 1 || $min < -1)
|
||||
{
|
||||
my $dc = ($max+$min)/2;
|
||||
$au -= $dc;
|
||||
my $size = ($max-$min)/2;
|
||||
$au /= $size;
|
||||
($max,$min) = $au->bounds;
|
||||
$dur = $au->duration;
|
||||
warn "Normaized $max - $min ${dur}s\n";
|
||||
|
||||
}
|
||||
|
||||
open(my $fh,">$f") || die "Cannot open $f:$!";
|
||||
$au->Save($fh,"");
|
||||
close($fh);
|
||||
|
||||
# Audio::Play->new->play($au);
|
||||
|
||||
open($fh,"$f") || die "Cannot open $f:$!";
|
||||
my $rb = Audio::Data->new(Load => $fh);
|
||||
close($fh);
|
||||
|
||||
($max,$min) = $rb->bounds;
|
||||
$dur = $rb->duration;
|
||||
warn "Duration $max - $min ${dur}s\n";
|
||||
|
|
@ -1,2 +1,14 @@
|
|||
#ifndef __DEUTCSH_H
|
||||
#define __DEUTCSH_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern lang_t Deutsch;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,152 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994,2001-2003 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
/* jms: changed default for dict_path to "g" */
|
||||
#include "config.h"
|
||||
#ifdef HAVE_IO_H
|
||||
#include <io.h>
|
||||
#endif /* HAVE_IO_H */
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "charset.h"
|
||||
#include "phones.h"
|
||||
#include "useconfig.h"
|
||||
#include "dbif.h"
|
||||
|
||||
#ifndef DEFAULT_DICT
|
||||
#define DEFAULT_DICT "b"
|
||||
#endif
|
||||
char *dict_path = DEFAULT_DICT;
|
||||
|
||||
#ifdef DB_HANDLE
|
||||
|
||||
DB_HANDLE dict;
|
||||
|
||||
#include "lang.h"
|
||||
#include "dict.h"
|
||||
|
||||
#ifndef DICT_DIR
|
||||
#define DICT_DIR "/usr/local/lib/dict"
|
||||
#endif
|
||||
|
||||
|
||||
unsigned char *
|
||||
dict_lookup(const char *s, unsigned int n)
|
||||
{
|
||||
if (!n)
|
||||
n = strlen(s);
|
||||
if (dict) {
|
||||
unsigned char *p = (unsigned char *) s;
|
||||
DATUM key;
|
||||
DATUM data;
|
||||
unsigned int i;
|
||||
char *buf = (char *) malloc(n);
|
||||
DATUM_SET(key, buf, n);
|
||||
for (i = 0; i < n; i++) {
|
||||
buf[i] = (isupper(p[i])) ? tolower(p[i]) : p[i];
|
||||
}
|
||||
DB_FETCH(dict, key, data);
|
||||
free(buf);
|
||||
if (DATUM_DATA(data)) {
|
||||
unsigned char *w = (unsigned char *) realloc(DATUM_DATA(data),
|
||||
DATUM_SIZE(data) +
|
||||
1);
|
||||
w[DATUM_SIZE(data)] = '\0';
|
||||
return w;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void choose_dialect(void);
|
||||
|
||||
static void
|
||||
choose_dialect(void)
|
||||
{
|
||||
unsigned char *word = dict_find("wash", 0);
|
||||
if (word && word[0] == W) {
|
||||
if (word[1] == OH)
|
||||
dialect = ph_br;
|
||||
else if (word[1] == AA1)
|
||||
dialect = ph_am;
|
||||
free(word);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
dict_init(const char *dictname)
|
||||
{
|
||||
char *buf = NULL;
|
||||
#ifdef OS2
|
||||
char *dictdir = getenv("ETC");
|
||||
if (dictdir == NULL)
|
||||
dictdir = DICT_DIR; /* jms: if ETC is not set */
|
||||
#else
|
||||
char *dictdir = DICT_DIR;
|
||||
#endif
|
||||
buf =
|
||||
(char *) malloc(strlen(dictdir) + strlen("Dict.db") +
|
||||
strlen(dict_path) + 2);
|
||||
sprintf(buf, "%sDict.db", dictname);
|
||||
DB_OPEN_READ(dict, buf);
|
||||
if (!dict) {
|
||||
sprintf(buf, "%s/%sDict.db", dictdir, dictname);
|
||||
DB_OPEN_READ(dict, buf);
|
||||
}
|
||||
if (dict) {
|
||||
dict_path = (char *) realloc(buf, strlen(buf) + 1);
|
||||
lang->lookup = dict_lookup;
|
||||
choose_dialect();
|
||||
}
|
||||
return have_dict;
|
||||
}
|
||||
|
||||
void
|
||||
dict_term(void)
|
||||
{
|
||||
if (dict) {
|
||||
DB_CLOSE(dict);
|
||||
free(dict_path);
|
||||
lang->lookup = 0;
|
||||
dict = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
unsigned char *
|
||||
dict_find(char *s, unsigned n)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
dict_init(int argc, char *argv[])
|
||||
{
|
||||
return argc;
|
||||
}
|
||||
|
||||
void
|
||||
dict_term(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,77 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "useconfig.h"
|
||||
#include "dict.h"
|
||||
#include "phones.h"
|
||||
#include "getargs.h"
|
||||
#include "english.h"
|
||||
|
||||
lang_t *lang = &English;
|
||||
|
||||
|
||||
static void show(char *s);
|
||||
static void
|
||||
show(char *s)
|
||||
{
|
||||
unsigned char *p = dict_find(s, strlen(s));
|
||||
printf("%s", s);
|
||||
if (p) {
|
||||
int l = strlen((char *) p);
|
||||
int i;
|
||||
for (i = 0; i < l; i++)
|
||||
printf(" %s", ph_name[(unsigned) (p[i])]);
|
||||
printf(" [");
|
||||
for (i = 0; i < l; i++)
|
||||
printf("%s", dialect[(unsigned) (p[i])]);
|
||||
printf("]\n");
|
||||
free(p);
|
||||
}
|
||||
else
|
||||
printf(" ???\n");
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char **argv, char **envp)
|
||||
{
|
||||
argc = getargs("Dictionary", argc, argv,
|
||||
"d", "", &dict_path, "Which dictionary [b|a|g]", NULL);
|
||||
|
||||
|
||||
|
||||
if (help_only) {
|
||||
fprintf(stderr, "Usage: %s [options as above] words to lookup\n",
|
||||
argv[0]);
|
||||
}
|
||||
else {
|
||||
if (dict_path && *dict_path)
|
||||
dict_init(dict_path);
|
||||
if (have_dict) {
|
||||
int i;
|
||||
for (i = 1; i < argc; i++) {
|
||||
show(argv[i]);
|
||||
}
|
||||
dict_term();
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,83 +0,0 @@
|
|||
#!/tools/local/perl -w
|
||||
use strict;
|
||||
use Rsynth::Elements;
|
||||
read_elements();
|
||||
my $vv;
|
||||
my $nv = 0;
|
||||
my $tv = 0;
|
||||
foreach my $e (@eNames)
|
||||
{
|
||||
if ($elem{$e}{features}{vwl})
|
||||
{
|
||||
$nv++;
|
||||
my $av = $elem{$e}{'av'}[0];
|
||||
$vv = $av unless defined $vv;
|
||||
$tv = $tv+$av;
|
||||
if ($vv != $av)
|
||||
{
|
||||
warn "$e has av=$av not $vv\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
$vv = int($tv/$nv+0.5);
|
||||
warn "Vowels are av=$vv\n";
|
||||
foreach my $e (@eNames)
|
||||
{
|
||||
|
||||
my $f = $elem{$e}{features};
|
||||
if ($elem{$e}{'f2'}[0] - $elem{$e}{'f1'}[0] < 200)
|
||||
{
|
||||
warn sprintf("$e : f2 %d too close to f1 %d\n", $elem{$e}{'f2'}[0], $elem{$e}{'f1'}[0]);
|
||||
set($elem{$e}{'f2'},$elem{$e}{'f1'}[0]+200);
|
||||
}
|
||||
if ($elem{$e}{'f3'}[0] - $elem{$e}{'f2'}[0] < 200)
|
||||
{
|
||||
warn sprintf("$e : f3 %d too close to f2 %d\n", $elem{$e}{'f3'}[0], $elem{$e}{'f2'}[0]);
|
||||
}
|
||||
if (!$f->{vwl})
|
||||
{
|
||||
my $av = $elem{$e}{'av'}[0];
|
||||
|
||||
if ($av >= $vv)
|
||||
{
|
||||
warn "$e ".join(',',keys %{$elem{$e}{features}})." has av=$av\n";
|
||||
if ($f->{apr} || $f->{nas} || $f->{lat})
|
||||
{
|
||||
set($elem{$e}{'av'},$vv-10);
|
||||
}
|
||||
elsif ($f->{frc} || $f->{stp})
|
||||
{
|
||||
set($elem{$e}{'av'},$vv-13);
|
||||
}
|
||||
}
|
||||
if ($av > 0)
|
||||
{
|
||||
my $av = $elem{$e}{'avc'}[0];
|
||||
|
||||
if ($av >= $vv)
|
||||
{
|
||||
warn "$e ".join(',',keys %{$elem{$e}{features}})." has avc=$av\n";
|
||||
if ($f->{apr} || $f->{nas} || $f->{lat})
|
||||
{
|
||||
set($elem{$e}{'avc'},$vv-10);
|
||||
}
|
||||
elsif ($f->{frc} || $f->{stp})
|
||||
{
|
||||
set($elem{$e}{'avc'},$vv-13);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
write_elements("Elements.def");
|
||||
|
||||
sub set
|
||||
{
|
||||
my ($a,$v) = @_;
|
||||
warn "Setting to $v\n";
|
||||
my $p = $a->[2]/100;
|
||||
$a->[0] = $v;
|
||||
$a->[1] = $v * (1-$p);
|
||||
}
|
|
@ -1,254 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
|
||||
use Tk;
|
||||
use Tk::Font;
|
||||
use Rsynth::Elements;
|
||||
use Audio::Play;
|
||||
use blib './Rsynth';
|
||||
use Rsynth::Audio;
|
||||
|
||||
my $au = Audio::Data->new(rate => 11025);
|
||||
my $synth = Rsynth::Audio->new($au);
|
||||
|
||||
my $mw = MainWindow->new;
|
||||
$mw->menu;
|
||||
|
||||
my $IPA = $mw->Font(family => 'Gentium',
|
||||
point => 180, slant => 'r',
|
||||
weight => 'medium');
|
||||
|
||||
my $t = $mw->Scrolled(Text => -width => 25,-background => 'black')
|
||||
->pack(-side => 'right', -expand => 1, -fill => 'both');
|
||||
|
||||
#
|
||||
# Vowel diagram to screen:
|
||||
# Y axis is F1 - higher values near bottom, so just scaled
|
||||
|
||||
sub F1BASE () { 190 } # Lowest F1 and origin for Y axis
|
||||
sub F1MAX () { 900 } # Highest F1
|
||||
sub F1SCALE () { 3 }
|
||||
|
||||
# X axis is F2-F1 with higher values on the left
|
||||
#
|
||||
sub F2MIN () { 700 } # Lowest F2
|
||||
sub F2MAX () { 2500 } # Highest F2
|
||||
sub F2BASE () { 2400 } # Screen X offset to ensure +ve x.
|
||||
sub F2SCALE () { 6 }
|
||||
|
||||
# F3 is a 3rd dimension which is a pain.
|
||||
# F3 is lowest for /r/ sounds - low F3 is their characteristic.
|
||||
# F3 is highest for unrounded vowels and lower for rounded vowels
|
||||
# (F2 is lower for rounded vowels too)
|
||||
# Note that /i/ and /j/ and possibly /&/ F3 isn't
|
||||
# from usual "cavity".
|
||||
|
||||
sub F3MIN () { 1600 }
|
||||
sub F3MAX () { 3200 }
|
||||
sub F3SCALE () { 6 }
|
||||
|
||||
sub MINSPACE () { 200 }
|
||||
|
||||
sub f1f2toscreen
|
||||
{
|
||||
my ($f1,$f2) = @_;
|
||||
my $x = (F2BASE - $f2 + $f1)/F2SCALE;
|
||||
my $y = ($f1 - F1BASE)/F1SCALE;
|
||||
return ($x,$y);
|
||||
}
|
||||
|
||||
sub f1f2fromscreen
|
||||
{
|
||||
my ($x,$y) = @_;
|
||||
my $f1 = F1BASE + F1SCALE*$y;
|
||||
my $f2 = F2BASE - F2SCALE*$x+$f1;
|
||||
if ($f2 < $f1 + MINSPACE)
|
||||
{
|
||||
$f2 = $f1 + MINSPACE;
|
||||
}
|
||||
|
||||
return ($f1,$f2);
|
||||
}
|
||||
|
||||
sub f2f3toscreen
|
||||
{
|
||||
my ($f2,$f3) = @_;
|
||||
my $x = (F2BASE - $f2)/F2SCALE;
|
||||
my $y = ($f3 - F3MIN)/F3SCALE;
|
||||
return ($x,$y);
|
||||
}
|
||||
|
||||
sub f2f3fromscreen
|
||||
{
|
||||
my ($x,$y) = @_;
|
||||
my $f2 = F2BASE - $x *F2SCALE;
|
||||
my $f3 = F3MIN + $y *F3SCALE;
|
||||
if ($f3 < $f2 + MINSPACE)
|
||||
{
|
||||
$f3 = $f2 + MINSPACE;
|
||||
}
|
||||
return ($f2,$f3);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
my ($width,$height) = f1f2toscreen(F1MAX, F2MIN);
|
||||
|
||||
my $left = $mw->Frame->pack(-side => 'left', -fill => 'y', -expand => 0);
|
||||
|
||||
my $f1f2 = $left->Canvas(-background => 'black',
|
||||
-height => $height,
|
||||
-width => $width)
|
||||
->pack(-side => 'top', -expand => 0);
|
||||
|
||||
($width,$height) = f2f3toscreen(F2MIN, F3MAX);
|
||||
my $f2f3 = $left->Canvas(-background => 'black',
|
||||
-height => $height,
|
||||
-width => $width)
|
||||
->pack(-side => 'top', -expand => 0);
|
||||
|
||||
my $d = $mw->Text(-width => 15, -font => $IPA)
|
||||
->pack(-side => 'left',-fill => 'y');
|
||||
|
||||
my $cur12 = $f1f2->create(oval => [0,0,0,0],-outline => 'yellow');
|
||||
my $cur23 = $f2f3->create(oval => [0,0,0,0],-outline => 'yellow');
|
||||
|
||||
my @colours = qw(white red green blue magenta cyan orange brown pink violet);
|
||||
my %colour;
|
||||
my $i = 0;
|
||||
|
||||
read_elements();
|
||||
|
||||
my $ve;
|
||||
|
||||
foreach my $e (sort { height($a) <=> height($b) ||
|
||||
front($a) <=> front($b) ||
|
||||
round($a) <=> round($b) }
|
||||
grep { $_->{features}{vwl} } values %elem)
|
||||
{
|
||||
my $ch = $e->{unicode};
|
||||
utf8::decode($ch);
|
||||
if ($e->{features}{vwl} || $e->{features}{gld})
|
||||
{
|
||||
next if ($e->{features}{nas} || $e->{features}{dip});
|
||||
my @feat = features($e);
|
||||
my $key = join(' ',@feat);
|
||||
my $colour = $colour{$key};
|
||||
unless (exists $colour{$key})
|
||||
{
|
||||
$colour = $colours[$i++ % @colours] ;
|
||||
$t->tagConfigure($colour,-foreground => $colour, -font => $IPA);
|
||||
$colour{$key} = $colour;
|
||||
}
|
||||
my $sm = $e->{sampa};
|
||||
$t->insert('end',"$sm [$ch] - @feat\n",[$colour,$e->{name}]);
|
||||
|
||||
my ($x,$y) = f1f2toscreen($e->{f1}[0],$e->{f2}[0]);
|
||||
my $id12 = $f1f2->createText($x, $y,
|
||||
-font => $IPA,
|
||||
-fill => $colour, -text => $ch);
|
||||
($x,$y) = f2f3toscreen($e->{f2}[0],$e->{f3}[0]);
|
||||
my $id23 = $f2f3->createText($x, $y,
|
||||
-font => $IPA,
|
||||
-fill => $colour, -text => $ch);
|
||||
if ($e->{sampa} eq '#')
|
||||
{
|
||||
$ve = $e;
|
||||
$f1f2->Tk::bind('<3>',[\&Click12,$ve,$id12,$id23,Ev('x'),Ev('y'),Ev('s')]);
|
||||
$f2f3->Tk::bind('<3>',[\&Click23,$ve,$id12,$id23,Ev('x'),Ev('y'),Ev('s')]);
|
||||
}
|
||||
$f1f2->bind($id12,'<1>',[\&display,$e,$id12,$id23]);
|
||||
$f1f2->bind($id12,'<2>',[\&change,$e,$id12,$id23]);
|
||||
$f2f3->bind($id23,'<1>',[\&display,$e,$id12,$id23]);
|
||||
$f2f3->bind($id23,'<2>',[\&change,$e,$id12,$id23]);
|
||||
$t->tagBind($e->{name},'<1>',[\&display,$e,$id12,$id23]);
|
||||
$t->tagBind($e->{name},'<2>',[\&change,$e,$id12,$id23]);
|
||||
}
|
||||
}
|
||||
|
||||
sub Click12
|
||||
{
|
||||
my ($w,$e,$id12,$id23,$wx,$wy,$s) = @_;
|
||||
my $x = $w->canvasx($wx);
|
||||
my $y = $w->canvasy($wy);
|
||||
my ($f1,$f2) = f1f2fromscreen($x,$y);
|
||||
$e->{f1}[0] = $f1;
|
||||
$e->{f2}[0] = $f2;
|
||||
display($w,$e,$id12,$id23);
|
||||
}
|
||||
|
||||
sub Click23
|
||||
{
|
||||
my ($w,$e,$id12,$id23,$wx,$wy,$s) = @_;
|
||||
my $x = $w->canvasx($wx);
|
||||
my $y = $w->canvasy($wy);
|
||||
my ($f2,$f3) = f2f3fromscreen($x,$y);
|
||||
$e->{f2}[0] = $f2;
|
||||
$e->{f3}[0] = $f3;
|
||||
display($w,$e,$id12,$id23);
|
||||
}
|
||||
|
||||
sub change
|
||||
{
|
||||
my ($w,$e,$id12,$id23) = @_;
|
||||
foreach my $key (qw(f1 f2 f3))
|
||||
{
|
||||
$e->{$key}[0] = $ve->{$key}[0];
|
||||
}
|
||||
display($w,$e,$id12,$id23);
|
||||
}
|
||||
|
||||
sub display
|
||||
{
|
||||
my ($w,$e,$id12,$id23) = @_;
|
||||
|
||||
my ($bx,$by) = f1f2toscreen($e->{f1}[0],$e->{f2}[0]);
|
||||
$f1f2->coords($id12,[$bx,$by]);
|
||||
my @coord = $f1f2->bbox($id12);
|
||||
$f1f2->coords($cur12,\@coord);
|
||||
|
||||
($bx,$by) = f2f3toscreen($e->{f2}[0],$e->{f3}[0]);
|
||||
$f2f3->coords($id23,[$bx,$by]);
|
||||
@coord = $f2f3->bbox($id23);
|
||||
$f2f3->coords($cur23,\@coord);
|
||||
|
||||
$e->update;
|
||||
$d->delete('1.0','end');
|
||||
my $ch = $e->{unicode};
|
||||
utf8::decode($ch);
|
||||
$d->insert('end',$e->{name}.' '.$e->{sampa}." [$ch]\n");
|
||||
$d->insert('end',join(' ',features($e))."\n");
|
||||
foreach my $sym (@pNames)
|
||||
{
|
||||
$d->insert('end',sprintf("$sym:%4d\n",$e->{$sym}[0]));
|
||||
}
|
||||
# Clear audio buffer
|
||||
$au->length(0);
|
||||
# An empty element/dur "string".
|
||||
my $elm = '';
|
||||
my $pre = '.';
|
||||
my $post = '.';
|
||||
my $idx = $e->{idx};
|
||||
foreach my $ename (@{$Rsynth::Phones::phtoelm{$pre}},$e->{name},
|
||||
@{$Rsynth::Phones::phtoelm{$post}})
|
||||
{
|
||||
my $t = $elem{$ename};
|
||||
$elm .= chr($t->{idx});
|
||||
$elm .= ($t->{idx} == $idx) ? chr(10) : chr($t->{du});
|
||||
$d->insert('end',$ename);
|
||||
}
|
||||
$synth->interpolate($elm);
|
||||
my $svr = Audio::Play->new;
|
||||
$d->insert(end => "\n");
|
||||
$svr->play($au) if $svr;
|
||||
}
|
||||
|
||||
$f1f2->configure(-scrollregion => [$f1f2->bbox('all')]);
|
||||
|
||||
MainLoop;
|
||||
|
||||
write_elements("Elements.edt");
|
||||
|
||||
|
||||
|
|
@ -1,2 +1,12 @@
|
|||
#ifndef __ENGLISH_H
|
||||
#define __ENGLISH_H
|
||||
|
||||
#include "lang.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern lang_t English;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,121 +0,0 @@
|
|||
; Mbrola demo file for en1.
|
||||
; Copyright (c) 1997 Faculte Polytechnique de Mons
|
||||
;
|
||||
; "It would be a considerable invention indeed, that of
|
||||
; a machine able to mimic our speech, with its sounds
|
||||
; and articulations. I think it is not impossible."
|
||||
;
|
||||
; - Leonhard Euler, 1761
|
||||
_ 70
|
||||
I 80 0 115 50 142 99 142
|
||||
t 90
|
||||
w 100
|
||||
U 50 50 205
|
||||
d 40 25 195 87 181
|
||||
b 80
|
||||
i: 140 0 132 99 108
|
||||
@ 30 50 107
|
||||
k 90
|
||||
@ 40 0 145 100 121
|
||||
n 40 50 117
|
||||
s 110
|
||||
I 80 50 218
|
||||
d 40
|
||||
r 50
|
||||
@ 60 75 160
|
||||
b 90 100 109
|
||||
@ 30
|
||||
5 90
|
||||
I 60 75 109
|
||||
n 80
|
||||
v 40
|
||||
e 90 0 109 50 153 75 177
|
||||
n 30 25 195
|
||||
S 80
|
||||
@ 70
|
||||
n 30
|
||||
I 70 75 112
|
||||
n 130 100 98
|
||||
d 60 75 108
|
||||
i: 270 30 177 60 100 100 156
|
||||
d 120 100 177
|
||||
_ 300
|
||||
D 130 50 114
|
||||
{ 100 45 142
|
||||
t 110
|
||||
V 30 25 119
|
||||
v 60
|
||||
@ 70
|
||||
m 100
|
||||
@ 30 100 100
|
||||
S 230
|
||||
i: 180 0 186 35 200 50 190 95 133
|
||||
n 160 6 140 85 145
|
||||
_ 300
|
||||
eI 150 54 150 77 160
|
||||
b 60
|
||||
@ 10
|
||||
l 70 20 137 70 135
|
||||
t 100
|
||||
@ 80 10 105
|
||||
m 78
|
||||
I 60 60 160
|
||||
m 50 50 173
|
||||
I 50 50 140
|
||||
k 120
|
||||
aU 120 5 120 75 97
|
||||
s 140
|
||||
p 100
|
||||
i: 120 15 161 35 148 75 186
|
||||
t 30
|
||||
S 280
|
||||
_ 300
|
||||
w 100 90 115
|
||||
I 30
|
||||
D 60 15 117 60 123
|
||||
I 70 75 205
|
||||
t 60
|
||||
s 60
|
||||
s 100
|
||||
aU 220 5 145 15 126 60 106 95 121
|
||||
n 30
|
||||
d 30 33 140
|
||||
z 70
|
||||
{ 70 0 110 85 119
|
||||
n 30 33 115
|
||||
d 40
|
||||
A: 90 25 101 65 111
|
||||
t 110
|
||||
I 30 50 170
|
||||
k 50
|
||||
j 50 20 225 70 237
|
||||
@ 30 35 235
|
||||
l 50
|
||||
eI 110 5 135 75 108
|
||||
S 140
|
||||
@ 40 35 95
|
||||
n 80 95 99
|
||||
z 230
|
||||
_ 640
|
||||
aI 210 90 105
|
||||
T 140
|
||||
I 30 35 216
|
||||
N 180 85 250
|
||||
k 110
|
||||
I 30 50 222
|
||||
t 70
|
||||
s 80
|
||||
_ 70
|
||||
n 60 25 184 65 177
|
||||
Q 130 5 181 80 222
|
||||
t 120
|
||||
I 30 15 221
|
||||
m 60 85 173
|
||||
p 80
|
||||
Q 100 10 126 85 109
|
||||
s 120
|
||||
@ 50
|
||||
b 60
|
||||
@ 10 15 98
|
||||
5 190 100 103
|
||||
_ 50
|
|
@ -1,3 +0,0 @@
|
|||
It would be a considerable invention indeed, that of
|
||||
a machine able to mimic our speech, with its sounds
|
||||
and articulations. I think it is not impossible.
|
|
@ -1,103 +0,0 @@
|
|||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; ;;
|
||||
;;; Nicholas Ing-Simmons ;;
|
||||
;;; Copyright (c) 2002 ;;
|
||||
;;; All Rights Reserved. ;;
|
||||
;;; ;;
|
||||
;;; Permission is hereby granted, free of charge, to use and distribute ;;
|
||||
;;; this software and its documentation without restriction, including ;;
|
||||
;;; without limitation the rights to use, copy, modify, merge, publish, ;;
|
||||
;;; distribute, sublicense, and/or sell copies of this work, and to ;;
|
||||
;;; permit persons to whom this work is furnished to do so, subject to ;;
|
||||
;;; the following conditions: ;;
|
||||
;;; 1. The code must retain the above copyright notice, this list of ;;
|
||||
;;; conditions and the following disclaimer. ;;
|
||||
;;; 2. Any modifications must be clearly marked as such. ;;
|
||||
;;; 3. Original authors' names are not deleted. ;;
|
||||
;;; 4. The authors' names are not used to endorse or promote products ;;
|
||||
;;; derived from this software without specific prior written ;;
|
||||
;;; permission. ;;
|
||||
;;; ;;
|
||||
;;; THE UNIVERSITY OF EDINBURGH AND THE CONTRIBUTORS TO THIS WORK ;;
|
||||
;;; DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ;;
|
||||
;;; ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ;;
|
||||
;;; SHALL THE UNIVERSITY OF EDINBURGH NOR THE CONTRIBUTORS BE LIABLE ;;
|
||||
;;; FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ;;
|
||||
;;; WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ;;
|
||||
;;; AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ;;
|
||||
;;; ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ;;
|
||||
;;; THIS SOFTWARE. ;;
|
||||
;;; ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;
|
||||
;;; Support for rsynth as an external module.
|
||||
;;; Derived from the handler for mbrola by Nick Ing-Simmons
|
||||
;;;
|
||||
|
||||
;;; You might want to set this in your sitevars.scm
|
||||
(defvar rsynth_progname "/usr/local/bin/say"
|
||||
"rsynth_progname
|
||||
The program name for rsynth.")
|
||||
(defvar rsynth_options "-E -v -a"
|
||||
"rsynth_options
|
||||
Command line options to be passed during rsynth Synthesis.")
|
||||
|
||||
(define (rsynth_Synth utt)
|
||||
"(rsynth_Synth UTT)
|
||||
Synthesize using rsynth as external module. Basically dump the info
|
||||
from this utterance. Call rsynth and reload the waveform into utt.
|
||||
[see rsynth]"
|
||||
(let ((filename (make_tmp_filename)))
|
||||
(save_segments_rsynth utt filename)
|
||||
(system (string-append rsynth_progname " "
|
||||
rsynth_options
|
||||
" -o " filename ".au"
|
||||
" -f " filename
|
||||
))
|
||||
(utt.import.wave utt (string-append filename ".au"))
|
||||
(apply_hooks after_synth_hooks utt)
|
||||
(delete-file filename)
|
||||
(delete-file (string-append filename ".au"))
|
||||
utt))
|
||||
|
||||
(define (save_segments_rsynth utt filename)
|
||||
"(save_segments_rsynth UTT FILENAME)
|
||||
Save segment information in rsynth format in filename. The format is
|
||||
phone duration (ms) [% position F0 target]*. [see rsynth]"
|
||||
(let ((fd (fopen filename "w")))
|
||||
(mapcar
|
||||
(lambda (segment)
|
||||
(save_seg_rsynth_entry
|
||||
(item.feat segment 'name)
|
||||
(item.feat segment 'segment_start)
|
||||
(item.feat segment 'segment_duration)
|
||||
(mapcar
|
||||
(lambda (targ_item)
|
||||
(list
|
||||
(item.feat targ_item "pos")
|
||||
(item.feat targ_item "f0")))
|
||||
(item.relation.daughters segment 'Target)) ;; list of targets
|
||||
fd))
|
||||
(utt.relation.items utt 'Segment))
|
||||
(fclose fd)))
|
||||
|
||||
(define (save_seg_rsynth_entry name start dur targs fd)
|
||||
"(save_seg_rsynth_entry ENTRY NAME START DUR TARGS FD)
|
||||
Entry contains, (name duration num_targs start 1st_targ_pos 1st_targ_val)."
|
||||
(format fd "%s %d " name (nint (* dur 1000)))
|
||||
(if targs ;; if there are any targets
|
||||
(mapcar
|
||||
(lambda (targ) ;; targ_pos and targ_val
|
||||
(let ((targ_pos (car targ))
|
||||
(targ_val (car (cdr targ))))
|
||||
|
||||
(format fd "%d %d "
|
||||
(nint (* 100 (/ (- targ_pos start) dur))) ;; % pos of target
|
||||
(nint (parse-number targ_val))) ;; target value
|
||||
))
|
||||
targs))
|
||||
(terpri fd)
|
||||
(terpri fd)
|
||||
)
|
||||
|
||||
(provide 'rsynth)
|
|
@ -1,46 +0,0 @@
|
|||
uh V
|
||||
e e
|
||||
a {
|
||||
o Q
|
||||
i I
|
||||
u U
|
||||
ii i
|
||||
uu u
|
||||
oo O
|
||||
aa A
|
||||
@@ 3
|
||||
ai aI
|
||||
ei eI
|
||||
oi OI
|
||||
au aU
|
||||
ou @U
|
||||
e@ e@
|
||||
i@ I@
|
||||
u@ U@
|
||||
@ @
|
||||
p b
|
||||
t t
|
||||
k k
|
||||
b b
|
||||
d d
|
||||
g g
|
||||
s s
|
||||
z z
|
||||
sh S
|
||||
zh Z
|
||||
f f
|
||||
v v
|
||||
th T
|
||||
dh D
|
||||
ch tS
|
||||
jh dZ
|
||||
h h
|
||||
m m
|
||||
n n
|
||||
ng N
|
||||
l l
|
||||
ll 5
|
||||
y j
|
||||
r r
|
||||
w w
|
||||
# _
|
|
@ -1,46 +0,0 @@
|
|||
uh V
|
||||
e e
|
||||
a {
|
||||
o Q
|
||||
i I
|
||||
u U
|
||||
ii i
|
||||
uu u
|
||||
oo O
|
||||
aa A
|
||||
@@ 3
|
||||
ai aI
|
||||
ei eI
|
||||
oi OI
|
||||
au aU
|
||||
ou @U
|
||||
e@ e@
|
||||
i@ I@
|
||||
u@ U@
|
||||
@ @
|
||||
p b
|
||||
t t
|
||||
k k
|
||||
b b
|
||||
d d
|
||||
g g
|
||||
s s
|
||||
z z
|
||||
sh S
|
||||
zh Z
|
||||
f f
|
||||
v v
|
||||
th T
|
||||
dh D
|
||||
ch tS
|
||||
jh dZ
|
||||
h h
|
||||
m m
|
||||
n n
|
||||
ng N
|
||||
l l
|
||||
ll 5
|
||||
y j
|
||||
r r
|
||||
w w
|
||||
# _
|
|
@ -1,5 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use Rsynth::Elements;
|
||||
read_elements();
|
||||
write_elements(\*STDOUT);
|
|
@ -1,5 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use Rsynth::Elements;
|
||||
read_elements();
|
||||
write_features(\*STDOUT);
|
|
@ -1,2 +0,0 @@
|
|||
#!/bin/sh
|
||||
/home/nick/speech/festival/bin/festival --tts "$@"
|
|
@ -1,214 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
#include <config.h>
|
||||
/* $Id: getarg.c,v 1.1 2006-06-11 07:13:25 urchlay Exp $
|
||||
*/
|
||||
char *getarg_id = "$Id: getarg.c,v 1.1 2006-06-11 07:13:25 urchlay Exp $";
|
||||
#if defined(USE_PROTOTYPES) ? USE_PROTOTYPES : defined(__STDC__)
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <useconfig.h>
|
||||
#include "getargs.h"
|
||||
|
||||
int help_only = 0;
|
||||
|
||||
/*
|
||||
Usage is like :
|
||||
|
||||
argc = getargs("Module",argc,argv,
|
||||
"r", "%d", &rate, "Integer",
|
||||
"u", "", &ufile_name, "String",
|
||||
"g", "%d", &gain, "Double",
|
||||
"a", NULL, &use_audio, "Boolean -a toggles, +a sets",
|
||||
"s", "" , &speaker, "Boolean -s clears, +s sets",
|
||||
NULL);
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#if defined(USE_PROTOTYPES) ? USE_PROTOTYPES : defined(__STDC__)
|
||||
int
|
||||
getargs(char *module,int argc, char *argv[],...)
|
||||
#else
|
||||
int
|
||||
getargs(module, argc, argv, va_alist)
|
||||
char *module;
|
||||
int argc;
|
||||
char *argv[];
|
||||
va_dcl
|
||||
#endif
|
||||
{
|
||||
va_list ap;
|
||||
int i = 0;
|
||||
int done_module = 0;
|
||||
while (i < argc)
|
||||
{
|
||||
char *s = argv[i];
|
||||
int flag = *s++;
|
||||
if (*s && (flag == '-' || flag == '+'))
|
||||
{
|
||||
int off = 1;
|
||||
while (*s)
|
||||
{
|
||||
char *a;
|
||||
int count = 0;
|
||||
#if defined(USE_PROTOTYPES) ? USE_PROTOTYPES : defined(__STDC__)
|
||||
va_start(ap, argv);
|
||||
#else
|
||||
va_start(ap);
|
||||
#endif
|
||||
while ((a = va_arg(ap, char *)))
|
||||
{
|
||||
int l = strlen(a);
|
||||
char *fmt = va_arg(ap, char *);
|
||||
void *var = va_arg(ap, void *);
|
||||
char *desc = va_arg(ap, char *);
|
||||
if (!strcmp(s,"-help"))
|
||||
{
|
||||
help_only = 1;
|
||||
if (!done_module++)
|
||||
fprintf(stderr,"%s:\n",module);
|
||||
if (fmt)
|
||||
{char *x = strchr(fmt,'%');
|
||||
if (x)
|
||||
{
|
||||
fprintf(stderr," -%s <%s> [",a,x+1);
|
||||
switch(*(x+strlen(x)-1))
|
||||
{
|
||||
case 'e':
|
||||
case 'f':
|
||||
case 'g':
|
||||
fprintf(stderr,fmt,*((double *) var));
|
||||
break;
|
||||
case 'u':
|
||||
case 'd':
|
||||
if (x[1] == 'l')
|
||||
fprintf(stderr,fmt,*((long *) var));
|
||||
else
|
||||
fprintf(stderr,fmt,*((int *) var));
|
||||
break;
|
||||
}
|
||||
fprintf(stderr,"]\t%s\n",desc);
|
||||
}
|
||||
else
|
||||
fprintf(stderr," -%s <string> [%s]\t%s\n",a,
|
||||
*((char **) var) ? *((char **) var) : "", desc);
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr," [+|-]%s [%s]\t%s\n",a,
|
||||
*((int *) var) ? "yes" : "no",desc);
|
||||
}
|
||||
}
|
||||
else if (l > 1)
|
||||
{
|
||||
if (!count && !strcmp(s, a))
|
||||
{
|
||||
if (fmt)
|
||||
{
|
||||
if (i + off < argc)
|
||||
{
|
||||
char *x = argv[i + off++];
|
||||
if (strchr(fmt, '%'))
|
||||
{
|
||||
if (sscanf(x, fmt, var) != 1)
|
||||
fprintf(stderr, "%s : %s invalid after -%s\n", argv[0], x, a);
|
||||
}
|
||||
else
|
||||
*((char **) var) = x;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "%s : no argument after -%s\n", argv[0], a);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (flag == '+')
|
||||
*((int *) var) = !0;
|
||||
else
|
||||
*((int *) var) = !*((int *) var);
|
||||
}
|
||||
/* skip to end of string */
|
||||
count++;
|
||||
s += l;
|
||||
break; /* out of va_arg loop */
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*s == *a)
|
||||
{
|
||||
if (fmt)
|
||||
{
|
||||
if (i + off < argc)
|
||||
{
|
||||
char *x = argv[i + off++];
|
||||
if (strchr(fmt, '%'))
|
||||
{
|
||||
if (sscanf(x, fmt, var) != 1)
|
||||
fprintf(stderr, "%s : %s invalid after -%s\n", argv[0], x, a);
|
||||
}
|
||||
else
|
||||
*((char **) var) = x;
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "%s : no argument after -%s\n", argv[0], a);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (fmt || flag == '+')
|
||||
*((int *) var) = (flag == '+');
|
||||
else
|
||||
*((int *) var) = !*((int *) var);
|
||||
}
|
||||
count++;
|
||||
s++;
|
||||
break; /* out of va_arg loop */
|
||||
}
|
||||
}
|
||||
}
|
||||
va_end(ap);
|
||||
if (!count)
|
||||
{
|
||||
off = 0;
|
||||
break; /* Out of s loop */
|
||||
}
|
||||
}
|
||||
if (off != 0)
|
||||
{
|
||||
int j;
|
||||
argc -= off;
|
||||
for (j = i; j <= argc; j++)
|
||||
argv[j] = argv[j + off];
|
||||
}
|
||||
else
|
||||
i++;
|
||||
}
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (help_only && done_module)
|
||||
fprintf(stderr,"\n");
|
||||
return argc;
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
/* $Id: getargs.h,v 1.1 2006-06-11 07:13:25 urchlay Exp $
|
||||
/* $Id: getargs.h,v 1.2 2006-06-11 21:49:07 stephena Exp $
|
||||
*/
|
||||
#ifndef GETARGS_H
|
||||
#define GETARGS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
extern int getargs(char *module,int argc,char *argv[],...);
|
||||
extern int help_only;
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
#!/bin/sh
|
||||
if test $# -gt 0; then
|
||||
dir=$1;
|
||||
else
|
||||
dir=.
|
||||
fi
|
||||
grep 'Revision:' ${dir}/Revision.c | sed 's/^.*Revision: *\([0-9.]*\).*$/\1/'
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
#include "darray.h"
|
||||
#include "charset.h"
|
||||
#include "text.h"
|
||||
#include "phones.h"
|
||||
#include "lang.h"
|
||||
#include "english.h"
|
||||
#include "say.h"
|
||||
|
||||
|
||||
lang_t *lang = &English;
|
||||
|
||||
unsigned
|
||||
xlate_string(char *string, darray_ptr phone)
|
||||
{
|
||||
abort(); /* just a stub */
|
||||
}
|
||||
|
||||
int main(int argc,char *argv[])
|
||||
{
|
||||
darray_t phone;
|
||||
darray_init(&phone, sizeof(char), 128);
|
||||
init_locale();
|
||||
if (argc > 1)
|
||||
{
|
||||
rule_debug = 1;
|
||||
while (--argc)
|
||||
{
|
||||
char *s = *++argv;
|
||||
NRL(s,strlen(s),&phone);
|
||||
darray_append(&phone,0);
|
||||
printf("%s [%s]\n",s,(char *) darray_find(&phone,0));
|
||||
phone.items = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
char buf[1024];
|
||||
unsigned char *s;
|
||||
unsigned total = 0;
|
||||
unsigned right = 0;
|
||||
while ((s = (unsigned char *) fgets(buf,sizeof(buf),stdin)))
|
||||
{
|
||||
while (*s && isspace(*s)) s++;
|
||||
if (*s)
|
||||
{
|
||||
unsigned char *e = s;
|
||||
unsigned char *p;
|
||||
while (*e && !isspace(*e)) e++;
|
||||
NRL(s,(e-s),&phone);
|
||||
darray_append(&phone,0);
|
||||
p = e;
|
||||
while (*p && isspace(*p)) p++;
|
||||
if (*p)
|
||||
{
|
||||
char *q = p;
|
||||
total++;
|
||||
while (*q && !isspace(*q)) q++;
|
||||
*q++ = ' ';
|
||||
*q = '\0';
|
||||
if (strcmp(p,darray_find(&phone,0)) != 0)
|
||||
{
|
||||
printf("%.*s",(e-s),s);
|
||||
printf(" expected /%s/, got /%s/\n",p,(char *) darray_find(&phone,0));
|
||||
}
|
||||
else
|
||||
{
|
||||
right++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%.*s",(e-s),s);
|
||||
printf(" got /%s/\n",(char *) darray_find(&phone,0));
|
||||
fflush(stdout);
|
||||
}
|
||||
phone.items = 0;
|
||||
}
|
||||
}
|
||||
if (total)
|
||||
{
|
||||
fprintf(stderr,"%.3g%% correct\n",right*100.0/total);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1,209 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 2003 Nick Ing-Simmons.
|
||||
All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
|
||||
#include "useconfig.h"
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/signal.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// #define ALSA_PCM_OLD_HW_PARAMS_API
|
||||
|
||||
#include <alsa/asoundlib.h>
|
||||
#include "l2u.h"
|
||||
|
||||
char *pcm_name = "default";
|
||||
|
||||
#include "getargs.h"
|
||||
#include "hplay.h"
|
||||
|
||||
#define SAMP_RATE 11025
|
||||
long samp_rate = SAMP_RATE;
|
||||
|
||||
/* Audio Parameters */
|
||||
|
||||
static int linear_fd = -1;
|
||||
|
||||
char *prog = "hplay";
|
||||
static snd_pcm_t *pcm;
|
||||
static snd_pcm_hw_params_t *hwparams;
|
||||
static snd_pcm_uframes_t chunk;
|
||||
|
||||
static int
|
||||
audio_open(void)
|
||||
{
|
||||
int err;
|
||||
if ((err = snd_pcm_open(&pcm,pcm_name,SND_PCM_STREAM_PLAYBACK,0)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Cannot open %s:%s",pcm_name,snd_strerror(err));
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int want = samp_rate;
|
||||
int dir = 0;
|
||||
snd_pcm_hw_params_malloc(&hwparams);
|
||||
snd_pcm_hw_params_any(pcm,hwparams);
|
||||
/* Check capabilities */
|
||||
if ((err = snd_pcm_hw_params_set_access(pcm, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Cannot set access %s:%s",pcm_name,snd_strerror(err));
|
||||
return 0;
|
||||
}
|
||||
/* Set sample format */
|
||||
if ((err=snd_pcm_hw_params_set_format(pcm, hwparams, SND_PCM_FORMAT_S16)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Error setting format %s:%s",pcm_name,snd_strerror(err));
|
||||
return(0);
|
||||
}
|
||||
#ifdef ALSA_PCM_OLD_HW_PARAMS_API
|
||||
want = snd_pcm_hw_params_set_rate_near(pcm, hwparams, want, &dir);
|
||||
#else
|
||||
err = snd_pcm_hw_params_set_rate_near(pcm, hwparams, &want, &dir);
|
||||
#endif
|
||||
if (dir != 0 || want != samp_rate)
|
||||
{
|
||||
fprintf(stderr,"Wanted %ldHz, got %uHz (%d)",samp_rate,want,dir);
|
||||
samp_rate = want;
|
||||
}
|
||||
if ((err=snd_pcm_hw_params_set_channels(pcm, hwparams, 1)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Error setting channels %s:%s",pcm_name,snd_strerror(err));
|
||||
return(0);
|
||||
}
|
||||
/* Apply HW parameter settings to */
|
||||
/* PCM device and prepare device */
|
||||
if ((err=snd_pcm_hw_params(pcm, hwparams)) < 0)
|
||||
{
|
||||
fprintf(stderr,"Error setting parameters %s:%s",pcm_name,snd_strerror(err));
|
||||
return(0);
|
||||
}
|
||||
#ifdef ALSA_PCM_OLD_HW_PARAMS_API
|
||||
chunk = snd_pcm_hw_params_get_buffer_size (hwparams);
|
||||
#else
|
||||
snd_pcm_hw_params_get_buffer_size (hwparams,&chunk);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
audio_init(int argc, char *argv[])
|
||||
{
|
||||
int rate_set = 0;
|
||||
int use_audio = 1;
|
||||
|
||||
prog = argv[0];
|
||||
|
||||
argc = getargs("ALSA Sound driver",argc, argv,
|
||||
"r", "%d", &rate_set, "Sample rate",
|
||||
"A", "default", &pcm_name, "Device",
|
||||
"a", NULL, &use_audio, "Audio enable",
|
||||
NULL);
|
||||
|
||||
if (help_only)
|
||||
return argc;
|
||||
|
||||
if (rate_set)
|
||||
samp_rate = rate_set;
|
||||
|
||||
if (use_audio)
|
||||
audio_open();
|
||||
|
||||
return argc;
|
||||
}
|
||||
|
||||
void
|
||||
audio_term(void)
|
||||
{
|
||||
/* Finish linear file */
|
||||
if (linear_fd >= 0)
|
||||
{
|
||||
ftruncate(linear_fd, lseek(linear_fd, 0L, SEEK_CUR));
|
||||
close(linear_fd);
|
||||
linear_fd = -1;
|
||||
}
|
||||
|
||||
/* Close audio system */
|
||||
if (pcm)
|
||||
{
|
||||
int err = snd_pcm_drain(pcm);
|
||||
if (err < 0)
|
||||
{
|
||||
fprintf(stderr,"%s:%s\n",pcm_name,snd_strerror(err));
|
||||
}
|
||||
if ((err = snd_pcm_close(pcm)) < 0)
|
||||
{
|
||||
fprintf(stderr,"%s:%s\n",pcm_name,snd_strerror(err));
|
||||
}
|
||||
pcm = 0;
|
||||
}
|
||||
|
||||
if (hwparams)
|
||||
{
|
||||
snd_pcm_hw_params_free(hwparams);
|
||||
hwparams = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
audio_play(int n, short *data)
|
||||
{
|
||||
if (n > 0)
|
||||
{
|
||||
if (linear_fd >= 0)
|
||||
{
|
||||
if (write(linear_fd, data, n) != n)
|
||||
perror("write");
|
||||
}
|
||||
if (pcm)
|
||||
{
|
||||
snd_pcm_sframes_t ret;
|
||||
while (n > 0)
|
||||
{
|
||||
size_t amount = ((size_t) n > chunk) ? chunk : (size_t) n;
|
||||
while ((ret = snd_pcm_writei(pcm, data, amount)) < 0)
|
||||
{
|
||||
/* Pipe may well drain - but harmless as we write
|
||||
whole words to the pipe
|
||||
*/
|
||||
if (ret != -EPIPE)
|
||||
{
|
||||
fprintf(stderr,"%s:%s\n",pcm_name,snd_strerror(ret));
|
||||
}
|
||||
snd_pcm_prepare(pcm);
|
||||
}
|
||||
n -= ret;
|
||||
data += ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,11 +17,23 @@
|
|||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
/* $Id: hplay.h,v 1.1 2006-06-11 07:13:25 urchlay Exp $
|
||||
/* $Id: hplay.h,v 1.2 2006-06-11 21:49:08 stephena Exp $
|
||||
*/
|
||||
#ifndef __HPLAY_H
|
||||
#define __HPLAY_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern char *program;
|
||||
extern long samp_rate;
|
||||
extern int audio_init(int argc, char *argv[]);
|
||||
extern void audio_term(void);
|
||||
extern void audio_play(int n, short *data);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,10 +0,0 @@
|
|||
This is R-synth - a formant synthesizer.
|
||||
R-synth takes a list of phonemes
|
||||
described in John Well's SAMPA encoding of the IPA,
|
||||
and generates speech using a digital model of the vocal tract.
|
||||
|
||||
The festival speech synthesis system, can use r-synth to generate a
|
||||
voice to read conventional english text.
|
||||
Prosodic information is generated by festival and fed to r-synth.
|
||||
|
||||
|
|
@ -1,233 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5; it is not part of GNU.
|
||||
#
|
||||
# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
#
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
tranformbasename=""
|
||||
transform_arg=""
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
|
||||
if [ -d $dst ]; then
|
||||
instcmd=:
|
||||
else
|
||||
instcmd=mkdir
|
||||
fi
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f $src -o -d $src ]
|
||||
then
|
||||
true
|
||||
else
|
||||
echo "install: $src does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d $dst ]
|
||||
then
|
||||
dst="$dst"/`basename $src`
|
||||
else
|
||||
true
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
oIFS="${IFS}"
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS="${oIFS}"
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp="${pathcomp}${1}"
|
||||
shift
|
||||
|
||||
if [ ! -d "${pathcomp}" ] ;
|
||||
then
|
||||
$mkdirprog "${pathcomp}"
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp="${pathcomp}/"
|
||||
done
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
$doit $instcmd $dst &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||
else
|
||||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
dstfile=`basename $dst $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src $dsttmp &&
|
||||
|
||||
trap "rm -f ${dsttmp}" 0 &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||
|
||||
fi &&
|
||||
|
||||
|
||||
exit 0
|
|
@ -1,571 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
short _u2l[] =
|
||||
{
|
||||
-32256, -31228, -30200, -29172, -28143, -27115, -26087, -25059,
|
||||
-24031, -23002, -21974, -20946, -19918, -18889, -17861, -16833,
|
||||
-16062, -15548, -15033, -14519, -14005, -13491, -12977, -12463,
|
||||
-11949, -11435, -10920, -10406, -9892, -9378, -8864, -8350,
|
||||
-7964, -7707, -7450, -7193, -6936, -6679, -6422, -6165,
|
||||
-5908, -5651, -5394, -5137, -4880, -4623, -4365, -4108,
|
||||
-3916, -3787, -3659, -3530, -3402, -3273, -3144, -3016,
|
||||
-2887, -2759, -2630, -2502, -2373, -2245, -2116, -1988,
|
||||
-1891, -1827, -1763, -1698, -1634, -1570, -1506, -1441,
|
||||
-1377, -1313, -1249, -1184, -1120, -1056, -992, -927,
|
||||
-879, -847, -815, -783, -751, -718, -686, -654,
|
||||
-622, -590, -558, -526, -494, -461, -429, -397,
|
||||
-373, -357, -341, -325, -309, -293, -277, -261,
|
||||
-245, -228, -212, -196, -180, -164, -148, -132,
|
||||
-120, -112, -104, -96, -88, -80, -72, -64,
|
||||
-56, -48, -40, -32, -24, -16, -8, 0,
|
||||
32256, 31228, 30200, 29172, 28143, 27115, 26087, 25059,
|
||||
24031, 23002, 21974, 20946, 19918, 18889, 17861, 16833,
|
||||
16062, 15548, 15033, 14519, 14005, 13491, 12977, 12463,
|
||||
11949, 11435, 10920, 10406, 9892, 9378, 8864, 8350,
|
||||
7964, 7707, 7450, 7193, 6936, 6679, 6422, 6165,
|
||||
5908, 5651, 5394, 5137, 4880, 4623, 4365, 4108,
|
||||
3916, 3787, 3659, 3530, 3402, 3273, 3144, 3016,
|
||||
2887, 2759, 2630, 2502, 2373, 2245, 2116, 1988,
|
||||
1891, 1827, 1763, 1698, 1634, 1570, 1506, 1441,
|
||||
1377, 1313, 1249, 1184, 1120, 1056, 992, 927,
|
||||
879, 847, 815, 783, 751, 718, 686, 654,
|
||||
622, 590, 558, 526, 494, 461, 429, 397,
|
||||
373, 357, 341, 325, 309, 293, 277, 261,
|
||||
245, 228, 212, 196, 180, 164, 148, 132,
|
||||
120, 112, 104, 96, 88, 80, 72, 64,
|
||||
56, 48, 40, 32, 24, 16, 8, 0
|
||||
};
|
||||
|
||||
static unsigned char _l2u_[] =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
|
||||
0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
|
||||
0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
|
||||
0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||
0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
|
||||
0x09, 0x09, 0x09, 0x09, 0x09, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B,
|
||||
0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0B, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C,
|
||||
0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
|
||||
0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E,
|
||||
0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
|
||||
0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
|
||||
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
|
||||
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
|
||||
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12,
|
||||
0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
|
||||
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
|
||||
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
|
||||
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
|
||||
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
|
||||
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
|
||||
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
|
||||
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
|
||||
0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
|
||||
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
|
||||
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
|
||||
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
|
||||
0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
|
||||
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
|
||||
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
|
||||
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
|
||||
0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
||||
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x19,
|
||||
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
|
||||
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
|
||||
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19,
|
||||
0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
|
||||
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
|
||||
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
|
||||
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A,
|
||||
0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
|
||||
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
|
||||
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
|
||||
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B,
|
||||
0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1D, 0x1D, 0x1D, 0x1D,
|
||||
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
|
||||
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
|
||||
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D,
|
||||
0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
|
||||
0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21,
|
||||
0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
|
||||
0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x22, 0x22, 0x22,
|
||||
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23,
|
||||
0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
|
||||
0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24,
|
||||
0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24,
|
||||
0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25,
|
||||
0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25,
|
||||
0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26,
|
||||
0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
|
||||
0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27,
|
||||
0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
|
||||
0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28,
|
||||
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
|
||||
0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29,
|
||||
0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
|
||||
0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x2A, 0x2A,
|
||||
0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
|
||||
0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2B, 0x2B,
|
||||
0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B,
|
||||
0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2C, 0x2C,
|
||||
0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C,
|
||||
0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2C, 0x2D, 0x2D,
|
||||
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
|
||||
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2E, 0x2E,
|
||||
0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E,
|
||||
0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2F, 0x2F,
|
||||
0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F,
|
||||
0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x30,
|
||||
0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31,
|
||||
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x32,
|
||||
0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33,
|
||||
0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x34,
|
||||
0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x35,
|
||||
0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x36,
|
||||
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37,
|
||||
0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x39,
|
||||
0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x3A,
|
||||
0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A, 0x3B,
|
||||
0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3C,
|
||||
0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3D,
|
||||
0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D,
|
||||
0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E,
|
||||
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
|
||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41,
|
||||
0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43,
|
||||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
|
||||
0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47,
|
||||
0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49,
|
||||
0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4B,
|
||||
0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4C, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D,
|
||||
0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F,
|
||||
0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, 0x53,
|
||||
0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x57,
|
||||
0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x59, 0x5A, 0x5A, 0x5A, 0x5A, 0x5B, 0x5B, 0x5B, 0x5B,
|
||||
0x5C, 0x5C, 0x5C, 0x5C, 0x5D, 0x5D, 0x5D, 0x5D, 0x5E, 0x5E, 0x5E, 0x5E, 0x5F, 0x5F, 0x5F, 0x5F,
|
||||
0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67,
|
||||
0x68, 0x68, 0x68, 0x69, 0x69, 0x6A, 0x6A, 0x6B, 0x6B, 0x6C, 0x6C, 0x6D, 0x6D, 0x6E, 0x6E, 0x6F,
|
||||
0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E,
|
||||
0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0,
|
||||
0xEF, 0xEF, 0xEE, 0xEE, 0xED, 0xED, 0xEC, 0xEC, 0xEB, 0xEB, 0xEA, 0xEA, 0xE9, 0xE9, 0xE8, 0xE8,
|
||||
0xE7, 0xE7, 0xE6, 0xE6, 0xE5, 0xE5, 0xE4, 0xE4, 0xE3, 0xE3, 0xE2, 0xE2, 0xE1, 0xE1, 0xE0, 0xE0,
|
||||
0xDF, 0xDF, 0xDF, 0xDF, 0xDE, 0xDE, 0xDE, 0xDE, 0xDD, 0xDD, 0xDD, 0xDD, 0xDC, 0xDC, 0xDC, 0xDC,
|
||||
0xDB, 0xDB, 0xDB, 0xDB, 0xDA, 0xDA, 0xDA, 0xDA, 0xD9, 0xD9, 0xD9, 0xD9, 0xD8, 0xD8, 0xD8, 0xD8,
|
||||
0xD7, 0xD7, 0xD7, 0xD7, 0xD6, 0xD6, 0xD6, 0xD6, 0xD5, 0xD5, 0xD5, 0xD5, 0xD4, 0xD4, 0xD4, 0xD4,
|
||||
0xD3, 0xD3, 0xD3, 0xD3, 0xD2, 0xD2, 0xD2, 0xD2, 0xD1, 0xD1, 0xD1, 0xD1, 0xD0, 0xD0, 0xD0, 0xD0,
|
||||
0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
|
||||
0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
|
||||
0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
|
||||
0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
|
||||
0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
|
||||
0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
|
||||
0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2,
|
||||
0xC2, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
|
||||
0xC0, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
|
||||
0xBF, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
|
||||
0xBE, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
|
||||
0xBD, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
|
||||
0xBC, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
|
||||
0xBB, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
|
||||
0xBA, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
|
||||
0xB9, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8,
|
||||
0xB8, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7,
|
||||
0xB7, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
|
||||
0xB6, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
|
||||
0xB4, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
|
||||
0xB3, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
|
||||
0xB2, 0xB2, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1,
|
||||
0xB1, 0xB1, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0,
|
||||
0xB0, 0xB0, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
|
||||
0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
|
||||
0xAF, 0xAF, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
|
||||
0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
|
||||
0xAE, 0xAE, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
|
||||
0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
|
||||
0xAD, 0xAD, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
|
||||
0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
|
||||
0xAC, 0xAC, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
|
||||
0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
|
||||
0xAB, 0xAB, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
|
||||
0xAA, 0xAA, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
|
||||
0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
|
||||
0xA9, 0xA9, 0xA9, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
|
||||
0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
|
||||
0xA8, 0xA8, 0xA8, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
|
||||
0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
|
||||
0xA7, 0xA7, 0xA7, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
|
||||
0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
|
||||
0xA6, 0xA6, 0xA6, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
|
||||
0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
|
||||
0xA5, 0xA5, 0xA5, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
|
||||
0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
|
||||
0xA4, 0xA4, 0xA4, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
|
||||
0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
|
||||
0xA3, 0xA3, 0xA3, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
|
||||
0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
|
||||
0xA2, 0xA2, 0xA2, 0xA2, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
|
||||
0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
|
||||
0xA1, 0xA1, 0xA1, 0xA1, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
|
||||
0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
|
||||
0xA0, 0xA0, 0xA0, 0xA0, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
|
||||
0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
|
||||
0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
|
||||
0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
|
||||
0x9F, 0x9F, 0x9F, 0x9F, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
|
||||
0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
|
||||
0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
|
||||
0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
|
||||
0x9E, 0x9E, 0x9E, 0x9E, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
|
||||
0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
|
||||
0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
|
||||
0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
|
||||
0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
|
||||
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
|
||||
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
|
||||
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
|
||||
0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
|
||||
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
|
||||
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
|
||||
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
|
||||
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
|
||||
0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
|
||||
0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
|
||||
0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
|
||||
0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
|
||||
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
|
||||
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
|
||||
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
|
||||
0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
|
||||
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
|
||||
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
|
||||
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
|
||||
0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
|
||||
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
|
||||
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
|
||||
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
|
||||
0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
|
||||
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
|
||||
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
|
||||
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
|
||||
0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
|
||||
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
|
||||
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
|
||||
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
|
||||
0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
|
||||
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
|
||||
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
|
||||
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
|
||||
0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
|
||||
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
|
||||
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
|
||||
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
|
||||
0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
|
||||
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
|
||||
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
|
||||
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
|
||||
0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
|
||||
0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
|
||||
0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
|
||||
0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
|
||||
0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
|
||||
0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
|
||||
0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
|
||||
0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
|
||||
0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
|
||||
0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
|
||||
0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
|
||||
0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
|
||||
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
|
||||
0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
|
||||
0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80
|
||||
};
|
||||
unsigned char *_l2u = _l2u_ + 4096;
|
|
@ -1,5 +0,0 @@
|
|||
extern short _u2l[]; /* 8-bit u-law to 16-bit PCM */
|
||||
extern unsigned char *_l2u; /* 13-bit PCM to 8-bit u-law */
|
||||
#define ulaw2short(X) (_u2l[(unsigned char) (X)])
|
||||
#define short2ulaw(X) (_l2u[((short)(X)) >> 3])
|
||||
|
|
@ -1,5 +1,10 @@
|
|||
#ifndef LANG_H
|
||||
#define LANG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "darray.h"
|
||||
|
||||
extern char **dialect;
|
||||
|
@ -28,7 +33,14 @@ typedef struct lang_s
|
|||
|
||||
extern unsigned char *dict_find(const char *s, unsigned n);
|
||||
|
||||
/* FIXME - the following was the original code
|
||||
I guess it needs to be defined in SpeakJet ??
|
||||
For now, it's defined in english.h
|
||||
extern lang_t *lang;
|
||||
*/
|
||||
static lang_t *lang = 0;
|
||||
|
||||
|
||||
#define isvowel(c,m) (*lang->vowel)(c,m)
|
||||
#define isconsonant(c) (*lang->consonant)(c)
|
||||
#define xlate_ordinal(v,p) (*lang->ordinal)(v,p)
|
||||
|
@ -36,4 +48,8 @@ extern lang_t *lang;
|
|||
#define dict_find(s,n) ((lang->lookup) ? (*lang->lookup)(s,n) : 0)
|
||||
#define have_dict (lang->lookup != 0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* LANG_H */
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
#!/usr/local/bin/new/perl -w
|
||||
|
||||
use DB_File;
|
||||
use Fcntl;
|
||||
use strict;
|
||||
|
||||
my $dict = shift;
|
||||
|
||||
die "No $dict" unless -r $dict;
|
||||
|
||||
my %dict;
|
||||
|
||||
my $h = tie %dict, 'DB_File', $dict, O_RDONLY, 0644, $DB_BTREE;
|
||||
$h = tie %dict, 'DB_File', $dict, O_RDONLY, 0644, $DB_HASH unless $h;
|
||||
|
||||
die "Cannot tie $dict:$!" unless $h;
|
||||
|
||||
|
||||
while (my ($key,$val) = each %dict)
|
||||
{
|
||||
print "$key\n";
|
||||
}
|
||||
|
||||
untie %dict;
|
|
@ -1,14 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
|
||||
use GDBM_File;
|
||||
|
||||
$dict = shift;
|
||||
|
||||
tie( %dict, 'GDBM_File', $dict, &GDBM_READER, 0644) || die "Cannot tie $dict:$!";
|
||||
|
||||
while (($key,$val) = each %dict)
|
||||
{
|
||||
print "$key\n";
|
||||
}
|
||||
|
||||
untie %dict;
|
|
@ -1,5 +0,0 @@
|
|||
Mbrola was developed by Thierry Dutoit.
|
||||
It is a speech synthesizer based on the concatenation of diphones.
|
||||
It takes a list of phonemes as input, together with prosodic
|
||||
information, and produces speech at the sampling frequency of the
|
||||
diphone database.
|
|
@ -1,174 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "useconfig.h"
|
||||
#include "trie.h"
|
||||
#include "darray.h"
|
||||
#include "phones.h"
|
||||
#include "charset.h" /* national differences ,jms */
|
||||
#include "dbif.h"
|
||||
|
||||
trie_ptr phones;
|
||||
|
||||
static void enter_phones(void);
|
||||
static void
|
||||
enter_phones(void)
|
||||
{
|
||||
int i;
|
||||
char *s;
|
||||
for (i = 1; (s = ph_name[i]); i++)
|
||||
trie_insert(&phones, s, (void *) i);
|
||||
}
|
||||
|
||||
|
||||
static inline int
|
||||
Delete(unsigned char *p)
|
||||
{
|
||||
int ch = *p;
|
||||
while (*p)
|
||||
{
|
||||
*p = p[1];
|
||||
p++;
|
||||
}
|
||||
return ch;
|
||||
}
|
||||
|
||||
static void enter_words(DB_HANDLE db, FILE * f)
|
||||
{
|
||||
char buf[4096];
|
||||
unsigned words = 0;
|
||||
while (fgets(buf, sizeof(buf), f))
|
||||
{
|
||||
char *s = buf;
|
||||
char *h = strchr(s, '#');
|
||||
if (h)
|
||||
*h = '\0';
|
||||
while (isspace((unsigned char)*s))
|
||||
s++;
|
||||
if (*s)
|
||||
{
|
||||
unsigned char *p = (unsigned char *) s;
|
||||
while (!isspace(*p))
|
||||
{
|
||||
if (*p == '"' || *p == '~' || *p == '<')
|
||||
{
|
||||
unsigned char *x = p;
|
||||
*x = accent(x[0], x[1]);
|
||||
x++;
|
||||
strcpy((char *)x,(char *)x+1);
|
||||
}
|
||||
else if (*p == '\\')
|
||||
{
|
||||
unsigned char *x = p;
|
||||
*x = accent(x[1], x[2]);
|
||||
x++;
|
||||
strcpy((char *) x,(char *)x+2);
|
||||
}
|
||||
if (isupper(*p))
|
||||
*p = tolower(*p);
|
||||
else if (!isalpha(*p) && *p != '\'' && *p != '-' && *p != '_' && *p != '.')
|
||||
break;
|
||||
p++;
|
||||
}
|
||||
if (isspace(*p))
|
||||
{
|
||||
char codes[4096];
|
||||
char *d = codes;
|
||||
int ok = 1;
|
||||
int stress = 0;
|
||||
DATUM key;
|
||||
DATUM_SET(key, s, (char *) p - s);
|
||||
if (++words % 10000 == 0)
|
||||
{
|
||||
printf("%d %.*s\n",words, (int) DATUM_SIZE(key), (char *) DATUM_DATA(key));
|
||||
}
|
||||
while (*p && ok)
|
||||
{
|
||||
unsigned code;
|
||||
while (isspace(*p))
|
||||
p++;
|
||||
if (*p)
|
||||
{
|
||||
unsigned char *e = p;
|
||||
while (isalpha(*e) || *e == '1' || *e == '2')
|
||||
{
|
||||
if (*e == '1' || *e == '2')
|
||||
stress = 1;
|
||||
else if (islower(*e))
|
||||
*e = toupper(*e);
|
||||
e++;
|
||||
}
|
||||
if (*e == '0')
|
||||
*e++ = ' ';
|
||||
if (e > p && (code = (unsigned) trie_lookup(&phones, (char **) &p)))
|
||||
*d++ = code;
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Bad code %.*s>%s", (int)((char *) p - s), s, p);
|
||||
ok = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ok)
|
||||
{
|
||||
DATUM data;
|
||||
DATUM_SET(data, codes, d - codes);
|
||||
DB_STORE(db, key, data);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*p != '(')
|
||||
fprintf(stderr, "Ignore (%c) %s", *p, s);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[], char *env[]);
|
||||
|
||||
int
|
||||
main(int argc, char **argv, char **envp)
|
||||
{
|
||||
init_locale();
|
||||
if (argc == 3)
|
||||
{
|
||||
FILE *f = fopen(argv[1], "r");
|
||||
if (f)
|
||||
{
|
||||
DB_HANDLE db;
|
||||
DB_OPEN_WRITE(db,argv[2]);
|
||||
if (db)
|
||||
{
|
||||
enter_phones();
|
||||
enter_words(db, f);
|
||||
DB_CLOSE(db);
|
||||
}
|
||||
else
|
||||
perror(argv[2]);
|
||||
fclose(f);
|
||||
}
|
||||
else
|
||||
perror(argv[1]);
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -1,150 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1998,2001-2002 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
MA 02111-1307, USA
|
||||
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "useconfig.h"
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define NeedFunctionPrototypes 1
|
||||
#define NeedNestedPrototypes 1
|
||||
#endif
|
||||
|
||||
|
||||
#include <audio/audiolib.h>
|
||||
#include <audio/soundlib.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "getargs.h"
|
||||
#include "hplay.h"
|
||||
|
||||
long samp_rate = 8000;
|
||||
static int volume = 100;
|
||||
static char *audioserver = NULL;
|
||||
static AuServer *aud;
|
||||
|
||||
|
||||
static void done(AuServer * aud, AuEventHandlerRec * handler, AuEvent * ev, AuPointer data)
|
||||
{
|
||||
switch (ev->auany.type)
|
||||
{
|
||||
case AuEventTypeElementNotify:
|
||||
{
|
||||
int *d = (int *) data;
|
||||
*d = (ev->auelementnotify.cur_state == AuStateStop);
|
||||
if (!*d || ev->auelementnotify.reason != AuReasonEOF)
|
||||
{
|
||||
fprintf(stderr, "curr_state=%d reason=%d\n",
|
||||
ev->auelementnotify.cur_state,
|
||||
ev->auelementnotify.reason);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case AuEventTypeMonitorNotify:
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "type=%d serial=%ld time=%ld id=%ld\n",
|
||||
ev->auany.type, ev->auany.serial, ev->auany.time, ev->auany.id);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
audio_play(int n,short *data)
|
||||
{
|
||||
int endian = 1;
|
||||
#define little_endian ((*((char *)&endian) == 1))
|
||||
int priv = 0;
|
||||
AuEvent ev;
|
||||
Sound s = SoundCreate(SoundFileFormatNone, little_endian ?
|
||||
AuFormatLinearSigned16LSB : AuFormatLinearSigned16MSB,
|
||||
1, samp_rate, n, "Chit chat");
|
||||
if (aud)
|
||||
{
|
||||
#ifdef USE_ALL_ARGS
|
||||
AuStatus ret_status;
|
||||
AuFlowID flow = 0;
|
||||
int monitor = 0;
|
||||
int multiplier = 0;
|
||||
if (!AuSoundPlayFromData(aud, s, data, AuNone,
|
||||
AuFixedPointFromFraction(volume, 100),
|
||||
done, &priv,
|
||||
&flow, &multiplier,
|
||||
&monitor, &ret_status))
|
||||
#else
|
||||
if (!AuSoundPlayFromData(aud, s, data, AuNone,
|
||||
AuFixedPointFromFraction(volume, 100),
|
||||
done, &priv,
|
||||
NULL, NULL, NULL, NULL))
|
||||
#endif
|
||||
perror("problems playing data");
|
||||
else
|
||||
{
|
||||
while (1)
|
||||
{
|
||||
AuNextEvent(aud, AuTrue, &ev);
|
||||
AuDispatchEvent(aud, &ev);
|
||||
if (priv)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
SoundDestroy(s);
|
||||
}
|
||||
|
||||
void
|
||||
audio_term(void)
|
||||
{
|
||||
if (aud)
|
||||
{
|
||||
AuFlush(aud);
|
||||
AuCloseServer(aud);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
audio_init(int argc,char *argv[])
|
||||
{
|
||||
int rate_set = samp_rate;
|
||||
int vol = 0;
|
||||
|
||||
argc = getargs("Nas",argc, argv,
|
||||
"r", "%d", &rate_set, "Sample rate Hz",
|
||||
"V", "%d", &vol, "Volume 0 .. 1.0",
|
||||
"a", "", &audioserver,"Name of server",
|
||||
NULL);
|
||||
if (help_only)
|
||||
return argc;
|
||||
|
||||
if ((aud = AuOpenServer(audioserver, 0, NULL, 0, NULL, NULL)) == (AuServer *) 0)
|
||||
perror(audioserver);
|
||||
|
||||
if (rate_set && rate_set != samp_rate)
|
||||
samp_rate = rate_set;
|
||||
|
||||
if (vol)
|
||||
volume = vol;
|
||||
|
||||
return argc;
|
||||
}
|
|
@ -1,3 +1,6 @@
|
|||
#ifndef __PHFEAT_H
|
||||
#define __PHFEAT_H
|
||||
|
||||
#define unr 0x00000000
|
||||
#define rnd 0x00000001
|
||||
#define low 0x00000002
|
||||
|
@ -31,3 +34,5 @@
|
|||
#define gld 0x20000000
|
||||
#define lbv 0x40000000
|
||||
#define pal 0x80000000
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
#ifndef __PHONES_H
|
||||
#define __PHONES_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define PHONE(nm,st,br,am,ex) nm
|
||||
enum phone_e { SIL,
|
||||
#include "phones.def"
|
||||
|
@ -6,3 +13,9 @@ END };
|
|||
extern char *ph_name[];
|
||||
extern char *ph_br[];
|
||||
extern char *ph_am[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
Once upon a time there were three bears, they had
|
||||
problems with nasty nasal noises until they took to drinking herbal tea.
|
||||
Simulated singing is not a sin.
|
||||
A bird in the hand is worth two in the bush.
|
||||
Hello Medi.
|
||||
Help!
|
||||
Hello Ginger!
|
||||
What do you want for supper Dudley?
|
||||
I am sorry I cannot do that Dave.
|
||||
01454 619107 This is a computer, please leave a message after the tone.
|
|
@ -1,111 +0,0 @@
|
|||
COMMENT("We are using COMMENT() so this file can be perl or C");
|
||||
|
||||
COMMENT("Silences");
|
||||
enter(".","END",NULL); COMMENT("This is 1st non-aware upper layer can inject");
|
||||
enter(" ","Q",NULL); COMMENT("This is 1st non-aware upper layer can inject");
|
||||
enter("_","Q",NULL); COMMENT("'mbrola' compatibility");
|
||||
enter("#","Q",NULL); COMMENT("'mbrola' compatibility");
|
||||
|
||||
COMMENT("Affricates (compounds) - put before singles to aid lookup");
|
||||
enter("tS","T","CH",NULL);
|
||||
enter("dZ","D","DY","DZ","ZH","ZH",NULL);
|
||||
|
||||
COMMENT("Plosives");
|
||||
enter("p","P","PY","PZ",NULL);
|
||||
enter("b","B","BY","BZ",NULL);
|
||||
enter("t","T","TY","TZ",NULL);
|
||||
enter("d","D","DY","DZ",NULL);
|
||||
enter("k","K","KY","KZ",NULL);
|
||||
enter("g","G","GY","GZ",NULL);
|
||||
enter("?","QQ",NULL); COMMENT("stop-ness - not quite glottal stop");
|
||||
|
||||
COMMENT("Nasals");
|
||||
enter("m","M",NULL);
|
||||
enter("n","N",NULL);
|
||||
enter("N","NG",NULL);
|
||||
|
||||
COMMENT("Trills and flaps");
|
||||
enter("4","DT",NULL);
|
||||
enter("rr","R","QQ","R",NULL);
|
||||
enter("R","RX",NULL);
|
||||
enter("`","RX",NULL); COMMENT("rhoticity diacritic - fallback");
|
||||
|
||||
COMMENT("Fricatives");
|
||||
enter("f","F",NULL);
|
||||
enter("v","V",NULL);
|
||||
enter("T","TH",NULL);
|
||||
enter("D","DH",NULL);
|
||||
enter("s","S",NULL);
|
||||
enter("z","Z",NULL);
|
||||
enter("S","SH",NULL);
|
||||
enter("Z","ZH",NULL);
|
||||
enter("x","X",NULL);
|
||||
enter("h","H",NULL);
|
||||
|
||||
COMMENT("Latterals");
|
||||
enter("l","L",NULL);
|
||||
enter("K","HL",NULL);
|
||||
enter("5","LL",NULL);
|
||||
|
||||
COMMENT("Approximants");
|
||||
enter("w","W",NULL);
|
||||
enter("j","Y",NULL);
|
||||
enter("r","R",NULL);
|
||||
|
||||
COMMENT("Dipthongs");
|
||||
enter("eI","AI","I",NULL);
|
||||
enter("aI","IE","I",NULL);
|
||||
enter("OI","OI","I",NULL);
|
||||
enter("aU","AI","OV",NULL);
|
||||
enter("@U","OA","OV",NULL);
|
||||
enter("I@","IA","IB",NULL);
|
||||
enter("e@","AIR","IB",NULL);
|
||||
enter("U@","OOR","IB",NULL);
|
||||
enter("O@","OI","IB",NULL);
|
||||
enter("oU","o","OV",NULL);
|
||||
|
||||
COMMENT("close vowels");
|
||||
enter("i","EE",NULL);
|
||||
enter("y","YY",NULL);
|
||||
enter("1","EY",NULL);
|
||||
enter("}","JU",NULL);
|
||||
enter("M","UW",NULL);
|
||||
enter("u","UU",NULL);
|
||||
|
||||
COMMENT("lax vowels");
|
||||
enter("I","I",NULL);
|
||||
enter("Y","IU",NULL);
|
||||
enter("U","OO",NULL);
|
||||
|
||||
COMMENT("close-mid vowels");
|
||||
enter("e","e",NULL);
|
||||
enter("e~","eN",NULL);
|
||||
enter("2","EU",NULL);
|
||||
enter("@\\","Ur",NULL);
|
||||
enter("8","UR",NULL);
|
||||
enter("7","UE",NULL);
|
||||
enter("o","o",NULL);
|
||||
enter("o~","oN",NULL);
|
||||
|
||||
COMMENT("schwa");
|
||||
enter("@","A",NULL);
|
||||
|
||||
COMMENT("open-mid vowels");
|
||||
enter("E","EH",NULL);
|
||||
enter("9","oe",NULL);
|
||||
enter("9~","oeN",NULL);
|
||||
enter("3","ER",NULL);
|
||||
enter("3\\","Er",NULL);
|
||||
enter("V","U",NULL);
|
||||
enter("O","AW",NULL);
|
||||
|
||||
enter("{","AA",NULL);
|
||||
enter("6","AA",NULL);
|
||||
|
||||
COMMENT("open vowels");
|
||||
enter("a", "a",NULL);
|
||||
enter("a~", "aN",NULL);
|
||||
enter("&", "OE",NULL);
|
||||
enter("A","AR",NULL);
|
||||
enter("Q","O",NULL);
|
||||
|
|
@ -1,6 +1,18 @@
|
|||
/* $Id: phtoelm.h,v 1.1 2006-06-11 07:13:26 urchlay Exp $
|
||||
/* $Id: phtoelm.h,v 1.2 2006-06-11 21:49:09 stephena Exp $
|
||||
*/
|
||||
#ifndef __PHTOELM_H
|
||||
#define __PHTOELM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct rsynth_s;
|
||||
extern unsigned phone_to_elm (char *s, int n, darray_ptr elm, darray_ptr f0);
|
||||
extern void say_pho(struct rsynth_s *rsynth, const char *path, int dodur,char *phoneset);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1 +1,10 @@
|
|||
#ifndef __PLOTPARM_H
|
||||
#define __PLOTPARM_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern FILE *par_file;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,115 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use Rsynth::Elements;
|
||||
read_elements();
|
||||
|
||||
my @seq;
|
||||
sub NULL () { undef }
|
||||
|
||||
sub enter
|
||||
{
|
||||
my ($ph,@elem) = @_;
|
||||
push(@seq,[$ph,@elem]);
|
||||
}
|
||||
|
||||
sub COMMENT
|
||||
{
|
||||
my ($c) = @_;
|
||||
push(@seq,$c);
|
||||
}
|
||||
|
||||
do "phtoelm.def";
|
||||
die $@ if $@;
|
||||
|
||||
my @list = @eNames;
|
||||
while (@list)
|
||||
{
|
||||
my $e1 = shift(@list);
|
||||
foreach my $e2 (@list)
|
||||
{
|
||||
if (my $why = differ($e1,$e2))
|
||||
{
|
||||
#warn "$e1 differs from $e2 on $why\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
warn "$e1 seems to be same as $e2\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub differ
|
||||
{
|
||||
my ($e1,$e2) = @_;
|
||||
foreach my $k (qw(rk))
|
||||
{
|
||||
return $k if $elem{$e1}{$k} != $elem{$e2}{$k};
|
||||
}
|
||||
|
||||
my $f1 = join('|',grep { $_ } sort keys %{$elem{$e1}{features}});
|
||||
my $f2 = join('|',grep { $_ } sort keys %{$elem{$e2}{features}});
|
||||
|
||||
foreach my $p (@pNames)
|
||||
{
|
||||
for my $i (0..4)
|
||||
{
|
||||
if ($elem{$e1}{$p}[$i] != $elem{$e2}{$p}[$i])
|
||||
{
|
||||
if ($f1 eq $f2)
|
||||
{
|
||||
warn "$e1 and $e2 differ on $p\[$i] but share $f1\n";
|
||||
}
|
||||
return "$p\[$i\]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $k (qw(rk du ud))
|
||||
{
|
||||
if ($elem{$e1}{$k} != $elem{$e2}{$k})
|
||||
{
|
||||
warn "$e1 and $e2 seem same except for $k\n";
|
||||
return $k;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( $f1 ne $f2 )
|
||||
{
|
||||
warn "$e1 and $e2 seem same except for $f1 vs $f2\n";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
my %seen;
|
||||
my @names;
|
||||
|
||||
foreach my $p (@seq)
|
||||
{
|
||||
next unless ref($p);
|
||||
my ($ph,@elem) = @$p;
|
||||
foreach my $e (@elem)
|
||||
{
|
||||
last unless defined $e;
|
||||
die "$ph needs $e" unless exists $elem{$e};
|
||||
unless ($seen{$e}++)
|
||||
{
|
||||
# warn "Add $e for $ph\n";
|
||||
push(@names,$e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach my $e (@eNames)
|
||||
{
|
||||
unless (exists $seen{$e})
|
||||
{
|
||||
warn "$e not used by any phone\n";
|
||||
push(@names,$e);
|
||||
}
|
||||
}
|
||||
|
||||
@eNames = @names;
|
||||
|
||||
|
||||
write_elements("Elements.new");
|
|
@ -20,14 +20,12 @@
|
|||
#ifndef RSYNTH_H
|
||||
#define RSYNTH_H
|
||||
|
||||
|
||||
#include "darray.h"
|
||||
#include "trie.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "darray.h"
|
||||
#include "trie.h"
|
||||
|
||||
typedef struct
|
||||
{float stdy; /* steady state value of paramter */
|
||||
|
@ -72,7 +70,7 @@ typedef struct Elm_s
|
|||
char rk; /* Rank of element (obsolete) */
|
||||
char du; /* Normal duration */
|
||||
char ud; /* Unstressed duration */
|
||||
unsigned char *unicode; /* UTF-8 for phonetic symbols */
|
||||
char *unicode; /* UTF-8 for phonetic symbols */
|
||||
char *sampa; /* SAMPA string for phonetic symbol */
|
||||
long feat; /* features of the phone */
|
||||
interp_t p[nEparm]; /* Table of parameter values */
|
||||
|
|
|
@ -1,132 +0,0 @@
|
|||
<html>
|
||||
<head><title>SAMPA and Unicode IPA</title>
|
||||
<style type="text/css">
|
||||
td.unicode {font-family:"arial unicode ms","lucida sans unicode","fixed"}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>SAMPA computer readable phonetic alphabet and Unicode IPA</h1>
|
||||
|
||||
<table align=center width=90%>
|
||||
|
||||
<tr><th colspan="6">(x-)sampa Mappings with documented Unicode</i></th></tr>
|
||||
<tr><th colspan="6">Vowels</th></tr>
|
||||
|
||||
<tr><th>SAMPA</th><th CLASS='unicode'>IPA</th><th>hex</th><th>dec</th><th>Phonetic Description</th><th> Example
</th></tr>
|
||||
<tr><td>i</td><td CLASS='unicode'>i</td><td>0069</td><td>105</td><td>close front unrounded</td><td>Eng. ee</td></tr>
|
||||
<tr><td>y</td><td CLASS='unicode'>y</td><td>0079</td><td>121</td><td>close front rounded</td><td>Eng. y</td></tr>
|
||||
<tr><td>1</td><td CLASS='unicode'>ɨ</td><td>0268</td><td>616</td><td>close central unrounded</td><td>Welsh. <i>lleyn</i> </td></tr>
|
||||
<tr><td>}</td><td CLASS='unicode'>ʉ</td><td>0289</td><td>649</td><td>close central rounded</td><td>Swedish <i>sju</i>
</td></tr>
|
||||
<tr><td>M</td><td CLASS='unicode'>ɯ</td><td>026F</td><td>623</td><td>close back umrounded (Card.)</td><td></td></tr>
|
||||
<tr><td>u</td><td CLASS='unicode'>u</td><td>0075</td><td>117</td><td>close back rounded</td><td>Eng. oo</td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>I</td><td CLASS='unicode'>ɪ</td><td>026A</td><td>618</td><td>lax close front unrounded</td><td>Eng. <i>kit</i>
</td></tr>
|
||||
<tr><td>Y</td><td CLASS='unicode'>ʏ</td><td>028F</td><td>655</td><td>lax [y]</td><td>Ger. <i>hübsch</i>
</td></tr>
|
||||
<tr><td>U</td><td CLASS='unicode'>ʊ</td><td>028A</td><td>650</td><td>lax close back rounded</td><td>Eng. <i>foot</i>
</td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>e</td><td CLASS='unicode'>e</td><td>0065</td><td>101</td><td>close-mid front unrounded</td><td></td></tr>
|
||||
<tr><td>2</td><td CLASS='unicode'>ø</td><td>00F8</td><td>248</td><td>close-mid front rounded</td><td>Fr. <i>deux</i> </td></tr>
|
||||
<tr><td>@\</td><td CLASS='unicode'>ɘ</td><td>0258</td><td>600</td><td>close-mid central unrounded</td><td></td></tr>
|
||||
<tr><td>8</td><td CLASS='unicode'>ɵ</td><td>0275</td><td>629</td><td>close-mid central rounded</td><td></td></tr>
|
||||
<tr><td>7</td><td CLASS='unicode'>ɤ</td><td>0264</td><td>612</td><td>close-mid back unrounded (Card.)</td><td></td></tr>
|
||||
<tr><td>o</td><td CLASS='unicode'>o</td><td>006f</td><td>111</td><td>close-mid back rounded</td><td></td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>@</td><td CLASS='unicode'>ə</td><td>0259</td><td>601</td><td>schwa</td><td>Eng. <i>banana</i> </td></tr>
|
||||
<tr><td>@`</td><td CLASS='unicode'>ɚ</td><td>025A</td><td>602</td><td>rhotacized schwa</td><td></td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>E</td><td CLASS='unicode'>ɛ</td><td>025B</td><td>603</td><td>open-mid front unrounded (Card.3)</td><td>Fr. <i>même</i> </td></tr>
|
||||
<tr><td>9</td><td CLASS='unicode'>œ</td><td>0153</td><td>339</td><td>open-mid front rounded</td><td>Fr. <i>neuf</i> </td></tr>
|
||||
<tr><td>3</td><td CLASS='unicode'>ɜ</td><td>025C</td><td>604</td><td>long mid central</td><td>Eng. <i>n<b>ur</b>se</i>
</td></tr>
|
||||
<tr><td>3`</td><td CLASS='unicode'>ɝ</td><td>025D</td><td>605</td><td>rhotacized open-mid central</td><td>Amer. <i>b<b>ir</b>d</i></td></tr>
|
||||
<tr><td>3\</td><td CLASS='unicode'>ɞ</td><td>025E</td><td>606</td><td>open-mid central rounded</td><td></td></tr>
|
||||
<tr><td>V</td><td CLASS='unicode'>ʌ</td><td>028C</td><td>652</td><td>open-mid back unrounded</td><td>Eng. <i>strut</i>
</td></tr>
|
||||
<tr><td>O</td><td CLASS='unicode'>ɔ</td><td>0254</td><td>596</td><td>open-mid back rounded</td><td>Eng. <i>thought</i> </td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>{</td><td CLASS='unicode'>æ</td><td>00E6</td><td>230</td><td>near-open front unrounded</td><td>Eng. <i>trap</i>
</td></tr>
|
||||
<tr><td>6</td><td CLASS='unicode'>ɐ</td><td>0250</td><td>592</td><td>open schwa</td><td>Ger. <i>besser</i> </td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>a</td><td CLASS='unicode'>a</td><td>0061</td><td>97</td><td>open front unrounded</td><td>Eng. a</td></tr>
|
||||
<tr><td>&</td><td CLASS='unicode'>ɶ</td><td>0276</td><td>630</td><td>open front rounded</td><td></td></tr>
|
||||
<tr><td>A</td><td CLASS='unicode'>ɑ</td><td>0251</td><td>593</td><td>open back unrounded (Card. 5)</td><td>Eng. <i>start</i>
</td></tr>
|
||||
<tr><td>Q</td><td CLASS='unicode'>ɒ</td><td>0252</td><td>594</td><td>open back rounded</td><td>Eng. <i>l<b>o</b>t</i> </td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
|
||||
|
||||
|
||||
<tr><th colspan="6">Consonants</th></tr>
|
||||
<tr><th>SAMPA</th><th CLASS='unicode'>IPA</th><th>hex</th><th>dec</th><th>Phonetic Description</th><th> Example
</th></tr>
|
||||
<tr><td>p</td><td CLASS='unicode'>p</td><td>0070</td><td>112</td><td>voiceless bilabial plosive</td><td>Eng. p</td></tr>
|
||||
<tr><td>b</td><td CLASS='unicode'>b</td><td>0062</td><td>98</td><td>voiced blibaial plosive</td><td>Eng. b</td></tr>
|
||||
<tr><td>t</td><td CLASS='unicode'>t</td><td>0074</td><td>116</td><td>voiceless alveolar plosive</td><td>Eng. t</td></tr>
|
||||
<tr><td>d</td><td CLASS='unicode'>d</td><td>0064</td><td>100</td><td>voiced alveolar plosive</td><td>Eng. d</td></tr>
|
||||
<tr><td>t`</td><td CLASS='unicode'>ʈ</td><td>0288</td><td>648</td><td>retroflex plosive, voiceless</td><td></td></tr>
|
||||
<tr><td>d`</td><td CLASS='unicode'>ɖ</td><td>0256</td><td>598</td><td>retroflex plosive, voiced</td><td></td></tr>
|
||||
<tr><td>c</td><td CLASS='unicode'>c</td><td>0063</td><td>99</td><td>voiceless palatal plosive</td><td></td></tr>
|
||||
<tr><td>k</td><td CLASS='unicode'>k</td><td>006b</td><td>107</td><td>voiceless velar plosive</td><td>Eng. k</td></tr>
|
||||
<tr><td>g</td><td CLASS='unicode'>g</td><td>0067</td><td>103</td><td>voiced velar plosive</td><td>Eng. g</td></tr>
|
||||
<tr><td>q</td><td CLASS='unicode'>q</td><td>0071</td><td>113</td><td>voiceless uvular plosive</td><td></td></tr>
|
||||
<tr><td>?</td><td CLASS='unicode'>ʔ</td><td>0294</td><td>660</td><td>glottal stop</td><td>Ger. <i>Verein</i>, also Danish <i>stød</i>
</td></tr>
|
||||
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>m</td><td CLASS='unicode'>m</td><td>006d</td><td>109</td><td>bilabial nasal</td><td>Eng. m</td></tr>
|
||||
<tr><td>F</td><td CLASS='unicode'>ɱ</td><td>0271</td><td>625</td><td>labiodental nasal</td><td></td></tr>
|
||||
<tr><td>n</td><td CLASS='unicode'>n</td><td>006e</td><td>110</td><td>alveolar nasal</td><td>Eng. n</td></tr>
|
||||
<tr><td>n`</td><td CLASS='unicode'>ɳ</td><td>0273</td><td>627</td><td>retroflex nasal</td><td></td></tr>
|
||||
<tr><td>J</td><td CLASS='unicode'>ɲ</td><td>0272</td><td>626</td><td>palatal nasal</td><td>Sp. <i>año</i> </td></tr>
|
||||
<tr><td>N</td><td CLASS='unicode'>ŋ</td><td>014B</td><td>331</td><td>velar nasal</td><td>Eng. <i>thing</i> </td></tr>
|
||||
<tr><td>N\</td><td CLASS='unicode'>ɴ</td><td>0274</td><td>628</td><td>uvular nasal</td><td></td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>r</td><td CLASS='unicode'>r</td><td>0072</td><td>114</td><td>alveolar trill</td><td>Eng. r</td></tr>
|
||||
<tr><td>R\</td><td CLASS='unicode'>ʀ</td><td>0280</td><td>640</td><td>uvular trill</td><td></td></tr>
|
||||
<tr><td>4</td><td CLASS='unicode'>ɾ</td><td>027E</td><td>638</td><td>alveolar tap</td><td>Amer. <i>bu<b>tt</b>er</i>
</td></tr>
|
||||
<tr><td>r`</td><td CLASS='unicode'>ɽ</td><td>027D</td><td>637</td><td>retroflex flap</td><td></td></tr>
|
||||
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>p\</td><td CLASS='unicode'>ɸ</td><td>0278</td><td>632</td><td>bilabial fricative, voiceless</td><td></td></tr>
|
||||
<tr><td>B</td><td CLASS='unicode'>β</td><td>03B2</td><td>946</td><td>voiced bilabial fricative</td><td>Sp. <i>cabo</i>
</td></tr>
|
||||
<tr><td>f</td><td CLASS='unicode'>f</td><td>0066</td><td>102</td><td>voiceless labiodental fricative</td><td>Eng. f</td></tr>
|
||||
<tr><td>v</td><td CLASS='unicode'>v</td><td>0076</td><td>118</td><td>voiced labiodental fricative</td><td>Eng. v</td></tr>
|
||||
<tr><td>T</td><td CLASS='unicode'>θ</td><td>03B8</td><td>952</td><td>voiceless dental fricative</td><td>Eng. <i>thin</i>
</td></tr>
|
||||
<tr><td>D</td><td CLASS='unicode'>ð</td><td>00F0</td><td>240</td><td>voiced dental fricative</td><td>Eng. <i>then</i>
</td></tr>
|
||||
<tr><td>s</td><td CLASS='unicode'>s</td><td>0073</td><td>115</td><td>voiceless alveolar fricative</td><td>Eng. s</td></tr>
|
||||
<tr><td>z</td><td CLASS='unicode'>z</td><td>007a</td><td>122</td><td>voiced alveolar fricative</td><td>Eng. z</td></tr>
|
||||
<tr><td>S</td><td CLASS='unicode'>ʃ</td><td>0283</td><td>643</td><td>voiceless palatoalveolar fricative</td><td>Eng. <i>ship</i>
</td></tr>
|
||||
<tr><td>Z</td><td CLASS='unicode'>ʒ</td><td>0292</td><td>658</td><td>vd. palatoalveolar fric.</td><td>Eng. <i>measure</i>
</td></tr>
|
||||
<tr><td>s`</td><td CLASS='unicode'>ʂ</td><td>0282</td><td>642</td><td>retroflex fricative, voiceless</td><td></td></tr>
|
||||
<tr><td>z`</td><td CLASS='unicode'>ʐ</td><td>0290</td><td>656</td><td>retroflex fricative, voiced</td><td></td></tr>
|
||||
<tr><td>C</td><td CLASS='unicode'>ç</td><td>00E7</td><td>231</td><td>voiceless palatal fricative</td><td>Ger. <i>ich</i>
</td></tr>
|
||||
<tr><td>j\</td><td CLASS='unicode'>ʝ</td><td>029D</td><td>669</td><td>palatal fricative, voiced</td><td></td></tr>
|
||||
<tr><td>x</td><td CLASS='unicode'>x</td><td>0078</td><td>120</td><td>voiceless velar fricative</td><td>Scot. <i>lo<b>ch</b></i> </td></tr>
|
||||
<tr><td>G</td><td CLASS='unicode'>ɣ</td><td>0263</td><td>611</td><td>voiced velar fricative</td><td>Sp. <i>fuego</i>
</td></tr>
|
||||
<tr><td>X</td><td CLASS='unicode'>χ</td><td>03C7</td><td>967</td><td>uvular fricative, voiceless</td><td></td></tr>
|
||||
<tr><td>R</td><td CLASS='unicode'>ʁ</td><td>0281</td><td>641</td><td>vd. uvular fric. or trill</td><td>Fr. <i>roi</i>
</td></tr>
|
||||
<tr><td>X\</td><td CLASS='unicode'>ħ</td><td>0127</td><td>295</td><td>pharyngeal fricative, voiceless</td><td></td></tr>
|
||||
<tr><td>?\</td><td CLASS='unicode'>ʕ</td><td>0295</td><td>661</td><td>pharyngeal fricative, voiced</td><td></td></tr>
|
||||
<tr><td>h</td><td CLASS='unicode'>h</td><td>0068</td><td>104</td><td>voiceless glotal fricative</td><td>Eng. h</td></tr>
|
||||
<tr><td>h\</td><td CLASS='unicode'>ɦ</td><td>0266</td><td>614</td><td>glottal fricative, voiced</td><td></td></tr>
|
||||
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>P</td><td CLASS='unicode'>ʋ</td><td>028B</td><td>651</td><td>labiodental approximant</td><td></td></tr>
|
||||
<tr><td>j</td><td CLASS='unicode'>j</td><td>006a</td><td>106</td><td>palatal approximant</td><td>Eng. j</td></tr>
|
||||
<tr><td>w</td><td CLASS='unicode'>w</td><td>0077</td><td>119</td><td>voiced labial-velar approximant</td><td>Eng. w</td></tr>
|
||||
<tr><td>W</td><td CLASS='unicode'>ʍ</td><td>028D</td><td>653</td><td>voiceless labial-velar fricative</td><td>Scot. wh</td></tr>
|
||||
<tr><td>H</td><td CLASS='unicode'>ɥ</td><td>0265</td><td>613</td><td>labial-palatal semivowel</td><td>Fr. <i>huit</i>
</td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
<tr><td>l</td><td CLASS='unicode'>l</td><td>006c</td><td>108</td><td>alvelolar lateral approximant</td><td>Eng. l</td></tr>
|
||||
<tr><td>5</td><td CLASS='unicode'>ɫ</td><td>026B</td><td>619</td><td>velarized l</td><td><i>ba<b>ll</b></i></td></tr>
|
||||
<tr><td>K</td><td CLASS='unicode'>ɬ</td><td>026C</td><td>620</td><td>vl alveolar lateral fricative</td><td>Welsh <i>ll</i></td></tr>
|
||||
<tr><td>L</td><td CLASS='unicode'>ʎ</td><td>028E</td><td>654</td><td>palatal lateral</td><td>It. <i>famiglia</i> </td></tr>
|
||||
<tr><th colspan="6"><hr></th></tr>
|
||||
|
||||
<tr><th colspan="6">Diacritics</th></tr>
|
||||
<tr><td>"</td><td CLASS='unicode'>ˈ</td><td>02C8</td><td>712</td><td>primary stress</td><td></td></tr>
|
||||
<tr><td>%</td><td CLASS='unicode'>ˌ</td><td>02CC</td><td>716</td><td>secondary stress</td><td></td></tr>
|
||||
<tr><td>:</td><td CLASS='unicode'>ː</td><td>02D0</td><td>720</td><td>length mark</td><td></td></tr>
|
||||
<tr><td>`</td><td CLASS='unicode'>ʴ</td><td>02B4</td><td>692</td><td>rhotacized</td><td></td></tr>
|
||||
<tr><td>Q~</td><td CLASS='unicode'>ɒ̃</td><td>0303</td><td>771</td><td>nasalization</td><td>Fr. <i>b<b>o</b>n</i> </td></tr>
|
||||
<tr><td>n=</td><td CLASS='unicode'>n̩</td><td>0329</td><td>809</td><td>syllabic consonant</td><td>Eng. <i>garden</i>
</td></tr>
|
||||
<tr><td> </td><td CLASS='unicode'> </td><td>0020</td><td>32</td><td>pause</td><td></td></tr>
|
||||
<tr><td>.</td><td CLASS='unicode'>.</td><td>002E</td><td>46</td><td>End of sentence</td><td></td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
|
@ -1,13 +0,0 @@
|
|||
bead sing bid thin .
|
||||
bed then bad shed .
|
||||
bard beige cod etch .
|
||||
cord edge good food bud .
|
||||
bird about moon man .
|
||||
gnat fat vat .
|
||||
when wet .
|
||||
far pick tin tone .
|
||||
gill kill Lily .
|
||||
yet gore round rabbit .
|
||||
lateral single zoo .
|
||||
hello day go eye cow .
|
||||
boy beer bare tour.
|
|
@ -19,8 +19,17 @@
|
|||
*/
|
||||
#include "config.h"
|
||||
/* jms: deutsch */
|
||||
/* $Id: say.c,v 1.1 2006-06-11 07:13:27 urchlay Exp $
|
||||
/* $Id: say.c,v 1.2 2006-06-11 21:49:09 stephena Exp $
|
||||
$Log: not supported by cvs2svn $
|
||||
Revision 1.1 2006/06/11 07:13:27 urchlay
|
||||
|
||||
Forgive the gigantic commit; I'm importing "rsynth". It's not really such
|
||||
a big library, and it's not commonly installed anywhere, and it's GPL.
|
||||
|
||||
Actually, a good chunk of rsynth can be removed (all the stuff related
|
||||
to perl modules and text-to-speech, which we won't need for Stella). I'll
|
||||
prune it when I figure out exactly what I can keep...
|
||||
|
||||
* Revision 1.13 1994/11/08 13:30:50 a904209
|
||||
* 2.0 release
|
||||
*
|
||||
|
@ -58,7 +67,11 @@
|
|||
* Add IDs and merge Jon's klatt sources - incomplete
|
||||
*
|
||||
*/
|
||||
char *say_id = "$Id: say.c,v 1.1 2006-06-11 07:13:27 urchlay Exp $";
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
char *say_id = "$Id: say.c,v 1.2 2006-06-11 21:49:09 stephena Exp $";
|
||||
extern char *Revision;
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
@ -83,7 +96,6 @@ extern char *Revision;
|
|||
#include "deutsch.h"
|
||||
#include "say.h"
|
||||
|
||||
|
||||
unsigned
|
||||
spell_out(char *word, int n, darray_ptr phone)
|
||||
{
|
||||
|
@ -348,3 +360,6 @@ say_file(rsynth_t * rsynth, FILE * f)
|
|||
darray_free(&line);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
#!/bin/sh
|
||||
date +' %H %M %p %A %d %B %Y' | say
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,251 +0,0 @@
|
|||
/*
|
||||
Copyright (c) 1994,2001-2004 Nick Ing-Simmons. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
extern char *Revision;
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include "useconfig.h"
|
||||
#include <math.h>
|
||||
#ifdef OS2
|
||||
#include <signal.h>
|
||||
#include <setjmp.h>
|
||||
#include <float.h>
|
||||
#endif /* OS2 */
|
||||
#include "darray.h"
|
||||
#include "rsynth.h"
|
||||
#include "hplay.h"
|
||||
#include "dict.h"
|
||||
#include "lang.h"
|
||||
#include "text.h"
|
||||
#include "getargs.h"
|
||||
#include "phones.h"
|
||||
#include "aufile.h"
|
||||
#include "charset.h" /* national differences ,jms */
|
||||
#include "english.h"
|
||||
#include "deutsch.h"
|
||||
#include "say.h"
|
||||
|
||||
char *program = "say";
|
||||
|
||||
int verbose = 0;
|
||||
|
||||
#if 1
|
||||
lang_t *lang = &English;
|
||||
#else
|
||||
lang_t *lang = &Deutsch;
|
||||
#endif
|
||||
|
||||
long clip_max;
|
||||
float peak;
|
||||
|
||||
static short
|
||||
clip(long *clip_max, float input, float *peak)
|
||||
{
|
||||
long temp = (long) input;
|
||||
float isq = input * input;
|
||||
#ifdef PEAK
|
||||
if (isq > *peak)
|
||||
*peak = isq;
|
||||
#else
|
||||
*peak += isq;
|
||||
#endif
|
||||
if (-temp > *clip_max)
|
||||
*clip_max = -temp;
|
||||
if (temp > *clip_max)
|
||||
*clip_max = temp;
|
||||
if (temp < -32767) {
|
||||
temp = -32767;
|
||||
}
|
||||
else if (temp > 32767) {
|
||||
temp = 32767;
|
||||
}
|
||||
return (temp);
|
||||
}
|
||||
|
||||
static void *
|
||||
save_sample(void *user_data, float sample, unsigned nsamp,
|
||||
rsynth_t * rsynth)
|
||||
{
|
||||
darray_t *buf = (darray_t *) user_data;
|
||||
darray_short(buf, clip(&clip_max, sample, &peak)); /* Convert back to integer */
|
||||
return (void *) buf;
|
||||
}
|
||||
|
||||
static void *
|
||||
flush_samples(void *user_data, unsigned nsamp, rsynth_t * rsynth)
|
||||
{
|
||||
darray_t *buf = (darray_t *) user_data;
|
||||
if (buf->items) {
|
||||
short *samp = (short *) darray_find(buf, 0);
|
||||
audio_play(buf->items, samp);
|
||||
if (file_write)
|
||||
(*file_write) (buf->items, samp);
|
||||
buf->items = 0;
|
||||
}
|
||||
return (void *) buf;
|
||||
}
|
||||
|
||||
static char *
|
||||
concat_args(int argc, char **argv)
|
||||
{
|
||||
int len = 0;
|
||||
int i;
|
||||
char *buf;
|
||||
for (i = 1; i < argc; i++)
|
||||
len += strlen(argv[i]) + 1;
|
||||
buf = (char *) malloc(len);
|
||||
if (buf) {
|
||||
char *d = buf;
|
||||
for (i = 1; i < argc;) {
|
||||
char *s = argv[i++];
|
||||
while (*s)
|
||||
*d++ = *s++;
|
||||
if (i < argc)
|
||||
*d++ = ' ';
|
||||
else
|
||||
*d = '\0';
|
||||
}
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
char *file_name = NULL;
|
||||
char *voice_file = NULL;
|
||||
char *par_name = NULL;
|
||||
char *input_phones = "sampa";
|
||||
double mSec_per_frame = 10;
|
||||
double F0Hz = 133.0;
|
||||
double speed = 1.0;
|
||||
double frac = 0.5;
|
||||
long gain = 57;
|
||||
int monotone = 0;
|
||||
int etrace = 0;
|
||||
int f0trace = 0;
|
||||
|
||||
int dodur = 1;
|
||||
#ifndef OS2
|
||||
program = argv[0];
|
||||
#else /* OS2 */
|
||||
|
||||
_control87(EM_INVALID | EM_DENORMAL | EM_ZERODIVIDE | EM_OVERFLOW |
|
||||
EM_UNDERFLOW | EM_INEXACT, MCW_EM);
|
||||
|
||||
_ctype = ctable + 1; /* jms: proper character handling for toupper, tolower... */
|
||||
|
||||
/* if (NULL == setlocale(LC_ALL, "GERM") ) */
|
||||
/* if (NULL == setlocale(LC_ALL, "DE_DE") ) */
|
||||
/* if (NULL == setlocale(LC_ALL, "") ) */
|
||||
/*printf("setlocale failed.\n") */ ;
|
||||
/* jms */
|
||||
|
||||
#endif /* OS2 */
|
||||
|
||||
init_locale();
|
||||
|
||||
argc = getargs("Synth", argc, argv,
|
||||
"d", "", &dict_path, "Which dictionary [b|a|g]",
|
||||
"v", NULL, &verbose, "Verbose, show phonetic form",
|
||||
"I", "", &input_phones, "Phoneset of input (for festival)",
|
||||
"L", "", &voice_file, "Log file of voice data",
|
||||
"D", NULL, &dodur, "Honour durations in .pho file",
|
||||
"m", "%lg", &mSec_per_frame, "mSec per frame",
|
||||
"F", "%lg", &F0Hz, "F0 Frequency",
|
||||
"f", "", &file_name, "File to process",
|
||||
"p", "", &par_name, "Parameter file for plot",
|
||||
"S", "%lg", &speed, "Speed (1.0 is 'normal')",
|
||||
"K", "%lg", &frac, "Parameter filter 'fraction'",
|
||||
"M", NULL, &monotone, "Hold F0 fixed",
|
||||
"E", NULL, &etrace, "Trace element sequence",
|
||||
"G", "%ld", &gain, "Overall Gain",
|
||||
NULL);
|
||||
|
||||
/* audio_init sets the rate */
|
||||
argc = audio_init(argc, argv);
|
||||
/* so must come before file init which writes rate to header */
|
||||
argc = file_init(argc, argv);
|
||||
|
||||
|
||||
if (help_only) {
|
||||
fprintf(stderr, "Usage: %s [options as above] [words to say]\n",
|
||||
program);
|
||||
fprintf(stderr, "or %s [options as above] < file-to-say\n",
|
||||
program);
|
||||
fprintf(stderr, "(%s)\n", Revision);
|
||||
}
|
||||
else {
|
||||
darray_t samples;
|
||||
rsynth_t *rsynth;
|
||||
darray_init(&samples, sizeof(short), 2048); /* chg jms */
|
||||
if (dict_path && *dict_path)
|
||||
dict_init(dict_path);
|
||||
rsynth = rsynth_init(samp_rate, mSec_per_frame,
|
||||
rsynth_speaker(F0Hz, gain, Elements),
|
||||
save_sample, flush_samples, &samples);
|
||||
if (par_name) {
|
||||
rsynth->parm_file = fopen(par_name, "w");
|
||||
if (!rsynth->parm_file)
|
||||
perror(par_name);
|
||||
}
|
||||
rsynth->smooth = frac;
|
||||
rsynth->speed = speed;
|
||||
if (monotone)
|
||||
rsynth->flags |= RSYNTH_MONOTONE;
|
||||
if (etrace)
|
||||
rsynth->flags |= RSYNTH_ETRACE;
|
||||
if (verbose)
|
||||
rsynth->flags |= RSYNTH_VERBOSE;
|
||||
if (f0trace)
|
||||
rsynth->flags |= RSYNTH_F0TRACE;
|
||||
|
||||
if (!file_name && argc < 2) {
|
||||
say_file(rsynth, stdin);
|
||||
}
|
||||
else {
|
||||
if (file_name) {
|
||||
rsynth_pho(rsynth, file_name, dodur, input_phones);
|
||||
}
|
||||
if (argc > 1) {
|
||||
char *s = concat_args(argc, argv);
|
||||
if (s) {
|
||||
say_string(rsynth, s);
|
||||
free(s);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (file_term)
|
||||
(*file_term) ();
|
||||
audio_term();
|
||||
/* warn if we have clipped (or got close) converting to 16-bit */
|
||||
if (verbose || clip_max > 30000) {
|
||||
float v = clip_max * 2.5 / 32767;
|
||||
fprintf(stderr, "Clipng @ %lu %.4g %.3g %.4gW\n",
|
||||
clip_max, clip_max / 32767.0,
|
||||
20 * log10(clip_max / 32767.0), v * v / 8);
|
||||
|
||||
}
|
||||
if (have_dict)
|
||||
dict_term();
|
||||
rsynth_term(rsynth);
|
||||
darray_free(&samples);
|
||||
}
|
||||
return (0);
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use blib "../Encode-sampa";
|
||||
use blib "../Tkutf8";
|
||||
use Encode;
|
||||
use Encode::Sampa;
|
||||
use Tk;
|
||||
|
||||
my $fixed = '-misc-fixed-medium-r-normal--15-140-75-75-c-0-iso10646-1';
|
||||
my $face = (@ARGV) ? shift : ['arial unicode ms',14];
|
||||
|
||||
|
||||
my $enc = find_encoding("sampa");
|
||||
#print "$enc\n";
|
||||
|
||||
my $mw = MainWindow->new;
|
||||
my $t = $mw->Scrolled('Text',
|
||||
-font => $fixed)->pack;
|
||||
|
||||
sub PHONE
|
||||
{
|
||||
my ($e,$nm,$br,$am,$ex) = @_;
|
||||
|
||||
#print join(',',@_),"\n";
|
||||
warn "$e vs $nm" if $e ne $nm;
|
||||
my $ubr = $enc->decode($br);
|
||||
my $uam = $enc->decode($am);
|
||||
$uam =~ s/\x{259}`/\x{25a}/g;
|
||||
$uam =~ s/\x{25C}`/\x{25d}/g;
|
||||
$t->insert('end',"$nm\t$ubr\t$uam\t$ex\n");
|
||||
}
|
||||
|
||||
our @U = '@U';
|
||||
|
||||
{
|
||||
do "./phones.def";
|
||||
}
|
||||
|
||||
MainLoop;
|
|
@ -1 +0,0 @@
|
|||
I am a speech synthesizer, and my input is conventional english text.
|
|
@ -1,187 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
|
||||
use Tk;
|
||||
use Tk::Font;
|
||||
use Rsynth::Elements;
|
||||
|
||||
%vowels = (
|
||||
|
||||
'0Cardinal' => {
|
||||
'i' => [ 240, 2400 ],
|
||||
'e' => [ 390, 2300 ],
|
||||
'E' => [ 610, 1900 ],
|
||||
'a' => [ 850, 1610 ],
|
||||
'A' => [ 740, 940 ],
|
||||
'V' => [ 600, 1170 ],
|
||||
'7' => [ 460, 1310 ],
|
||||
'M' => [ 300, 1390 ],
|
||||
},
|
||||
|
||||
'1Rounded' => {
|
||||
'y' => [ 235, 2100 ],
|
||||
'2' => [ 370, 1900 ],
|
||||
'9' => [ 585, 1710 ],
|
||||
'&' => [ 820, 1530 ],
|
||||
'Q' => [ 700, 760 ],
|
||||
'O' => [ 500, 700 ],
|
||||
'o' => [ 360, 640 ],
|
||||
'u' => [ 250, 595 ],
|
||||
},
|
||||
|
||||
'rp camenc' => {
|
||||
'i' => [ 300, 2300 ], # seat head
|
||||
'I' => [ 360, 2100 ], # sit hid
|
||||
'e' => [ 570, 1970 ], # set head
|
||||
'{' => [ 750, 1750 ], # sat had
|
||||
'A' => [ 680, 1100 ], # cart hard
|
||||
'Q' => [ 600, 900 ], # cot hod
|
||||
'O' => [ 450, 740 ], # caught hoard
|
||||
'U' => [ 380, 950 ], # full hood
|
||||
'u' => [ 300, 940 ], # fool who
|
||||
'V' => [ 720, 1240 ], # cut hub
|
||||
'3' => [ 580, 1380 ], # curt herb
|
||||
},
|
||||
|
||||
'rp Gimson/Wells' => {
|
||||
'i' => [ 280, 2620, 3380 ], # seat head
|
||||
'I' => [ 360, 2220, 2960 ], # sit hid
|
||||
'e' => [ 600, 2060, 2840 ], # set head
|
||||
'{' => [ 800, 1760, 2500 ], # sat had
|
||||
'V' => [ 760, 1320, 2500 ], # cut hub
|
||||
'A' => [ 740, 1180, 2640 ], # cart hard
|
||||
'Q' => [ 560, 920, 2560 ], # cot hod
|
||||
'O' => [ 480, 760, 2620 ], # caught hoard
|
||||
'U' => [ 380, 940, 2300 ], # full hood
|
||||
'u' => [ 320, 920, 2200 ], # fool who
|
||||
'3' => [ 560, 1480, 2520 ], # curt herb
|
||||
},
|
||||
|
||||
'am Ladefoged' => {
|
||||
'i' => [ 280, 2250, 2890 ], # seat head
|
||||
'I' => [ 400, 1920, 2560 ], # sit hid
|
||||
'E' => [ 550, 1770, 2490 ], # curt herb
|
||||
'{' => [ 690, 1660, 2490 ], # sat had
|
||||
'A' => [ 710, 1100, 2540 ], # cart hard
|
||||
'O' => [ 590, 880, 2540 ], # caught hoard
|
||||
'U' => [ 450, 1030, 2380 ], # full hood
|
||||
'u' => [ 310, 870, 2250 ], # fool who
|
||||
},
|
||||
|
||||
|
||||
'rsynth' => {
|
||||
'@' => [490,1480,2500],
|
||||
'a' => [790,1330,2500],
|
||||
'A' => [790,990,2500],
|
||||
'Q' => [610,880,2500],
|
||||
'2' => [400,1960,2200],
|
||||
'3' => [580,1420,2500],
|
||||
'u' => [250,880,2200],
|
||||
'U' => [370,1000,2500],
|
||||
'e' => [640,2020,2500],
|
||||
'V' => [700,1360,2500],
|
||||
'y' => [250,2100,2700],
|
||||
'i' => [250,2320,3200],
|
||||
'I' => [400,2080,2560],
|
||||
'{' => [790,1780,2500],
|
||||
'O' => [490,820,2500],
|
||||
'o' => [370,700,2200],
|
||||
},
|
||||
);
|
||||
|
||||
=for jill
|
||||
|
||||
'jill' => {
|
||||
'i' => [253, 2692, 3806],
|
||||
'y' => [397, 2219, 2888],
|
||||
'M' => [416, 1478, 2911],
|
||||
'u' => [286, 618, 2274],
|
||||
'A' => [698, 980, 3082],
|
||||
'Q' => [651, 896, 3040],
|
||||
'a' => [1240, 1535, 2989],
|
||||
'&' => [740, 1371, 3006],
|
||||
'E' => [945, 1675, 2448],
|
||||
'e' => [395, 2698, 3052],
|
||||
'{' => [879, 1473, 3414],
|
||||
},
|
||||
|
||||
=for john
|
||||
|
||||
'john' => {
|
||||
'i' => [269, 2095, 3782],
|
||||
'y' => [228, 1826, 2188],
|
||||
'M' => [280, 1126, 2082],
|
||||
'u' => [220, 530, 2080],
|
||||
'A' => [524, 909, 2664],
|
||||
'Q' => [553, 875, 2572],
|
||||
'a' => [659, 1315, 2509], #[daIk
|
||||
'&' => [715, 1293, 1778],
|
||||
'E' => [727, 1671, 2314],
|
||||
'e' => [425, 2070, 2701],
|
||||
'{' => [961, 1703, 2395],
|
||||
},
|
||||
|
||||
=cut
|
||||
|
||||
read_elements();
|
||||
delete $vowels{'rsynth'};
|
||||
|
||||
foreach my $e (values %elem)
|
||||
{
|
||||
if ($e->{features}{vwl})
|
||||
{
|
||||
my $ch = $e->{unicode};
|
||||
utf8::decode($ch);
|
||||
$vowels{'rsynth'}{$ch} = [$e->{f1}[0],$e->{f2}[0]];
|
||||
}
|
||||
else
|
||||
{
|
||||
warn "Skip ".$e->{sampa}.' '.join('|',keys %{$e->{features}})."\n";
|
||||
}
|
||||
}
|
||||
|
||||
my $mw = MainWindow->new;
|
||||
$mw->menu;
|
||||
|
||||
my $IPA = $mw->Font(family => 'Gentium',
|
||||
point => 140, slant => 'r',
|
||||
weight => 'medium');
|
||||
|
||||
my $t = $mw->Text(-width => 15)->pack(-side => 'right');
|
||||
|
||||
my $c = $mw->Scrolled('Canvas')->pack(-expand => 1, -fill => 'both');
|
||||
|
||||
my @colours = qw(black #008080 green orange red blue #800080 brown);
|
||||
my $i = 0;
|
||||
|
||||
foreach $name (sort keys %vowels)
|
||||
{
|
||||
my $hash = $vowels{$name};
|
||||
my $colour = $colours[$i++];
|
||||
$t->tagConfigure($colour,-foreground => $colour);
|
||||
$t->insert('end',"$name\n",[$colour]);
|
||||
foreach $v (sort keys %$hash)
|
||||
{
|
||||
my ($f1,$f2) = @{$hash->{$v}};
|
||||
my $x = (3000-($f2-$f1))/6;
|
||||
my $y = ($f1)/3;
|
||||
# my $x = -log($f2-$f1)*100;
|
||||
# my $y = log($f1)*100;
|
||||
|
||||
$c->createText($x, $y,
|
||||
# -anchor => 'center', -justify => 'center',
|
||||
-font => $IPA,
|
||||
-fill => $colour, -text => $v);
|
||||
}
|
||||
}
|
||||
|
||||
print join(',',$c->bbox('all')),"\n";
|
||||
|
||||
my ($minx,$miny,$maxx,$maxy) = $c->bbox('all');
|
||||
$c->configure(-width => $maxx - $minx, -height => $maxy-$miny);
|
||||
|
||||
$c->configure(-scrollregion => [$c->bbox('all')]);
|
||||
|
||||
MainLoop;
|
||||
|
||||
|
||||
|
|
@ -1,82 +0,0 @@
|
|||
#!/usr/local/bin/perl -w
|
||||
use strict;
|
||||
use File::Temp qw(tempfile);
|
||||
my $file = shift;
|
||||
my $match = @ARGV ? shift : '^f';
|
||||
open(my $dat,$file) || die "Cannot open $file:$!";
|
||||
my @labels;
|
||||
my $sym;
|
||||
my $ymin = 75;
|
||||
my $ymax = 95;
|
||||
SCAN:
|
||||
while (<$dat>)
|
||||
{
|
||||
if (s/^\s*#\s*//)
|
||||
{
|
||||
s/\s+$//;
|
||||
my @lab = split(/\s+/,$_);
|
||||
push(@labels,[@lab]);
|
||||
# warn "Possible labels:@lab\n";
|
||||
$sym = $lab[0] if @lab == 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
# warn "Data:$_";
|
||||
s/^\s+//;
|
||||
s/\s+$//;
|
||||
my @data = split(/\s+/,$_);
|
||||
foreach my $lab (@labels)
|
||||
{
|
||||
if (@$lab == @data)
|
||||
{
|
||||
@labels = @$lab;
|
||||
last SCAN;
|
||||
}
|
||||
}
|
||||
die "$file:$.:No labels match @data\n";
|
||||
}
|
||||
}
|
||||
|
||||
my ($fh,$path) = tempfile();
|
||||
|
||||
my $lx = 0;
|
||||
my $x = 0;
|
||||
my $yp = $ymin;
|
||||
while (<$dat>)
|
||||
{
|
||||
if (/^\s*#/)
|
||||
{
|
||||
if (/^\s*#\s+(\S+)\s*$/ && $1 ne $sym)
|
||||
{
|
||||
my $xp = ($x+$lx)/2;
|
||||
printf $fh qq[set label "$sym" at %g,%g center rotate \n],$xp,$yp;
|
||||
$lx = $x;
|
||||
$sym = $1;
|
||||
$yp += 5;
|
||||
$yp = $ymin if $yp > $ymax;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$x++;
|
||||
}
|
||||
}
|
||||
|
||||
warn "Labels: @labels\n";
|
||||
|
||||
print $fh "set data style line\n";
|
||||
my $i = 1;
|
||||
my $sep = 'plot';
|
||||
while (@labels)
|
||||
{
|
||||
my $lab = shift(@labels);
|
||||
if ($lab =~ /$match/o)
|
||||
{
|
||||
print $fh qq[$sep "$file" using 0:$i title "$lab"];
|
||||
$sep = ",\\\n ";
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
print $fh "\n";
|
||||
close($fh);
|
||||
system('gnuplot',-title => "$file /$match/", '-persist',$path);
|
Loading…
Reference in New Issue