赞
踩
开源的语音识别:CMUSphinx
开源的语音合成:festival
sudo apt-get install festival
echo “Hello world, i am festival” | festival –tts
~$ locate festival
/etc/speech-dispatcher/modules/festival.conf
/usr/share/speech-dispatcher/conf/modules/festival.conf
ASR:自动语音识别技术(Automatic Speech Recognition)是一种将人的语音转换成文本的技术。
NLU:自然语言理解(Natural Language Understanding)
TTS:Text to Speech,即“从文本到语音”。把文字智能地转化为自然语音流。
语音交互流程
1、语音唤醒wakeup–本地处理
2、语音识别ASR–在线识别
–离线命令词识别
3、语义理解NLU–在线处理
4、语音合成TTS–在线合成
–离线合成
麦克风阵列
——科大讯飞二、四、六麦克风
——思必驰六、七麦克环形阵列
——捷通华声五麦克环形阵列
语音唤醒
——百度语音唤醒
——科大询飞
——思必驰
语音识别ASR
——百度语音在线识别
——科大讯飞在线ASR
——云之声在线识别
语义理解NLU
——图灵OS-免费在线使用5000次/天
——云之声在线体验
——科大讯飞免费在线使用体验
——捷通华声(灵云在线体验)
语音合成TTS
——科大讯飞支持各地方口音,卡通特色语音
——云之声
——百度在线语音
——捷通华声(灵云在线语音合成)
科大讯飞在线语音合成
注册讯飞开放平台帐号
下载讯飞SDK-linux版
Linux_voice_1158_59570e03.zip
解压到voice文件:unzip Linux_voice_1158_59570e03.zip -d voice
cd voice
tree以树形结构显示文件目录结构
cd samples/tts_sample
查看Makefile和64bit_make.sh
运行样例:source 64bit_make.sh
再运行make
出现:make: `../../bin/tts_sample’ is up to date.表示运行成功
cp 64bit_make.sh ../../bin/ (bin里用到了动态库)
cd ../../bin
运行 ./tts_sample
生成tts_sample.wav
安装sox软件包库(命令行工具)
sudo apt-get install sox
play tts_sample.wav
备注:
voice/libs/x64$ sudo cp libmsc.so /usr/lib
ctags
sudo apt-get install ctags
taglist
https://vim.sourceforge.io/scripts/script.php?script_id=273
下载解压 unzip -d taglist taglist_46.zip
配置taglist环境,具体如下:
cp doc/taglist.txt /usr/share/vim/vim74/doc
cp plugin/taglist.vim /usr/share/vim/vim74/plugin/
默认打开taglist,需配置如下:
编辑/etc/vim/vimrc文件,在文件最后添加如下配置信息:
let Tlist_Auto_Open = 1
let Tlist_Ctags_Cmd = ‘/usr/bin/ctags’
let Tlist_Show_One_File = 1
let Tlist_Exit_OnlyWindow = 1
讯飞——TTS_demo
* rdn: 合成音频数字发音方式
* volume: 合成音频的音量
* pitch: 合成音频的音调
* speed: 合成音频对应的语速
* voice_name: 合成发音人
* sample_rate: 合成音频采样率
* text_encoding: 合成文本编码格式
/* wav音频头部格式 */
typedef struct _wave_pcm_hdr
{
char riff[4]; // = “RIFF” 资源交换文件标志(RIFF)
int size_8; // = FileSize - 8 从下个地址开始到文件尾的总字节数
char wave[4]; // = “WAVE” WAV文件标志(WAVE)
char fmt[4]; // = “fmt ” 波形格式标志(fmt ),最后一位空格。
int fmt_size; // = 下一个结构体的大小 : 16 过滤字节(一般为00000010H),若为00000012H则说明数据头携带附加信息
short int format_tag; // = PCM : 1 格式种类(值为1时,表示数据为线性PCM编码)
short int channels; // = 通道数 : 1 通道数,单声道为1,双声道为2
int samples_per_sec; // = 采样率 : 8000 | 6000 | 11025 | 16000 采样频率
int avg_bytes_per_sec; // = 每秒字节数 : samples_per_sec * bits_per_sample / 8 波形数据传输速率(每秒平均字节数)
short int block_align; // = 每采样点字节数 : wBitsPerSample / 8 DATA数据块长度,字节。
short int bits_per_sample; // = 量化比特数: 8 | 16 PCM位宽
char data[4]; // = "data"; “fact”,该部分是可选部分,一般当WAV文件是由某些软件转换而来时,包含该部分。
int data_size; // = 纯数据长度 : FileSize - 44 数据标志符(data)
} wave_pcm_hdr;
将科大讯飞TTS代码改造成ROS节点流程
1、创建xf_tts_node节点
——初始化若干节点的消息队列
2、/voice/xf_tts_topic话题
——std_msgs/String
——2到1订阅
3、将收到的文本输入进行语音合成wav文件
——调用科大讯飞在线合成代码
——1到3回调函数
4、通过system函数来调用play命令,播放wav文件
5、其他节点
——“今天星期几”
——5发布到2话题里
编写过程
mkdir -p catkin_ws/src
cd catkin_ws/src
catkin_init_workspace
cd ..
catkin_make
cd catkin_ws/src
catkin_create_pkg voice_system roscpp rospy std_msgs
将讯飞的sample的.c文件和头文件考到voice_system
具体操作:
~/SoftWare/voice/samples/tts_sample
voice/libs/x64$ sudo cp libmsc.so /usr/lib
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。