flite: openEuler init

This commit is contained in:
gnaygnil 2019-12-14 14:49:41 +08:00
parent 957bdb60a3
commit e9637954bf
11 changed files with 678 additions and 75 deletions

View File

@ -0,0 +1,50 @@
From a85193f122b7ec0d377e0a39ac58c64f12c51085 Mon Sep 17 00:00:00 2001
From: Rui Matos <tiagomatos@gmail.com>
Date: Mon, 6 Jan 2014 13:45:00 +0000
Subject: [PATCH] auserver.c: Only write audio data to a file in debug builds
This isn't useful in regular builds and is actually a security
concern.
---
src/audio/auserver.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/audio/auserver.c b/src/audio/auserver.c
index 29716d3..3e838d0 100644
--- a/src/audio/auserver.c
+++ b/src/audio/auserver.c
@@ -58,9 +58,11 @@ static int play_wave_from_socket(snd_header *header,int audiostream)
int q,i,n,r;
unsigned char bytes[CST_AUDIOBUFFSIZE];
short shorts[CST_AUDIOBUFFSIZE];
+#ifdef DEBUG
cst_file fff;
fff = cst_fopen("/tmp/awb.wav",CST_OPEN_WRITE|CST_OPEN_BINARY);
+#endif
if ((audio_device = audio_open(header->sample_rate,1,
(header->encoding == CST_SND_SHORT) ?
@@ -107,7 +109,9 @@ static int play_wave_from_socket(snd_header *header,int audiostream)
for (q=r; q > 0; q-=n)
{
n = audio_write(audio_device,shorts,q);
+#ifdef DEBUG
cst_fwrite(fff,shorts,2,q);
+#endif
if (n <= 0)
{
audio_close(audio_device);
@@ -116,7 +120,9 @@ static int play_wave_from_socket(snd_header *header,int audiostream)
}
}
audio_close(audio_device);
+#ifdef DEBUG
cst_fclose(fff);
+#endif
return CST_OK_FORMAT;
--
1.8.3.1

4
README-ALSA.txt Normal file
View File

@ -0,0 +1,4 @@
Native ALSA support for Flite 1.3 - patch created by
Lukas Loehrer <listaddr1@gmx.net>

View File

@ -1,36 +0,0 @@
# flite
#### Description
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
#### Software Architecture
Software architecture description
#### Installation
1. xxxx
2. xxxx
3. xxxx
#### Instructions
1. xxxx
2. xxxx
3. xxxx
#### Contribution
1. Fork the repository
2. Create Feat_xxx branch
3. Commit your code
4. Create Pull Request
#### Gitee Feature
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
4. The most valuable open source project [GVP](https://gitee.com/gvp)
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

View File

@ -1,39 +0,0 @@
# flite
#### 介绍
{**以下是码云平台说明,您可以替换此简介**
码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN。专为开发者提供稳定、高效、安全的云端软件开发协作平台
无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
#### 软件架构
软件架构说明
#### 安装教程
1. xxxx
2. xxxx
3. xxxx
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 码云特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

View File

@ -0,0 +1,20 @@
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Fri, 8 Jan 2016 18:26:03 +0300
Subject: [PATCH] Fixed texi2html ambiguity
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
diff --git a/doc/Makefile b/doc/Makefile
index 12a5720..8fb9a03 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -50,7 +50,8 @@ doc: flite.html flite.pdf
flite.html: flite.texi
@ if [ ! -d html ] ; \
then mkdir -p html ; fi
- (cd html; texi2html -number -split_chapter ../flite.texi)
+ (cd html; texi2html -number-sections -split_chapter ../flite.texi)
+ @mv html/flite/*.html html/
@ for i in html/*.html ; \
do \
sed 's/<BODY>/<BODY bgcolor="#ffffff">/' $$i >ttt.html; \

View File

@ -0,0 +1,333 @@
diff -uNr flite-1.3-release/configure.in flite-1.3-release-mod/configure.in
--- flite-1.3-release/configure.in 2005-08-13 13:43:21.000000000 +0200
+++ flite-1.3-release-mod/configure.in 2006-11-13 21:16:27.000000000 +0200
@@ -206,10 +206,10 @@
AC_CHECK_HEADER(sys/audioio.h,
[AUDIODRIVER="sun"
AUDIODEFS=-DCST_AUDIO_SUNOS])
-dnl AC_CHECK_HEADER(sys/asoundlib.h,
-dnl [AUDIODRIVER="alsa"
-dnl AUDIODEFS=-DCST_AUDIO_ALSA
-dnl AUDIOLIBS=-lasound])
+AC_CHECK_HEADER(alsa/asoundlib.h,
+ [AUDIODRIVER="alsa"
+ AUDIODEFS=-DCST_AUDIO_ALSA
+ AUDIOLIBS=-lasound])
AC_CHECK_HEADER(mmsystem.h,
[AUDIODRIVER="wince"
AUDIODEFS=-DCST_AUDIO_WINCE
diff -uNr flite-1.3-release/src/audio/au_alsa.c flite-1.3-release-mod/src/audio/au_alsa.c
--- flite-1.3-release/src/audio/au_alsa.c 1970-01-01 02:00:00.000000000 +0200
+++ flite-1.3-release-mod/src/audio/au_alsa.c 2006-11-13 21:16:54.000000000 +0200
@@ -0,0 +1,311 @@
+/*************************************************************************/
+/* */
+/* Language Technologies Institute */
+/* Carnegie Mellon University */
+/* Copyright (c) 2000 */
+/* 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. */
+/* */
+/* CARNEGIE MELLON UNIVERSITY 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 CARNEGIE MELLON UNIVERSITY 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. */
+/* */
+/*********************************************************************** */
+/* Author: Lukas Loehrer ( */
+/* Date: January 2005 */
+/*************************************************************************/
+/* */
+/* Native access to alsa audio devices on Linux */
+/* Tested with libasound version 1.0.10 */
+/*************************************************************************/
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <assert.h>
+#include <errno.h>
+
+#include "cst_string.h"
+#include "cst_wave.h"
+#include "cst_audio.h"
+
+#include <alsa/asoundlib.h>
+
+
+/*static char *pcm_dev_name = "hw:0,0"; */
+static char *pcm_dev_name ="default";
+
+static inline void print_pcm_state(snd_pcm_t *handle, char *msg)
+{
+ fprintf(stderr, "PCM state at %s = %s\n", msg,
+ snd_pcm_state_name(snd_pcm_state(handle)));
+}
+
+cst_audiodev *audio_open_alsa(int sps, int channels, cst_audiofmt fmt)
+{
+ cst_audiodev *ad;
+ unsigned int real_rate;
+ int err;
+
+ /* alsa specific stuff */
+ snd_pcm_t *pcm_handle;
+ snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;
+ snd_pcm_hw_params_t *hwparams;
+ snd_pcm_format_t format;
+ snd_pcm_access_t access = SND_PCM_ACCESS_RW_INTERLEAVED;
+
+ /* Allocate the snd_pcm_hw_params_t structure on the stack. */
+ snd_pcm_hw_params_alloca(&hwparams);
+
+ /* Open pcm device */
+ err = snd_pcm_open(&pcm_handle, pcm_dev_name, stream, 0);
+ if (err < 0)
+ {
+ cst_errmsg("audio_open_alsa: failed to open audio device %s. %s\n",
+ pcm_dev_name, snd_strerror(err));
+ return NULL;
+ }
+
+ /* Init hwparams with full configuration space */
+ err = snd_pcm_hw_params_any(pcm_handle, hwparams);
+ if (err < 0)
+ {
+ snd_pcm_close(pcm_handle);
+ cst_errmsg("audio_open_alsa: failed to get hardware parameters from audio device. %s\n", snd_strerror(err));
+ return NULL;
+ }
+
+ /* Set access mode */
+ err = snd_pcm_hw_params_set_access(pcm_handle, hwparams, access);
+ if (err < 0)
+ {
+ snd_pcm_close(pcm_handle);
+ cst_errmsg("audio_open_alsa: failed to set access mode. %s.\n", snd_strerror(err));
+ return NULL;
+ }
+
+ /* Determine matching alsa sample format */
+ /* This could be implemented in a more */
+ /* flexible way (byte order conversion). */
+ switch (fmt)
+ {
+ case CST_AUDIO_LINEAR16:
+ if (CST_LITTLE_ENDIAN)
+ format = SND_PCM_FORMAT_S16_LE;
+ else
+ format = SND_PCM_FORMAT_S16_BE;
+ break;
+ case CST_AUDIO_LINEAR8:
+ format = SND_PCM_FORMAT_U8;
+ break;
+ case CST_AUDIO_MULAW:
+ format = SND_PCM_FORMAT_MU_LAW;
+ break;
+ default:
+ snd_pcm_close(pcm_handle);
+ cst_errmsg("audio_open_alsa: failed to find suitable format.\n");
+ return NULL;
+ break;
+ }
+
+ /* Set samble format */
+ err = snd_pcm_hw_params_set_format(pcm_handle, hwparams, format);
+ if (err <0)
+ {
+ snd_pcm_close(pcm_handle);
+ cst_errmsg("audio_open_alsa: failed to set format. %s.\n", snd_strerror(err));
+ return NULL;
+ }
+
+ /* Set sample rate near the disired rate */
+ real_rate = sps;
+ err = snd_pcm_hw_params_set_rate_near(pcm_handle, hwparams, &real_rate, 0);
+ if (err < 0)
+ {
+ snd_pcm_close(pcm_handle);
+ cst_errmsg("audio_open_alsa: failed to set sample rate near %d. %s.\n", sps, snd_strerror(err));
+ return NULL;
+ }
+ /*FIXME: This is probably too strict */
+ assert(sps == real_rate);
+
+ /* Set number of channels */
+ assert(channels >0);
+ err = snd_pcm_hw_params_set_channels(pcm_handle, hwparams, channels);
+ if (err < 0)
+ {
+ snd_pcm_close(pcm_handle);
+ cst_errmsg("audio_open_alsa: failed to set number of channels to %d. %s.\n", channels, snd_strerror(err));
+ return NULL;
+ }
+
+ /* Commit hardware parameters */
+ err = snd_pcm_hw_params(pcm_handle, hwparams);
+ if (err < 0)
+ {
+ snd_pcm_close(pcm_handle);
+ cst_errmsg("audio_open_alsa: failed to set hw parameters. %s.\n", snd_strerror(err));
+ return NULL;
+ }
+
+ /* Make sure the device is ready to accept data */
+ assert(snd_pcm_state(pcm_handle) == SND_PCM_STATE_PREPARED);
+
+ /* Write hardware parameters to flite audio device data structure */
+ ad = cst_alloc(cst_audiodev, 1);
+ assert(ad != NULL);
+ ad->real_sps = ad->sps = sps;
+ ad->real_channels = ad->channels = channels;
+ ad->real_fmt = ad->fmt = fmt;
+ ad->platform_data = (void *) pcm_handle;
+
+ return ad;
+}
+
+int audio_close_alsa(cst_audiodev *ad)
+{
+ int result;
+ snd_pcm_t *pcm_handle;
+
+ if (ad == NULL)
+ return 0;
+
+ pcm_handle = (snd_pcm_t *) ad->platform_data;
+ result = snd_pcm_close(pcm_handle);
+ if (result < 0)
+ {
+ cst_errmsg("audio_close_alsa: Error: %s.\n", snd_strerror(result));
+ }
+ cst_free(ad);
+ return result;
+}
+
+/* Returns zero if recovery was successful. */
+static int recover_from_error(snd_pcm_t *pcm_handle, ssize_t res)
+{
+ if (res == -EPIPE) /* xrun */
+ {
+ res = snd_pcm_prepare(pcm_handle);
+ if (res < 0)
+ {
+ /* Failed to recover from xrun */
+ cst_errmsg("recover_from_write_error: failed to recover from xrun. %s\n.", snd_strerror(res));
+ return res;
+ }
+ }
+ else if (res == -ESTRPIPE) /* Suspend */
+ {
+ while ((res = snd_pcm_resume(pcm_handle)) == -EAGAIN)
+ {
+ snd_pcm_wait(pcm_handle, 1000);
+ }
+ if (res < 0)
+ {
+ res = snd_pcm_prepare(pcm_handle);
+ if (res <0)
+ {
+ /* Resume failed */
+ cst_errmsg("audio_recover_from_write_error: failed to resume after suspend. %s\n.", snd_strerror(res));
+ return res;
+ }
+ }
+ }
+ else if (res < 0)
+ {
+ /* Unknown failure */
+ cst_errmsg("audio_recover_from_write_error: %s.\n", snd_strerror(res));
+ return res;
+ }
+ return 0;
+}
+
+int audio_write_alsa(cst_audiodev *ad, void *samples, int num_bytes)
+{
+ size_t frame_size;
+ ssize_t num_frames, res;
+ snd_pcm_t *pcm_handle;
+ char *buf = (char *) samples;
+
+ /* Determine frame size in bytes */
+ frame_size = audio_bps(ad->real_fmt) * ad->real_channels;
+ /* Require that only complete frames are handed in */
+ assert((num_bytes % frame_size) == 0);
+ num_frames = num_bytes / frame_size;
+ pcm_handle = (snd_pcm_t *) ad->platform_data;
+
+ while (num_frames > 0)
+ {
+ res = snd_pcm_writei(pcm_handle, buf, num_frames);
+ if (res != num_frames)
+ {
+ if (res == -EAGAIN || (res > 0 && res < num_frames))
+ {
+ snd_pcm_wait(pcm_handle, 100);
+ }
+ else if (recover_from_error(pcm_handle, res) < 0)
+ {
+ return -1;
+ }
+ }
+
+ if (res >0)
+ {
+ num_frames -= res;
+ buf += res * frame_size;
+ }
+ }
+ return num_bytes;
+}
+
+int audio_flush_alsa(cst_audiodev *ad)
+{
+ int result;
+ result = snd_pcm_drain((snd_pcm_t *) ad->platform_data);
+ if (result < 0)
+ {
+ cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
+ }
+ /* Prepare device for more data */
+ result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
+if (result < 0)
+ {
+ cst_errmsg("audio_flush_alsa: Error: %s.\n", snd_strerror(result));
+ }
+ return result;
+}
+
+int audio_drain_alsa(cst_audiodev *ad)
+{
+ int result;
+ result = snd_pcm_drop((snd_pcm_t *) ad->platform_data);
+ if (result < 0)
+ {
+ cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
+ }
+/* Prepare device for more data */
+ result = snd_pcm_prepare((snd_pcm_t *) ad->platform_data);
+if (result < 0)
+ {
+ cst_errmsg("audio_drain_alsa: Error: %s.\n", snd_strerror(result));
+ }
+ return result;
+}

View File

@ -0,0 +1,30 @@
diff -uNr flite-1.3-release/doc/flite.texi flite-1.3-mod/doc/flite.texi
--- flite-1.3-release/doc/flite.texi 2005-08-14 21:50:02.000000000 +0200
+++ flite-1.3-mod/doc/flite.texi 2006-05-08 12:39:54.000000000 +0200
@@ -711,14 +711,14 @@
cst_voice *register_cmu_us_kal();
int main(int argc, char **argv)
-{
+@{
cst_voice *v;
if (argc != 2)
- {
+ @{
fprintf(stderr,"usage: flite_test FILE\n");
exit(-1);
- }
+ @}
flite_init();
@@ -726,7 +726,7 @@
flite_file_to_speech(argv[1],v,"play");
-}
+@}
@end example
Assuming the shell variable FLITEDIR is set to the flite directory
the following will compile the system (with appropriate changes for

View File

@ -0,0 +1,12 @@
diff -uNr flite-1.3-release/tools/Makefile flite-1.3-release-mod/tools/Makefile
--- flite-1.3-release/tools/Makefile 2005-01-01 19:24:16.000000000 +0200
+++ flite-1.3-release-mod/tools/Makefile 2011-03-13 23:53:12.365235072 +0200
@@ -64,7 +64,7 @@
$(BINDIR)/find_sts: find_sts_main.o $(FLITELIBS) $(flite_LIBS_deps)
echo $(ALL)
echo $(HOST_PLATFORM) $(TARGET_PLATFORM)
- $(CC) $(CFLAGS) -o $@ find_sts_main.o $(flite_LIBS_flags) $(LDFLAGS)
+ $(CC) $(CFLAGS) -o $@ find_sts_main.o $(flite_LIBS_flags) $(LDFLAGS) -lm
$(BINDIR)/flite_sort: flite_sort_main.o $(FLITELIBS) $(flite_LIBS_deps)
$(CC) $(CFLAGS) -o $@ flite_sort_main.o $(flite_LIBS_flags) $(LDFLAGS)
$(BINDIR)/regexcomp: regexcomp_main.o $(FLITELIBS) $(flite_LIBS_deps)

BIN
flite-1.3-release.tar.gz Normal file

Binary file not shown.

170
flite-1.3-sharedlibs.patch Normal file
View File

@ -0,0 +1,170 @@
diff -uNr flite-1.3-release/config/common_make_rules flite-1.3-release-mod/config/common_make_rules
--- flite-1.3-release/config/common_make_rules 2004-12-20 00:20:43.000000000 +0200
+++ flite-1.3-release-mod/config/common_make_rules 2006-11-12 12:17:25.000000000 +0200
@@ -59,27 +59,35 @@
endif
OBJDIR=$(BUILDDIR)/obj/$(DIRNAME)
BINDIR=$(BUILDDIR)/bin
+LIBDIR=$(BUILDDIR)/lib
ifeq ($(HOST_PLATFORM),$(TARGET_PLATFORM))
BINDIR=$(TOP)/bin
+LIBDIR=$(TOP)/lib
endif
-LIBDIR=$(BUILDDIR)/lib
BUILDDIRS=$(OBJDIR) $(BINDIR) $(LIBDIR)
-FLITELIBS = $(BUILDDIR)/lib/libflite.a
-LDFLAGS += -L$(BUILDDIR)/lib -lflite -lm $(AUDIOLIBS) $(OTHERLIBS)
+ifdef SHFLAGS
+FLITELIBS = $(LIBDIR)/libflite.so
+LDFLAGS += -L$(LIBDIR) -lflite $(OTHERLIBS)
+else
+FLITELIBS = $(LIBDIR)/libflite.a
+LDFLAGS += -L$(LIBDIR) -lflite -lm $(AUDIOLIBS) $(OTHERLIBS)
+endif
FULLOBJS = $(OBJS:%=$(OBJDIR)/%)
ifdef SHFLAGS
SOOBJS = $(OBJS:.o=.os)
-FULLSHOBJS = $(SOOBJS:%=$(OBJDIR)/%)
+FULLSOOBJS = $(SOOBJS:%=$(OBJDIR)/%)
ifdef LIBNAME
ALL += $(OBJDIR)/.build_so
endif
-endif
+else
ifdef LIBNAME
ALL += $(OBJDIR)/.build_lib
endif
+endif
+
# Only do some directories when you are not cross compiling
ifeq ($(HOST_PLATFORM),$(TARGET_PLATFORM))
OTHER_BUILD_DIRS = $(HOST_ONLY_DIRS)
@@ -117,14 +125,14 @@
@ touch $(OBJDIR)/.build_so
# Used in the lib/ directory and in building new voices
-$(OBJDIR)/%.so: %.shared.a
+%.so: %.shared.a
@ echo making $@
@ rm -rf shared_os && mkdir shared_os
- @ rm -f $@ $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
+ @ rm -f $@ $@.${PROJECT_VERSION} $@.${PROJECT_SHLIB_VERSION}
@ (cd shared_os && ar x ../$<)
- @ (cd shared_os && $(CC) -shared -Wl,-soname,$@.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os)
- @ ln -s $(LIBDIR)/$@.${PROJECT_VERSION} $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION}
- @ ln -s $(LIBDIR)/$@.${PROJECT_SHLIB_VERSION} $(LIBDIR)/$@
+ @ (cd shared_os && $(CC) -shared -Wl,-soname,$@.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os -L../ $($(@:%.so=%_LDLIBS)))
+ @ ln -s $@.${PROJECT_VERSION} $@.${PROJECT_SHLIB_VERSION}
+ @ ln -s $@.${PROJECT_SHLIB_VERSION} $@
@ rm -rf shared_os
$(OBJDIR)/.make_build_dirs:
diff -uNr flite-1.3-release/lib/Makefile flite-1.3-release-mod/lib/Makefile
--- flite-1.3-release/lib/Makefile 1970-01-01 02:00:00.000000000 +0200
+++ flite-1.3-release-mod/lib/Makefile 2006-11-12 12:17:40.000000000 +0200
@@ -0,0 +1,73 @@
+###########################################################################
+## ##
+## Language Technologies Institute ##
+## Carnegie Mellon University ##
+## Copyright (c) 1999 ##
+## 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. ##
+## ##
+## CARNEGIE MELLON UNIVERSITY 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 CARNEGIE MELLON UNIVERSITY 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. ##
+## ##
+###########################################################################
+## ##
+## FLITE libraries ##
+## ##
+###########################################################################
+TOP=..
+DIRNAME=lib
+BUILD_DIRS =
+ALL_DIRS=
+FILES = Makefile
+LIBNAMES = flite flite_cmulex flite_usenglish \
+ flite_cmu_us_kal flite_cmu_us_kal16 flite_cmu_time_awb
+
+STATICLIBS= $(LIBNAMES:%=lib%.a)
+SHAREDARLIBS= $(LIBNAMES:%=lib%.shared.a)
+#SHAREDLIBS = $(LIBNAMES:%=lib%.so)
+SHAREDLIBS = $(SHAREDARLIBS:%.shared.a=%.so)
+VERSIONSHAREDLIBS = $(SHAREDLIBS:%=%.${PROJECT_VERSION}) \
+ $(SHAREDLIBS:%=%.${PROJECT_SHLIB_VERSION})
+ALL_LIBS = $(SHAREDLIBS) $(VERSIONSHAREDLIBS)
+
+ALL = shared_libs
+
+LOCAL_CLEAN=*.a *.so *.so.${PROJECT_VERSION} *.so.${PROJECT_SHLIB_VERSION}
+
+include $(TOP)/config/common_make_rules
+
+ifdef SHFLAGS
+shared_libs: $(SHAREDLIBS)
+libflite_LDLIBS = -lm $(AUDIOLIBS)
+libflite_cmulex_LDLIBS = -lflite
+libflite_usenglish_LDLIBS = -lflite
+libflite_cmu_us_kal_LDLIBS = -lflite_cmulex -lflite_usenglish
+libflite_cmu_us_kal16_LDLIBS = -lflite_cmulex -lflite_usenglish
+libflite_cmu_time_awb_LDLIBS = -lflite -lflite_cmulex -lflite_usenglish
+else
+shared_libs: nothing
+endif
+
+install:
+ @ tar cvf - $(ALL_LIBS) | ( cd $(INSTALLLIBDIR) && tar xf -)
+
diff -uNr flite-1.3-release/main/Makefile flite-1.3-release-mod/main/Makefile
--- flite-1.3-release/main/Makefile 2005-08-08 00:38:42.000000000 +0200
+++ flite-1.3-release-mod/main/Makefile 2006-11-12 11:44:46.000000000 +0200
@@ -50,11 +50,11 @@
flite_LIBS = flite_$(FL_VOX) flite_$(FL_LANG) flite_$(FL_LEX)
flite_LIBS_flags = -L$(LIBDIR) $(flite_LIBS:%=-l%)
-flite_LIBS_deps = $(flite_LIBS:%=$(LIBDIR)/lib%.a)
+flite_LIBS_deps = $(flite_LIBS:%=$(LIBDIR)/lib%.so)
flite_time_LIBS = flite_cmu_time_awb flite_$(FL_LANG) flite_$(FL_LEX)
flite_time_LIBS_flags = -L$(LIBDIR) $(flite_time_LIBS:%=-l%)
-flite_time_LIBS_deps = $(flite_time_LIBS:%=$(LIBDIR)/lib%.a)
+flite_time_LIBS_deps = $(flite_time_LIBS:%=$(LIBDIR)/lib%.so)
include $(TOP)/config/common_make_rules
diff -uNr flite-1.3-release/Makefile flite-1.3-release-mod/Makefile
--- flite-1.3-release/Makefile 2005-11-01 15:40:45.000000000 +0200
+++ flite-1.3-release-mod/Makefile 2006-11-12 11:44:46.000000000 +0200
@@ -41,7 +41,7 @@
###########################################################################
TOP=.
DIRNAME=
-BUILD_DIRS = include src lang doc
+BUILD_DIRS = include src lang lib doc
ALL_DIRS=config $(BUILD_DIRS) testsuite sapi palm tools main
CONFIG=configure configure.in config.sub config.guess \
missing install-sh mkinstalldirs

59
flite.spec Normal file
View File

@ -0,0 +1,59 @@
Name: flite
Version: 1.3
Release: 33
Summary: A small, fast run time synthesis engine
License: MIT
URL: http://www.speech.cs.cmu.edu/flite/
Source0: http://www.speech.cs.cmu.edu/flite/packed/flite-%{version}/flite-%{version}-release.tar.gz
Source1: README-ALSA.txt
BuildRequires: texi2html autoconf automake libtool ed alsa-lib-devel
Patch0000: flite-1.3-sharedlibs.patch
Patch0001: flite-1.3-doc_texinfo.patch
Patch0002: flite-1.3-alsa_support.patch
Patch0003: flite-1.3-implicit_dso_linking.patch
Patch0004: 0001-auserver.c-Only-write-audio-data-to-a-file-in-debug-.patch
Patch0005: flite-0001-Fixed-texi2html-ambiguity.patch
%description
Flite was primarily developed to address one of the most common complaints
about the Festival Speech Synthesis System. Festival is large and slow, even
with the software bloat common amongst most products and that that bloat has
helped machines get faster, have more memory and large disks, still Festival
is criticized for its size.
%package devel
Summary: Development files for flite
Requires: flite = %{version}-%{release}
%description devel
Development files for Flite, a small, fast speech synthesis engine.
%prep
%autosetup -n flite-%{version}-release -p1
install -p %{SOURCE1} .
%build
autoreconf -vif
%configure --enable-shared --with-audio=alsa
make
cd doc
%make_build flite.html
%install
%make_install INSTALLBINDIR=%{buildroot}%{_bindir} INSTALLLIBDIR=%{buildroot}%{_libdir} INSTALLINCDIR=%{buildroot}%{_includedir}/flite
%post
/sbin/ldconfig
%postun
/sbin/ldconfig
%files
%doc COPYING ACKNOWLEDGEMENTS README doc/html README-ALSA.txt
%{_libdir}/*.so.*
%{_bindir}/*
%files devel
%{_libdir}/*.so
%{_includedir}/flite
%changelog
* Thu Dec 12 2019 Ling Yang <lingyang2@huawei.com> - 1.3-33
- Package init