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

网站外包费用怎么做分录全国婚孕检服务平台小程序

网站外包费用怎么做分录,全国婚孕检服务平台小程序,南通网站上百度首页,东莞品牌策划公司目录 一、安装语音库 二、生成音频文件 三、语音播放代码 一、安装语音库 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.15wanjia.com/news/162460.html

相关文章:

  • 辣条网站建设书搜索引擎网页
  • 用固定ip做访问网站服务器wordpress页面编辑教程视频
  • 百度不收录的网站合肥网站的建设
  • 订阅号可以建设微网站宿州企业网站建设
  • 方城微网站建设链接是什么意思
  • 石碣东莞网站建设wordpress菜单图标
  • 网站建设领导小组新余+网站建设
  • 网站制作百度wordpress使用方法
  • 海外注册域名的网站网络规划设计师考试科目
  • 濮阳网站建设通图片东莞朝阳企讯通科技
  • 公司做网站计入什么科目榆林做网站的公司
  • 郑州达云通网站建设公司怎么做电商网站 用户画像
  • 网络营销导向企业网站建设的一般原则包括用于网站建设的图片
  • 扒站wordpress主题购物网站制作教程
  • 做教师章节试题哪个网站专业装修的商铺
  • 发卡网站怎么做手机网站主页推荐
  • 做网站的软件m开头建网站流程的费用
  • 做个企业网站大概多少费用好大夫 网站开发
  • 网站关键词选择门业网站 模板
  • 手机访问跳转手机网站建设工程资料网站
  • 平邑县住房和城乡建设局网站网页设计图片上加文字
  • 如何做网站小编cpa建站教程
  • 网站用视频做背景音乐网站服务器知识
  • 网站建设哪家好知道域名与网站建设
  • 汇鑫小学网站建设西安seo按天收费
  • 做企业网站的多少钱线上销售平台有哪些
  • 企业网站seo优化方案中国建设银行人力资源网站
  • 顺企网企业黄页站长seo软件
  • 广州南沙区建设局网站龙岗网站设计市场
  • 知乎 做网站的公司 中企动力推广赚钱的平台