成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Hi3861聯網科大訊飛實現TTS功能

系統 OpenHarmony
因為業務需要,需要實現TTS功能?,F講開發過程和實現方式整理成文檔,供有需要的人參考和討論。

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://ost.51cto.com??

因為業務需要,需要實現TTS功能?,F講開發過程和實現方式整理成文檔,供有需要的人參考和討論。

1、科大訊飛訊飛開放平臺可以聯網實現TTS功能,注冊之后每天可以免費500次訪問。

2、訪問科大訊飛平臺

目前訪問需要Websocket API,??幫助文檔鏈接??,具體的使用流程可以參看文檔說明。

3、在Openharmony下移植websocket

訪問websocket使用的是nopoll開源方案。將nopoll工程復制到third_party\nopoll下,在該文件下,添加BUILD.gn文件。

import("http://build/lite/config/component/lite_component.gni")
import("http://build/lite/ndk/ndk.gni")

config("nopoll_config") {
include_dirs = [
"nopoll",
"http://device/hisilicon/hispark_pegasus/sdk_liteos/third_party/lwip_sack/include",
"http://kernel/liteos_m/components/cmsis/2.0",
"http://third_party/lwip/src/include",
"http://third_party/tinycrypt/include",
]
}
cflags = [ "-Wno-unused-variable" ]
cflags += [ "-Wno-unused-but-set-variable" ]
cflags += [ "-Wno-unused-parameter" ]
cflags += [ "-Wno-sign-compare" ]
cflags += [ "-Wno-unused-function" ]
cflags += [ "-Wno-return-type" ]
nopoll_sources = [
"nopoll/nopoll.c",
"nopoll/nopoll_decl.c",
"nopoll/nopoll_win32.c",
"nopoll/nopoll_ctx.c",
"nopoll/nopoll_conn.c",
"nopoll/nopoll_log.c",
"nopoll/nopoll_listener.c",
"nopoll/nopoll_loop.c",
"nopoll/nopoll_io.c",
"nopoll/nopoll_msg.c",
"nopoll/nopoll_conn_opts.c",
"nopoll/nopoll_rtthread.c",
]
lite_library("nopoll_static") {
target_type = "static_library"
sources = nopoll_sources
public_configs = [ ":nopoll_config" ]
}
lite_library("nopoll_shared") {
target_type = "shared_library"
sources = nopoll_sources
public_configs = [ ":nopoll_config" ]
}
ndk_lib("nopoll_ndk") {
if (board_name != "hi3861v100") {
lib_extension = ".so"
deps = [
":nopoll_shared"
]
} else {
deps = [
":nopoll_static"
]
}
head_files = [
"http://third_party/nopoll"
]
}

然后在工程的gn文件下,

4、實現websocket功能(關鍵代碼)

nopoll還是很吃內存的,需要動態開辟很大的空間。因為考慮到空間,所以,轉換的tts格式是mp3格式。

(1)websocket規則的日期獲取

char *week[] = {"Mon, ", "Tues, ", "Wed, ", "Thur, ","Fri, ", "Sat, ","Sun, "};
char *month[] = {"", " Jan ", " Feb ", " Mar ", " Apr "," May ", " June "," July ", " Aug ", " Sept ", " Oct "," Nov ", " Dec "};
static void get_date(char *date)
{
int tv_sec = hi_get_real_time();
DEBUG_printf("hi_get_real_time=%d\r\n",tv_sec);
//timeutils_struct_time_t tm;
//timeutils_seconds_since_2000_to_struct_time(tv_sec, &tm);
time_t t = tv_sec;
struct tm *tm = localtime(&t);
// date: Tue, 15 Oct 2019 07:00:50 GMT
sprintf(date, "%s%02d%s%d%s%02d%s%02d%s%02d%s", week[tm->tm_wday], tm->tm_mday, month[tm->tm_mon], tm->tm_year+1900, " ",tm->tm_hour,":", tm->tm_min, ":", tm->tm_sec, " GMT");
}

因為需要校驗時間,所以,設備需要聯網,然后從網絡拉取時間,進行時間更新。

(2)上傳的json打包

void ws_xfyun_tts_request_json(char *buff)
{
char *string = NULL;
cJSON *root = cJSON_CreateObject();
//common
cJSON *cj_common = cJSON_CreateObject();
cJSON_AddItemToObject(root, "common", cj_common);
cJSON_AddItemToObject(cj_common, "app_id", cJSON_CreateString("0ea5cd21"));
//business
cJSON *cj_business = cJSON_CreateObject();
cJSON_AddItemToObject(root, "business", cj_business);
cJSON_AddItemToObject(cj_business, "aue", cJSON_CreateString("lame"));
cJSON_AddItemToObject(cj_business, "sfl", cJSON_CreateNumber(1));
cJSON_AddItemToObject(cj_business, "vcn",cJSON_CreateString("xiaoyan"));
cJSON_AddItemToObject(cj_business, "tte",cJSON_CreateString("UTF8"));
cJSON_AddItemToObject(cj_business, "pitch",cJSON_CreateNumber(50));
cJSON_AddItemToObject(cj_business, "speed",cJSON_CreateNumber(50));
//data
cJSON *cj_data = cJSON_CreateObject();
cJSON_AddItemToObject(root, "data", cj_data);
cJSON_AddItemToObject(cj_data, "status", cJSON_CreateNumber(2));
char base64_text[64];
int base64_len = sizeof(base64_text);
tiny_base64_encode(base64_text,&base64_len,tts_text,strlen(tts_text));
cJSON_AddItemToObject(cj_data, "text", cJSON_CreateString(base64_text));//北京 5YyX5Lqs
string = cJSON_PrintUnformatted(root);
strcpy(buff, string);
cJSON_Delete(root);
free(string);
}

(3)MP3解碼

使用了helix庫。

void mp3_decode_array(char *data,int len)
{
HMP3Decoder Decoder;
MP3FrameInfo mp3FrameInfo;
int bytesleft = len;
int decode_step = 0;;
unsigned short int output[1024*2];
Decoder = MP3InitDecoder();

int offset = MP3FindSyncWord(data,bytesleft); //搜索緩存中第一個有效數據幀
DEBUG_printf("offset = %d\r\n",offset);
if (offset < 0)
{
DEBUG_printf("MP3FindSyncWord not find.\r\n");
bytesleft = 0; // All data not avalible, clear the buffer.
return;
}
else if (offset > 0)
{
//去除頭部無效數據
bytesleft -= offset;
decode_step += offset;
}
//以下解碼n幀,readPtr會遞增,bytesleft遞減
unsigned char *readPtr;
readPtr = data+decode_step;
while (bytesleft > 0)
{
int ret = MP3Decode(Decoder, &readPtr, &bytesleft, (short *)output, 0);
if (ret == ERR_MP3_NONE) //正常解碼
{
DEBUG_printf("decode ok:bytesleft=%d\r\n",bytesleft);
MP3GetLastFrameInfo(Decoder, &(mp3FrameInfo));
hi_i2s_write((unsigned char *)output, mp3FrameInfo.outputSamps * 2, 1000);
}
else//解碼異常
{
DEBUG_printf("decode err: %d %d\r\n", ret,bytesleft);
}
}
DEBUG_printf("decode end.\r\n");
}

??想了解更多內容,請訪問:??

??51CTO和華為官方合作共建的鴻蒙技術社區??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2020-10-12 09:36:04

鴻蒙

2021-09-30 10:11:05

鴻蒙HarmonyOS應用

2022-03-07 15:05:58

HTTPHi3861數據解析

2020-10-16 09:50:37

Hi3861WiFi熱點

2022-03-15 15:00:59

Hi3861Pin接口鴻蒙

2023-05-26 16:07:14

Hi3861Wifi模塊

2020-10-14 09:41:02

Hi3861GPIO點燈

2022-05-30 15:21:27

Hi3861TCP通信

2020-11-02 12:07:11

鴻蒙 GPIO

2021-09-16 10:03:39

鴻蒙HarmonyOS應用

2022-05-09 14:22:40

Hello WorlMNIST鴻蒙

2020-10-28 10:03:43

Hi3861 GPIO點燈按鍵

2021-09-09 10:06:09

鴻蒙HarmonyOS應用

2012-08-16 09:44:03

中國移動投資

2020-10-27 16:52:10

科大訊飛

2015-11-20 09:58:46

浪潮科大訊飛

2024-11-13 10:16:37

2021-06-25 15:32:13

鴻蒙HarmonyOS應用

2022-04-12 11:07:11

Hi3861鴻蒙操作系統

2021-02-02 15:52:17

鴻蒙HarmonyOS應用開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 深夜福利影院 | 国产精品久久久久免费 | 亚洲精品www | 亚洲一区视频在线 | 久久久中文 | 狠狠干综合视频 | 欧美国产激情二区三区 | 国产欧美日韩精品在线观看 | 亚洲三级在线观看 | 国产一二三区精品视频 | 青青草华人在线视频 | 日韩欧美在线免费 | 污视频在线免费观看 | 二区不卡 | 国产精品国产三级国产aⅴ中文 | 久久一区二区三区四区五区 | 日本久久久一区二区三区 | 成人午夜免费福利视频 | 欧美激情一区 | 日一区二区 | 免费成人在线网站 | 中文字幕色站 | 亚洲精品在线免费播放 | 欧美日韩亚洲一区 | 国产在线精品一区二区三区 | 亚洲激情网站 | 日韩午夜网站 | 一级欧美一级日韩片 | 国产69精品久久久久777 | 久久综合久久综合久久 | 黄色免费网站在线看 | 四虎影院在线播放 | 在线天堂免费中文字幕视频 | 亚洲日韩视频 | 日韩一区二区三区视频 | 黄篇网址 | 国产精品久久久久久久久动漫 | 久久久人| 欧美午夜剧场 | 欧美性猛交一区二区三区精品 | 自拍偷拍亚洲视频 |