国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【離線語音】安信可VC-01/02二次開發篇:自定義音頻播放控制

AIoT行業洞察 ? 來源:AIoT行業洞察 ? 作者:AIoT行業洞察 ? 2025-09-25 16:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


安信可離線語音VC-01/02:硬件規格書、開發資料、燒錄工具、應用開發

安信可離線語音模組 VC-01、VC-02 系列教程 【基礎認知篇】
安信可離線語音模組 VC-01、VC-02 系列教程 【快速上手篇】
安信可離線語音模組 VC-01、VC-02 系列教程 【中級入門篇】
安信可離線語音模組 VC-01、VC-02 系列教程 【高級進階篇】
安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發篇】虛擬開發環境搭建和分享
安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發篇】事件和GPIO控制
安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發篇】PWM輸出
安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發篇】串口輸出
安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發篇】SDK音頻替換失敗記錄過程
安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發篇】自定義音頻播放控制

安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發篇】自定義音頻播放控制

簡介


在本篇文章中將介紹如何使用SDK來進行自定義音頻播放的功能。

在上一篇文章安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發篇】自定義音頻替換失敗過程中,簡要概述了res_build_tool.py 文件, 其主要的作用就是將音頻文件進行轉換,從而使編譯固件的時候能夠將音頻文件編譯到BIN中,然后在各項事件觸發的時候實現播放。

雖然在上一篇文章中我們失敗的嘗試了替換對應的語音文件,但是還有另一種方法來實現音頻數據的播放。 即使用user_player.h進行控制。

自定義音頻播放


1、根據蜂鳥M的離線開發指導手冊得知,其user_player.h文件可以被用戶使用并且控制音頻的播放。

其文件位于/home/vc02/Downloads/uni_hb_m_solution/unione_lite_app_hb_m/user/inc/user_player.h

#ifndef USER_INC_USER_PLAYER_H_
#define USER_INC_USER_PLAYER_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "unione.h"
#include "user_event.h"
/** @addtogroup uni_player_inf
@{*/
/**
*@brief 播放文件
*@param type 播放類型
*@param file 播放文件名
*@retval 0  操作成功
*@retval -1 操作失敗
*/
int user_player_play(AUDIO_PLAY_TYPE type, const char *file);
/**
*@brief 播放列表序號音頻
*@param file_list 文件列表 [1, 2, 3]
*@param num 列表序號
*@retval 0  操作成功
*@retval -1 操作失敗
*/
int user_player_reply_list_num(const char *file_list, int num);
/**
*@brief 隨機播放列表音頻
*@param file_list 文件列表 [1, 2, 3]
*@retval 0  操作成功
*@retval -1 操作失敗
*/
int user_player_reply_list_random(const char *file_list);
/**
*@brief 順序播放列表中所有音頻
*@param file_list 文件列表 [1, 2, 3]
*@retval 0  操作成功
*@retval -1 操作失敗
*/
int user_player_reply_list_in_order(const char *file_list);
/**
*@brief 停止播放
*@param type 播放類型
*@retval 0  操作成功
*@retval -1 操作失敗
*/
int user_player_stop(AUDIO_PLAY_TYPE type);
/**
*@brief 設置最小音量
*/
int user_player_set_volume_min(void);
/**
*@brief 設置最大音量
*/
int user_player_set_volume_max(void);
/**
*@brief 設置中等音量
*/
int user_player_set_volume_mid(void);
/**
*@brief 增加音量
*/
int user_player_set_volume_up(void);
/**
*@brief 減小音量
*/
int user_player_set_volume_down(void);
/**
*@brief 設置喇叭靜音
*/
int user_player_speaker_mute(void);
/**
*@brief 取消設置喇叭靜音
*/
int user_player_speaker_unmute(void);
/**
*@brief 系統進入無回復播報模式
*/
int user_player_shutup_mode(void);
/**
*@brief 系統退出無回復播報模式
*/
int user_player_shutup_exit(void);
/** @}*/
#ifdef __cplusplus
}
#endif
#endif

上述為所有用戶音頻播放函數定義。功能相當豐富,包括了音頻的播放和音量的調節,而正好對應的example中也有音頻播放的示例。


2、修改

/home/vc02/Downloads/uni_hb_m_solution/unione_lite_app_hb_m/user/inc/user_config.h 中對USER_RUN_DEMO_SELECT 的宏, 指向USER_DEMO_PLAYER

wKgZPGjU_oyAX64AAAElHzsvhBY586.jpg



3、查找這個宏,檢查SDK是否支持。

wKgZO2jU_oyACOZHAADzCJBHJKg312.jpg


可以從上述user_main 的入口宏判斷得知, USER_DEMO_I2C_TIMEUSER_DEMO_SPI_LCD 是不被支持的,而hb_player則沒問題。

4、使用TTS maker生成一段音頻數據。并且命名為109放到tones目錄下。

wKgZPGjU_o2AZv2vAACntXsbOfg589.jpg


5、修改原本代碼中播放的 9.MP3 ,拷貝到tones目錄下的109。

#include "user_player.h"
#define TAG "player_demo"
static void _player_test_process(void *args) {
  while (1) {
    uni_sleep(10);
    user_player_set_volume_min();
    LOGT(TAG, "set min vol");
    /*播放9.mp3文件*/
    user_player_play(AUDIO_PLAY_REPLY, "109"); //9.mp3
    uni_sleep(10);
    user_player_set_volume_mid();
    LOGT(TAG, "set mid vol");
    /*播放列表中的101.MP3文件*/
    user_player_reply_list_num("[9,101,102]", 1);
    uni_sleep(10);
    user_player_set_volume_max();
    LOGT(TAG, "set max vol");
    /*隨機播放列表中的某個文件*/
    user_player_reply_list_random("[9,101,102]");
    uni_sleep(10);
    /*順序播放列表中的所有文件*/
    user_player_reply_list_in_order("[9,101,102]");
    uni_sleep(10);
  }
}
static Result _create_player_test_thread(void) {
  thread_param param;
  uni_pthread_t pid;
  uni_memset(?m, 0, sizeof(param));
  param.stack_size = STACK_SMALL_SIZE;
  param.priority = OS_PRIORITY_LOW;
  uni_strncpy(param.task_name, "player_test", sizeof(param.task_name) - 1);
  if (0 != uni_pthread_create(&pid, ?m,
                              _player_test_process, NULL)) {
    LOGE(TAG, "create thread failed");
    return E_FAILED;
  }
  uni_pthread_detach(pid);
  return E_OK;
}
int hb_player(void) {
  _create_player_test_thread();
  return 0;
}

這段代碼創建了一個獨立線程,在線程中循環執行音頻播放測試。它先依次設置播放器的音量為最小、中等和最大,然后分別調用接口播放單個指定文件、播放列表中的特定文件、隨機播放播放列表中的文件,以及順序播放整個播放列表。

每次操作后線程都會短暫休眠,保證播放流程有序進行。該代碼用于驗證播放器在不同音量和播放模式下的功能是否正常。

6、燒錄和測試

wKgZPGjU_o2Afj3TAAC7bOVRNiw544.jpg

實驗現象


系統上電后等待初始化后 “你好我是小美”將優先被播放, 之后進行音量調整并且循環往復。 這里會存在一個問題即,SDK中所有的音頻的采樣率都是16000Hz。

這個采樣率已經在
/home/vc02/Downloads/uni_hb_m_solution/unione_lite_app_hb_m/src/sdk/player/src/uni_media_player.c中進行了定義。

wKgZO2jU_o6ATDdZAADVel7F8rI115.jpg


和/home/vc02/Downloads/uni_hb_m_solution/unione_lite_app_hb_m/src/sdk/audio/audio_player/src/uni_audio_player.c 中被定義。

chaijie_default.png


所以自定義的音頻文件最好和這個定義的采樣率保持一致,否則會出現采樣率不匹配出現奇怪的聲音。

wKgZPGjU_o-AZsDBAAE_U-1Hibw017.jpg


如上圖所示,創建的音頻文件的采樣率為24000, 所以下載到VC-02中, 音頻播放的時候會很奇怪(屬于正常現象)。

附件

uni_app_release_update.zip

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 音頻播放
    +關注

    關注

    0

    文章

    14

    瀏覽量

    7926
  • SDK
    SDK
    +關注

    關注

    3

    文章

    1095

    瀏覽量

    51282
  • 安信可
    +關注

    關注

    0

    文章

    217

    瀏覽量

    4976
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    小智AI語音模組實測:實現語音控制關燈

    ,完整復現一智能語音產品的測試流程。 No01、開箱與硬件初探 很幸運收到送測試的Ai-
    的頭像 發表于 11-19 16:09 ?554次閱讀
    <b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b>小智AI<b class='flag-5'>語音</b>模組實測:實現<b class='flag-5'>語音</b><b class='flag-5'>控制</b>關燈

    【AI語音模組】自制小智管家?Ai-WV01-32S測試體驗

    項目。 這次帶來一款新作品: 基于 Ai-WV01-32S 模組打造的小智語音硬件。 測試總結 項目 表現 模組集成度 ????? 焊
    的頭像 發表于 11-19 16:06 ?292次閱讀
    【AI<b class='flag-5'>語音</b>模組】自制小智管家?<b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b>Ai-WV<b class='flag-5'>01</b>-32S測試體驗

    直播回顧 | 掌握車載通信核心技術,虹科CAN總線實戰:PCAN二次開發技術直播助您輕松拿捏總線開發“創新引擎

    ?1CAN總線二次開發:構建智能汽車“神經網絡”的核心能力在“軟件定義汽車”的時代,整車電子電氣架構正從分布走向集中,車載網絡的數據量和復雜度呈指數級增長?;赑CAN等專業工具的二次開發能力
    的頭像 發表于 10-09 17:33 ?358次閱讀
    直播回顧 | 掌握車載通信核心技術,虹科CAN總線實戰:PCAN<b class='flag-5'>二次開發</b>技術直播助您輕松拿捏總線<b class='flag-5'>開發</b>“創新引擎

    如何使用SDK進行自定義音頻播放功能

    在上一文章離線語音模組 VC-01、
    的頭像 發表于 09-25 15:52 ?3042次閱讀
    如何使用SDK進行<b class='flag-5'>自定義</b><b class='flag-5'>音頻</b><b class='flag-5'>播放</b>功能

    SDK音頻替換失敗記錄過程

    離線語音模組 VC-01VC-02 系列教
    的頭像 發表于 09-25 15:50 ?1898次閱讀
    SDK<b class='flag-5'>音頻</b>替換失敗記錄過程

    VC-01/02二次開發: PWM輸出

    系列教程 【二次開發】虛擬開發環境搭建和分享 離線
    的頭像 發表于 08-27 16:06 ?723次閱讀
    <b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b><b class='flag-5'>VC-01</b>/<b class='flag-5'>02</b><b class='flag-5'>二次開發</b><b class='flag-5'>篇</b>: PWM輸出

    VC-01/02二次開發: 事件和GPIO控制

    系列教程 【二次開發】虛擬開發環境搭建和分享 離線
    的頭像 發表于 08-19 14:02 ?865次閱讀
    <b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b><b class='flag-5'>VC-01</b>/<b class='flag-5'>02</b><b class='flag-5'>二次開發</b><b class='flag-5'>篇</b>: 事件和GPIO<b class='flag-5'>控制</b>

    離線語音VC-01/02教程:中級入門

    系列教程 【二次開發】虛擬開發環境搭建和分享 離線
    的頭像 發表于 07-31 09:33 ?682次閱讀
    【<b class='flag-5'>離線</b><b class='flag-5'>語音</b>】<b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b><b class='flag-5'>VC-01</b>/<b class='flag-5'>02</b>教程:中級入門<b class='flag-5'>篇</b>

    AI語音開發板AiPi-PalChatV1 + MCP,通過HomeAssistant自動化控制設備

    以下作品由社區用戶 WT_0213制作 自從擁有了AiPi-PalChatV1 Ai
    的頭像 發表于 06-25 14:04 ?784次閱讀
    <b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b>AI<b class='flag-5'>語音</b><b class='flag-5'>開發</b>板AiPi-PalChatV1 + MCP,通過HomeAssistant自動化<b class='flag-5'>控制</b>設備

    HarmonyOS應用自定義鍵盤解決方案

    自定義鍵盤是一種替換系統默認鍵盤的解決方案,實現鍵盤個性化交互。允許用戶結合業務需求與操作習慣,對按鍵布局進行可視化重構、設置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護層面,自定義鍵盤可以
    的頭像 發表于 06-05 14:19 ?1791次閱讀

    云MES系統源碼,支持 SaaS 多租戶,支持二次開發

    萬界星空科技MES生產制造執行系統源碼,有演示,多個項目應用案例,成熟穩定。支持二次開發,商業授權后商用。
    的頭像 發表于 05-07 11:14 ?560次閱讀
    云MES系統源碼,支持 SaaS 多租戶,支持<b class='flag-5'>二次開發</b>

    語音開放平臺的使用——VC系列SDK的獲取

    離線語音開放平臺提供了開發量接近于零的SDK生成功能,對于功能簡單的
    的頭像 發表于 04-12 11:24 ?709次閱讀
    <b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b><b class='flag-5'>語音</b>開放平臺的使用——<b class='flag-5'>VC</b>系列SDK的獲取

    離線語音開發板:二次開發語音控制LED燈

    前言 經過前面的學習,相信大家已經了解離線語音開發環境的搭建流程。甚至已經編譯過固件,并進行了測試。本文將從產品創建開始講起,一步一步實現語音控制
    的頭像 發表于 03-19 10:53 ?802次閱讀
    <b class='flag-5'>安</b><b class='flag-5'>信</b><b class='flag-5'>可</b><b class='flag-5'>離線</b><b class='flag-5'>語音</b><b class='flag-5'>開發</b>板:<b class='flag-5'>二次開發</b><b class='flag-5'>語音</b><b class='flag-5'>控制</b>LED燈

    智能語音識別照明解決方案,平臺自定義,中英切換

    智能語音識別照明方案引入NRK3502芯片,支持平臺自定義離線控制,中英雙語切換。NRK3502具備高性能和靈活自定義能力,
    的頭像 發表于 01-10 13:23 ?830次閱讀
    智能<b class='flag-5'>語音</b>識別照明解決方案,平臺<b class='flag-5'>自定義</b>,中英切換

    深居淺出AutoCAD二次開發

    深居淺出AutoCAD二次開發,net版
    發表于 01-06 14:12 ?12次下載