1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/joker_cuiwei-arm_carparking_c

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
TTS_demo.c 1.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
翠微薛之谦 Отправлено 18.01.2019 11:41 e49949a
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include "common.h"
#include "head.h"
#define WAV "/tmp/a.wav"
/*-------接收音频-------*/
void recv_wav(int fd)
{
//读取音频数据的总大小
char size[10];
bzero(size,10);
read(fd,size,10);
long wavsize = atol(size);
FILE *fp = fopen(WAV, "w");
char buf[1024];
while(wavsize)
{
// 读取从Ubuntu发来的音频数据
bzero(buf, 1024);
int n = read(fd, buf, 1024);
if(n <= 0)
break;
fwrite(buf, n, 1, fp);
wavsize -= n;
}
fclose(fp);
}
void playback(void)
{
system("aplay /tmp/a.wav");
}
int main(int argc, char **argv)
{
// 1,准备好TCP套接字,和服务端的地址
int fd = Socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr;
socklen_t len = sizeof(addr);
bzero(&addr, len);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(argv[1]);
addr.sin_port = htons(atoi(argv[2]));
// 2,试图连接Ubuntu上的语音合成引擎
Connect(fd, (struct sockaddr *)&addr, len);
//打开管道
int fifo_SQLite_ALSA = open(SQLite_ALSA, O_RDWR);
char msg[200];
while(1)
{
// 3,从管道(数据库)接收需要语言合成的文本
bzero(msg, 200);
if(read(fifo_SQLite_ALSA,msg,200) == 0)
break;
// 4,将文本发送给语音合成引擎
Write(fd, msg, strlen(msg));
// 5,等待返回的语音数据,并播放出来
recv_wav(fd);
playback();
}
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/joker_cuiwei-arm_carparking_c.git
git@api.gitlife.ru:oschina-mirror/joker_cuiwei-arm_carparking_c.git
oschina-mirror
joker_cuiwei-arm_carparking_c
joker_cuiwei-arm_carparking_c
master