1.文字转音频获取方式:
- 讯飞文字转语音:这里由于讯飞会在开始加上水印声音,所以前面可以写一段无关文字,再延时2s,再写我们需要的文字,水印就加在无用的文字上面了,后面可以切掉——http://peiyin.xunfei.cn/make/
- 播放步骤1的音频,使用录音软件录制电脑声卡输出的声音 ——https://www.onlinedown.net/soft/561714.htm
- 用MP3剪切工具裁掉讯飞语音加的水印音频——http://www.pc6.com/softview/SoftView_58988.html
- MP3转wav——格式工厂
2.树莓派C++代码播放音频
树莓派命令行播放音乐:aplay -D plughw:0,1 XXX.wav
树莓派命令行调整音量大小:amixer -M set PCM 100%
上面命令调用,可以利用耳机口播放音乐
如果代码里面控制,只需要如下调用
system(“amixer -M set PCM 100%”);
3.树莓派增加功放模块
由于耳机口驱动力不够,只能接耳机听,如果接个扬声器,声音很小
所以购买此功放模块,利用树莓派5V供电,驱动2W的扬声器
由于最大放大时底噪很大,所以需要控制这个功放不使用的时候mute状态,要发声才解mute。
PAM8403引脚功能如下,5号脚是mute脚,低电平mute,默认内置上拉5V,实际测量模块的5脚是连接5V供电的,所以需要用烙铁断开引脚与焊盘连接,连接到我们的树莓派IO口控制mute状态
实际控制代码如下:
bool play_voice(string voice_path){
bool ret=false;
if(access(voice_path.c_str(),0)!=0){
LOGI("%s file is not exit\n",voice_path.c_str());
return false;
}
string cmd="aplay -D plughw:0,1 "+voice_path;\
digitalWrite(GPIO_AMP_MUTE, HIGH);//unmute amp
system("amixer -M set PCM 100%");//max vol
usleep(10000);
system(cmd.c_str());
system("amixer -M set PCM 0%");//min vol
digitalWrite(GPIO_AMP_MUTE, LOW);//mute amp
ret=true;
return ret;
}