操作系统:Ubuntu16.04LTS
最近公司的项目需要用到科大讯飞的离线语音合成,使用SDK时遇到了两个问题。
1.编译c文件
2.导入动态链接库 .so文件
接下来详细说明一下流程。
添加离线语音合成服务,并点亮图标
SDK下载下来是这样的
解压
2.导入动态链接库
打开 /etc/ld.so.conf
sudo gedit /etc/ld.so.conf
在 libs/x64 有libmsc.so 文件,将它的路径(不包含文件名)添加到 ld.so.conf
include /home/tuweifeng/Desktop/textToSpeech/libs/x64
接着刷新一下 ldconfig 缓存
sudo ldconfig -v
3.编译
进入目录samples/tts_offline_sample,有4个文件,如下
打开命令行敲入 sh 64bit_make.sh,执行结果如下
-
tuweifeng@tuweifeng-Vostro-
3668
:~/Desktop/textToSpeech/samples/tts_offline_sample$ sh
64bit_make.sh
-
gcc -c -g -Wall -I../../
include tts_offline_sample.c -o tts_offline_sample.o
-
tts_offline_sample.
c: In function ‘text_to_speech’:
-
tts_offline_sample.
c:
83
:
55:
warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]
-
ret = QTTSTextPut(sessionID, src_text, (unsigned int)strlen(src_text), NULL);
-
^
-
tts_offline_sample.
c:
83
:
55:
warning: incompatible implicit declaration of built-
in function ‘strlen’
-
tts_offline_sample.
c:
83
:
55:
note:
include ‘<string.h>’
or provide a declaration of ‘strlen’
-
gcc -g -Wall -I../../
include tts_offline_sample.o -o ../../bin/tts_offline_sample -L../../libs/x64 -lmsc -lrt -ldl -lpthread -lstdc++
-
tuweifeng@tuweifeng-Vostro-
3668
:~/Desktop/textToSpeech/samples/tts_offline_sample$
如果编译成功会在 samples/tts_offline_sample 和 bin 分别出现 tts_offline_sample.o 和 可执行文件tts_offline_sample。
samples/tts_offline_sample生成了 tts_offline_sample.o 文件
bin 生成了 tts_offline_sample 可执行文件
接着我们进入 bin 目录,双击 tts_offline_sample 或者在命令行敲入 ./tts_offline_sample 回车
-
tuweifeng@tuweifeng-Vostro-
3668
:~/Desktop/textToSpeech/bin$ ./tts_offline_sample
-
-
###########################################################################
-
## 语音合成(Text To Speech,TTS)技术能够自动将任意文字实时转换为连续的 ##
-
## 自然语音,是一种能够在任何时间、任何地点,向任何人提供语音信息服务的 ##
-
## 高效便捷手段,非常符合信息时代海量数据、动态更新和个性化查询的需求。 ##
-
###########################################################################
-
-
开始合成 ...
-
正在合成 ...
-
-
合成完毕
-
按任意键退出 ...
此时我们再看 bin 目录,我们合成了一个示例音频。
虽然免费的离线语音合成的声音很粗糙,但已经能够满足我们的需求,接下来我会用 Python 导入动态链接库来进行离线的语音合成。