当前位置: 首页 > news >正文

冷链物流seo专员招聘

冷链物流,seo专员招聘,合肥长丰路网站建设,上海装饰公司网站建设目录 一、安装语音库 二、生成音频文件 三、语音播放代码 一、安装语音库 sudo apt update apt-get install libasound2-dev二、生成音频文件 # 文字生成 MP3网地:https://www.text-to-speech.cn/# MP3 转 WAV网址:https://www.aconvert.com/cn/aud…

目录

一、安装语音库

二、生成音频文件

三、语音播放代码


一、安装语音库

sudo apt update
apt-get install libasound2-dev

二、生成音频文件

# 文字生成 MP3网地:https://www.text-to-speech.cn/# MP3 转 WAV网址:https://www.aconvert.com/cn/audio/mp3-to-wav/

三、语音播放代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <alsa/asoundlib.h>#pragma pack(1)
struct tagWavHeader
{char  riff[4];               // RIFF标志int   chunk_size;           // 文件大小char  type[4];              // 格式类型(wave)char  fmt[4];               // "fmt"int   subchunk_size;        // sizeof(wave format matex)short audio_format;         // 音频格式short channel_nums;         // 声道数int   sample_rate;          // 采样率int   byte_rate;            // 比特率short block_align;          // 块对齐short bits_per_sample;      // 每个采样点的位数char  data[4];              // ”data“int   data_size;            // 音频数据的大小
};
#pragma pack()void play_volume_set(long volume) {snd_mixer_t* handle;snd_mixer_open(&handle, 0);snd_mixer_attach(handle, "default");snd_mixer_selem_register(handle, NULL, NULL);snd_mixer_load(handle);snd_mixer_selem_id_t* sid;snd_mixer_selem_id_alloca(&sid);snd_mixer_selem_id_set_index(sid, 0);snd_mixer_selem_id_set_name(sid, "Master");long min = 0, max = 0;snd_mixer_elem_t* elem = snd_mixer_find_selem(handle, sid);snd_mixer_selem_get_playback_volume_range(elem, &min, &max);snd_mixer_selem_set_playback_volume_all(elem, volume * max / 100);snd_mixer_close(handle);
}int play_wav_file(const char* wav_file_path) {if (access(wav_file_path, F_OK) != 0) {printf("audio file (%s) not exist.", wav_path);return -1001;}FILE* fp = fopen(wav_file_path, "r+b");if (fp == NULL) {perror("\n fopen() failed: ");return -1002;}struct tagWavHeader wav_header;memset(&wav_header, 0, sizeof(wav_header));int rc = fread(&wav_header, 1, sizeof(wav_header), fp);printf("\n wav_header_size = %d", rc);if (rc == 0) {fclose(fp);return -1003;}snd_pcm_t* dev_handle;print_audio_info(wav_header);rc = snd_pcm_open(&dev_handle, "default", SND_PCM_STREAM_PLAYBACK, 0);if (rc < 0) {perror("\n snd_pcm_open() failed: ");fclose(fp);return -1004;}// 初始化结构体snd_pcm_hw_params_t* dev_params;snd_pcm_hw_params_alloca(&dev_params);rc = snd_pcm_hw_params_any(dev_handle, dev_params);if (rc < 0) {perror("\n snd_pcm_hw_params_any() failed: ");snd_pcm_close(dev_handle);fclose(fp);return -1005;}// 初始化参数权限rc = snd_pcm_hw_params_set_access(dev_handle, dev_params, SND_PCM_ACCESS_RW_INTERLEAVED);if (rc < 0) {perror("\n snd_pcm_hw_params_set_access() failed: ");snd_pcm_close(dev_handle);fclose(fp);return -1006;}// 设置采样的位数int bit = wav_header.bits_per_sample;switch (bit / 8) {case 1:snd_pcm_hw_params_set_format(dev_handle, dev_params, SND_PCM_FORMAT_U8);break;case 2:snd_pcm_hw_params_set_format(dev_handle, dev_params, SND_PCM_FORMAT_S16_LE);break;case 3:snd_pcm_hw_params_set_format(dev_handle, dev_params, SND_PCM_FORMAT_S24_LE);break;}// 设置声道播放(1表示单声>道,2表示立体声)int channel = wav_header.channel_nums;rc = snd_pcm_hw_params_set_channels(dev_handle, dev_params, channel);if (rc < 0) {perror("\n snd_pcm_hw_params_set_channels() failed: ");snd_pcm_close(dev_handle);fclose(fp);return -1007;}// 设置语音的播放频率int frequency = wav_header.sample_rate;int dir = 0; unsigned int freq = frequency;rc = snd_pcm_hw_params_set_rate_near(dev_handle, dev_params, &freq, &dir);if (rc < 0) {perror("\n snd_pcm_hw_params_set_rate_near() failied: ");snd_pcm_close(dev_handle);fclose(fp);return -1008;}// 更新播放参数到设备rc = snd_pcm_hw_params(dev_handle, dev_params);if (rc < 0) {perror("\n snd_pcm_hw_params() failed: ");snd_pcm_close(dev_handle);fclose(fp);return -1009;}// 获取播放周期长度snd_pcm_uframes_t frames = 0;rc = snd_pcm_hw_params_get_period_size(dev_params, &frames, &dir);if (rc < 0) {perror("\n snd_pcm_hw_params_get_period_size() failed: ");snd_pcm_close(dev_handle);fclose(fp);return -1010;}// 定位到音频的数据区fseek(fp, 58, SEEK_SET);snd_pcm_sframes_t frame_num = 0;int size = frames * wav_header.block_align;char* buffer = (char*)malloc(size);while (true) {memset(buffer, 0, size);int rv = fread(buffer, 1, size, fp);if (rv == 0) {printf("\n end of wav audio file");break;}// 下面开始写音频数据到 PCM 设备上进行播放while ((frame_num = snd_pcm_writei(dev_handle, buffer, frames)) < 0) {usleep(2000);if (frame_num == -EPIPE) {// EPIPE means underrunfprintf(stderr, "underrun occurred \n");// 完成参数设置,准备好设备snd_pcm_prepare(dev_handle);} else if (frame_num < 0) {fprintf(stderr, "snd_pcm_writei() failed: %s\n", snd_strerror(frame_num));}}}snd_pcm_drain(dev_handle);snd_pcm_close(dev_handle);free(buffer);fclose(fp);return 0;
}

http://www.fp688.cn/news/159958.html

相关文章:

  • 免费做苗木网站成都网络营销品牌代理机构
  • wordpress新浪图床海淀区seo引擎优化
  • 普通营业执照有做网站条件吗营销推广网
  • 做公司网站的平台百度的企业网站
  • 网站建设最新模板班级优化大师官网
  • 杭州网站优化排名万网查询
  • 做网站要审批吗win7运行速度提高90%
  • jsp做的当当网站的文档中央突然宣布一个大消息
  • 所有网站大全百度发布
  • 做视频网站 买带宽百度推广如何计费
  • 网站后台 英语正规拉新推广平台有哪些
  • 北京有哪些大型互联网公司windows优化大师是病毒吗
  • 注册个人网站的方法网页制作
  • 信阳网站建设培训班有哪些课程
  • 成都企业网站seo技术百度大搜数据多少钱一条
  • 高端网站建设企业文化经典句子
  • wordpress密文seo关键词优化技巧
  • 安徽和县住房城乡建设局网站百度com打开
  • 吉林省建设厅网站首页企业宣传软文
  • 用shopify 做网站seo排名优化哪家好
  • 加人引流加人网站怎么做推广之家
  • 自己做网站靠挂百度站长统计网站大全
  • 随州网站建设海南网站推广
  • 网站logo在哪里谷歌在线浏览入口
  • 专业营销网站带客西安疫情最新消息1小时内
  • 安阳网站建设公司出租车公司职业培训机构排名
  • 传统网站建设 成本优秀网站seo报价
  • 网页源代码怎么查找部分内容北京网站建设东轩seo
  • 嘉定网站设计合肥网站优化推广方案
  • 没有备案的网站怎么访问如何给自己的公司建网站