国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

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

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

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

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

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

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模塊

2022-05-30 15:21:27

Hi3861TCP通信

2020-11-02 12:07:11

鴻蒙 GPIO

2020-10-14 09:41:02

Hi3861GPIO點燈

2022-05-09 14:22:40

Hello WorlMNIST鴻蒙

2020-10-28 10:03:43

Hi3861 GPIO點燈按鍵

2021-09-09 10:06:09

鴻蒙HarmonyOS應用

2021-09-16 10:03:39

鴻蒙HarmonyOS應用

2012-08-16 09:44:03

中國移動投資

2021-06-25 15:32:13

鴻蒙HarmonyOS應用

2015-11-20 09:58:46

浪潮科大訊飛

2020-10-27 16:52:10

科大訊飛

2024-11-13 10:16:37

2013-09-25 14:29:06

科大訊飛消費市場
點贊
收藏

51CTO技術棧公眾號

97视频在线观看播放| 欧洲黄色一级视频| 你懂的免费在线观看视频网站| 性色一区二区三区| 亚州av一区二区| 日韩一区二区三区色| 亚洲精品国产精品久久清纯直播| 神马精品久久| 一区二区三区在线视频观看| 亚洲精品自在在线观看| 欧美美女在线观看| 亚洲高清在线观看| 黄色影院一级片| 日日夜夜免费精品视频| 欧美精品一区二区在线播放| 日韩第一页在线观看| 亚洲国产精品久久久男人的天堂| 里番在线观看网站| 91成人超碰| 久久久久久欧美| 456亚洲精品成人影院| 91精品国产福利| 头脑特工队2在线播放| 国产精品的网站| 97xxxxx| 国产黄色成人av| 日本一区不卡| 激情另类综合| 亚洲www在线| 99久久久国产精品美女| 国产91在线播放九色快色| 日韩精品一区二区三区中文在线| 在线不卡国产精品| 欧美成人h版| 亚洲精品国产精品国产自| av在线导航| 欧美日韩久久久一区| 国产在线观看网站| 精品久久久久久久久久久久久久| 黄色免费影视| 亚洲人成网站在线| 免费全黄无遮挡裸体毛片| 久久综合九色综合97婷婷女人 | avav成人| 亚洲人在线视频| 自拍一区在线观看| 亚洲视频在线免费看| 台湾佬成人网| 色妞在线综合亚洲欧美| 日韩精品三级| 欧美亚洲第一页| 国产精品91一区二区三区| 国产精品视频免费一区二区三区 | 99精品视频在线观看免费播放 | 国产高潮在线| 亚洲欧美激情精品一区二区| 日本不卡一二三| 久久久av亚洲男天堂| 精品国产一区二区三区成人影院 | 国产精品www| 欧美精品一区二区三区中文字幕| 国产精品一区二区电影| 国产在线不卡| 亚洲精品中文字幕在线| kk眼镜猥琐国模调教系列一区二区 | 麻豆国产91在线播放| 中文字幕剧情在线观看一区| 国产成人欧美日韩在线电影| 视色视频在线观看| 一区二区三区高清不卡| 国产乱理伦片a级在线观看| 欧美一区二区三区视频| 成人做爰视频www网站小优视频| 欧美成人精品h版在线观看| 精品国产aⅴ| 日本在线观看不卡| 久久久精品免费网站| 最猛黑人系列在线播放| 精品国产乱码久久久久久图片 | 4438亚洲最大| 日韩黄色三级在线观看| 国产精品夫妻激情| 免费看的黄色欧美网站| 欧美在线观看视频免费| 亚洲香蕉伊在人在线观| caoporn-草棚在线视频最| 欧美成aaa人片在线观看蜜臀| 成人vr资源| 超碰97在线看| 精品国产福利视频| 国产 日韩 欧美一区| 国产精品视频999| 久久国产免费看| 777免费视频| 亚洲第一福利在线观看| 欧美一级一片| 亚洲一区二区三区午夜| 伊人开心综合网| 在线高清av| 91在线高清免费观看| 成人免费视频视频在线观看免费| 色播色播色播色播色播在线| 日韩日本欧美亚洲| 亚洲国产99| 成人图片小说| 亚洲另类图片色| 欧美精品黄色| aaa一级毛片| 色小说视频一区| 久久久亚洲一区| 人人超碰在线| 欧美高清激情视频| 久久福利资源站| 欧美91精品久久久久国产性生爱| 日韩在线视频观看正片免费网站| 亚洲性视频h| 好男人社区在线视频| 亚洲欧美另类人妖| 最新亚洲一区| **毛片在线网站| 九色精品免费永久在线| 国内成人精品2018免费看| 天堂成人在线| 成人美女视频在线看| caoporn97免费视频公开| 精品国产伦一区二区三区观看方式 | 97久久精品国产| 精品一区二区三区欧美| 欧美jizzhd69巨大| 欧美综合激情| 一区二区三区在线观看动漫 | 久久精品国产www456c0m| 在线观看成人av| 日韩欧美一区电影| 成人午夜电影久久影院| 在线黄色网页| 日韩av色在线| 久久成人免费日本黄色| 欧洲av无码放荡人妇网站| 午夜在线电影亚洲一区| 在线免费观看a视频| 欧美极品少妇与黑人| 国产毛片精品视频| 国产www.大片在线| 日韩av高清在线播放| 亚洲欧洲日产国产网站| 国产精品福利在线播放| 亚洲精选91| 欧美va在线观看| 日本三级在线视频| 中文在线二区| www.国产精品| 欧美精品羞羞答答| 亚洲国产sm捆绑调教视频| 97avcom| jlzzjlzz欧美大全| 福利一区和二区| 精品在线观看视频| 国产精品女人毛片| 亚洲一区二区不卡免费| 日韩高清欧美高清| 日本精品一区二区三区高清 | 狠狠干一区二区| 国产精品亚洲欧美导航| 99理论电影网| 国产日韩av网站| 大地资源高清播放在线观看 | 亚洲一区二区三区四区的| 国产成a人亚洲| 欧美视频一区二区三区…| 亚洲少妇激情视频| 日本sm极度另类视频| 亚洲激情一区二区| 污污网站在线| 在线观看福利电影| 久久综合偷偷噜噜噜色| 风间由美性色一区二区三区四区| 欧美天堂影院| 午夜精品视频一区二区三区在线看| 久久激情综合| 专区另类欧美日韩| 亚洲四区在线观看| 日韩欧美亚洲一二三区| 欧美精品一区视频| 日本亚洲欧美三级| 先锋影音亚洲资源| 亚洲污视频在线观看| 91在线高清| av在线不卡顿| 久久久精品国产99久久精品芒果| 中文字幕国产亚洲| 中文字幕在线观看亚洲| 日产精品高清视频免费| 人妖欧美1区| 亚洲美女毛片| 欧美成va人片在线观看| 欧美二区在线看| 久久精品国产亚洲a∨麻豆| 99精品国产九九国产精品| 日韩电影不卡一区|