前言
起因在这里,考虑到流式版涉及到网络传输以及本地转码操作。一分半钟的音频大概需要20秒才能转换完成,于是去了解了一下离线版本(主要其实是因为离线版比流式版便宜很多)。相比流式版,在调用离线版时遇到的坑就比较多了,记录一下,供自己和他人留作参考。
步骤
科大讯飞语音合成(离线版)的文档和SDK在这里
详细的接口文档在这里
常见错误码及原因在这里
再次吐槽一下科大讯飞的文档真的好久都没更新了吧。
1. 下载SDK
我们是跑在CentOS系统上的,所以下载的是Linux版高品质离线SDK。
下载解压之后可以看到目录结构如下:
-bin #可执行文件 资源目录
-doc #文档目录 没啥子用
-include #SDK需要引用的一些头文件
-libs #引用的库目录
-samples #样例目录
-README
-release.txt
2. 编写代码
由于给的样例全部都是写死的,所以要对其进行魔改。
首先新建一个文件夹,将bin
、include
、libs
、samples/xtts_offline_sample/
目录下的xtts_offline_sample.c
、Makefile
、64bit_make.sh
拷贝到该文件夹下。
修改Makefile
文件中的路径和生成文件为
#common makefile header
DIR_INC = ./include
DIR_BIN = ./bin
DIR_LIB = ./libs
TARGET = inews
BIN_TARGET = $(DIR_BIN)/$(TARGET)
CROSS_COMPILE =
CFLAGS = -g -Wall -I$(DIR_INC)
ifdef LINUX64
LDFLAGS := -L$(DIR_LIB)/x64
else
LDFLAGS := -L$(DIR_LIB)/x86
endif
LDFLAGS += -lmsc -lrt -ldl -lpthread -lstdc++
OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c))
$(BIN_TARGET) : $(OBJECTS)
$(CROSS_COMPILE)gcc $(CFLAGS) $^ -o $@ $