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

全国专业做美术网站的公司怎么用Visio studio做网站

全国专业做美术网站的公司,怎么用Visio studio做网站,青岛房产网上备案查询,wordpress覆盖密码重置Application::InputAudio(),这段代码定义了 Application 类中的 InputAudio 方法,其主要功能是从音频编解码器(AudioCodec)读取音频数据,根据采样率和声道数进行重采样处理,然后将处理后的数据分别传递给音…

Application::InputAudio(),这段代码定义了 Application 类中的 InputAudio 方法,其主要功能是从音频编解码器(AudioCodec)读取音频数据,根据采样率和声道数进行重采样处理,然后将处理后的数据分别传递给音频处理器(audio_processor_)和唤醒词检测器(wake_word_detect_)。
源码:

void Application::InputAudio() {auto codec = Board::GetInstance().GetAudioCodec();std::vector<int16_t> data;if (!codec->InputData(data)) { // 从I2S通道中读取数据,并返回数据长度return;}if (codec->input_sample_rate() != 16000) {if (codec->input_channels() == 2) {auto mic_channel = std::vector<int16_t>(data.size() / 2);auto reference_channel = std::vector<int16_t>(data.size() / 2);for (size_t i = 0, j = 0; i < mic_channel.size(); ++i, j += 2) {mic_channel[i] = data[j];reference_channel[i] = data[j + 1];}auto resampled_mic = std::vector<int16_t>(input_resampler_.GetOutputSamples(mic_channel.size()));auto resampled_reference = std::vector<int16_t>(reference_resampler_.GetOutputSamples(reference_channel.size()));input_resampler_.Process(mic_channel.data(), mic_channel.size(), resampled_mic.data());reference_resampler_.Process(reference_channel.data(), reference_channel.size(), resampled_reference.data());data.resize(resampled_mic.size() + resampled_reference.size());for (size_t i = 0, j = 0; i < resampled_mic.size(); ++i, j += 2) {data[j] = resampled_mic[i];data[j + 1] = resampled_reference[i];}} else {auto resampled = std::vector<int16_t>(input_resampler_.GetOutputSamples(data.size()));input_resampler_.Process(data.data(), data.size(), resampled.data());data = std::move(resampled); // 将从采样的数据移到data向量中}}if (audio_processor_.IsRunning()) {audio_processor_.Input(data); // 数据进行前端处理}if (wake_word_detect_.IsDetectionRunning()) {wake_word_detect_.Feed(data);}
}

以下是对代码的详细解析:

函数定义和整体功能

void Application::InputAudio() {
  • 定义了 Application 类的成员函数 InputAudio,该函数不接受参数,返回类型为 void,用于处理音频输入。

获取音频编解码器实例并读取数据

    auto codec = Board::GetInstance().GetAudioCodec();std::vector<int16_t> data;if (!codec->InputData(data)) { // 从I2S通道中读取数据,并返回数据长度return;}
  • Board::GetInstance().GetAudioCodec():通过单例模式获取 Board 类的实例,然后调用其 GetAudioCodec 方法获取音频编解码器的实例。
  • std::vector<int16_t> data;:创建一个 std::vector 用于存储从音频编解码器读取的音频数据。
  • codec->InputData(data):调用音频编解码器的 InputData 方法从I2S通道读取数据到 data 向量中。如果读取失败,函数直接返回。

重采样处理

    if (codec->input_sample_rate() != 16000) {if (codec->input_channels() == 2) {auto mic_channel = std::vector<int16_t>(data.size() / 2);auto reference_channel = std::vector<int16_t>(data.size() / 2);for (size_t i = 0, j = 0; i < mic_channel.size(); ++i, j += 2) {mic_channel[i] = data[j];reference_channel[i] = data[j + 1];}auto resampled_mic = std::vector<int16_t>(input_resampler_.GetOutputSamples(mic_channel.size()));auto resampled_reference = std::vector<int16_t>(reference_resampler_.GetOutputSamples(reference_channel.size()));input_resampler_.Process(mic_channel.data(), mic_channel.size(), resampled_mic.data());reference_resampler_.Process(reference_channel.data(), reference_channel.size(), resampled_reference.data());data.resize(resampled_mic.size() + resampled_reference.size());for (size_t i = 0, j = 0; i < resampled_mic.size(); ++i, j += 2) {data[j] = resampled_mic[i];data[j + 1] = resampled_reference[i];}} else {auto resampled = std::vector<int16_t>(input_resampler_.GetOutputSamples(data.size()));input_resampler_.Process(data.data(), data.size(), resampled.data());data = std::move(resampled); // 将从采样的数据移到data向量中}}
  • 检查采样率:如果音频编解码器的输入采样率不是16000Hz,则需要进行重采样处理。
  • 双声道处理:如果输入是双声道音频,将左右声道数据分离到 mic_channelreference_channel 向量中,分别对两个声道进行重采样处理,最后将重采样后的声道数据合并回 data 向量。
  • 单声道处理:如果输入是单声道音频,直接对 data 向量进行重采样处理,并将重采样后的数据移动到 data 向量中。

数据处理和唤醒词检测

    if (audio_processor_.IsRunning()) {audio_processor_.Input(data); // 数据进行前端处理}if (wake_word_detect_.IsDetectionRunning()) {wake_word_detect_.Feed(data);}
  • 音频处理:如果音频处理器正在运行,将处理后的数据传递给音频处理器进行前端处理。
  • 唤醒词检测:如果唤醒词检测器正在运行,将处理后的数据传递给唤醒词检测器进行检测。

代码优化建议

  • 错误处理:在重采样处理过程中,可以添加更多的错误处理逻辑,例如检查 input_resampler_reference_resampler_Process 方法的返回值,确保重采样操作成功。
  • 性能优化:可以考虑使用更高效的重采样算法或库,以提高重采样的性能。
  • 代码复用:可以将双声道数据分离和合并的逻辑封装成独立的函数,提高代码的复用性。

文章转载自:

http://8stZwd2H.wmrgp.cn
http://2aI16FBp.wmrgp.cn
http://UWx9aOka.wmrgp.cn
http://fpAJCtw2.wmrgp.cn
http://fwbgyy3o.wmrgp.cn
http://gyiXtMNl.wmrgp.cn
http://7angnNFr.wmrgp.cn
http://sl97OqfS.wmrgp.cn
http://Cd79OzNS.wmrgp.cn
http://ddnKErDQ.wmrgp.cn
http://dfRe3ck2.wmrgp.cn
http://LMZD4ssV.wmrgp.cn
http://rX4YmJzA.wmrgp.cn
http://7RlFwGTv.wmrgp.cn
http://prprN9CC.wmrgp.cn
http://eR5ly5uk.wmrgp.cn
http://uysvAfj7.wmrgp.cn
http://EUrFwYJt.wmrgp.cn
http://vBZHmFs9.wmrgp.cn
http://THmu6hXV.wmrgp.cn
http://m9m4ss18.wmrgp.cn
http://aruRtLwO.wmrgp.cn
http://YdlOtuMl.wmrgp.cn
http://bNfLuRJb.wmrgp.cn
http://kKajTS1p.wmrgp.cn
http://vsMDS5dH.wmrgp.cn
http://5Tn9HtaI.wmrgp.cn
http://TJ3hBoho.wmrgp.cn
http://yAKu5F8B.wmrgp.cn
http://xXBWoxAR.wmrgp.cn
http://www.dtcms.com/wzjs/758069.html

相关文章:

  • 机关门花网站建设小红书代运营
  • 网站开发项目经验描述商丘网站建设方案
  • 专门看网站的浏览器上百度首页
  • 深圳门户网站建设方案重庆网站seo案例
  • 重庆九龙坡营销型网站建设公司哪家专业上海公关公司有哪些
  • 化妆品网站建设目标免费查看采购信息的平台
  • 湘潭网站制作产品推广案例
  • 做网站应该了解什么软件开发一个网站要多少钱
  • 免费稳定的网站空间免费扑克网站
  • 电商网站设计理念wordpress 公开显示为
  • 黄岛网站制作wordpress怎么和手机连接数据库
  • 建设网站怎么设置网站页面大小国内做的好的电商网站有哪些方面
  • 设计网站费用多少python修改wordpress
  • 佛山白坭网站建设wordpress 模版不能更新
  • 东莞网站seo公司哪家大找别人做的网站怎样修改
  • 有哪些做淘宝素材的网站有哪些给我免费的观看
  • 网站单页面制作网站安全建设工作总结
  • 临淄网站推广广告设计与制作毕业设计
  • 福建专业网站建设欢迎咨询爱网站关键词查询
  • 下载网站后怎么做的泉州推广优化公司
  • 自己做链接的网站找公司开发网站
  • 想在网上做设计接单有没有网站苏州网站 制作 公司
  • 芜湖有没有做网站的百度搜题在线使用
  • wap网站前台模板常德交通网站
  • 网站合作推广方案西安西部数码备案网站
  • 做幼儿网站的目标如何让我们的网站新闻被百度新闻收录
  • 设计坞网站官方下载怎样能让百度搜到自己的网站
  • 餐饮网站建设教程零售管理系统哪个软件好
  • 怎样做企业手机网站首页河北seo推广
  • 自己做盗版影视网站企业网站建设排名口碑