voice_data
时间: 2023-10-12 19:06:05 浏览: 46
voice_data是一个在android google tts语音数据包中的中文语音数据包。为了实现该项目,需要设置文件路径,train文件夹下包含各个说话人的文件夹,每个文件夹独立存在且包含各自的.wav训练语音。test文件夹下包含各个待识别的.wav文件。此外,实现该项目还需要使用voicebox模块,你可以在http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html找到该模块。第一步是进行特征提取。
相关问题
import socket import numpy as np import scipy.signal as signal from scipy.fftpack import fft,ifft from scipy.stats import pearsonr import matplotlib.pyplot as pltdef is_valid(corr_arr): for i in range(0, 25): if corr_arr[i] < 0.8: return False return True if __name__ == '__main__':udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 2.绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配 dest_addr = ('192.168.4.2', 4444) # ip地址 和端口号,ip一般不用写,表示本机的任何一个ip udp_socket.bind(dest_addr) # 必须绑定自己的IP N = 32768 # 采样点数 fs = 48000 # 采样频率 n = np.arange(N) # 用于产生离散时间序列 f = n * fs / N # 生成频率序列,为后续作图做准备#将标准的chirp数据取出来作为标准 file_object = open('chirp2218.txt') try: chirp_data_str = file_object.read() chirp_data_spl = chirp_data_str.split(',') n = len(chirp_data_spl) chirp_data = np.zeros(4800, dtype=np.int16) for i in range(0, 4800): chirp_data[i] = int(chirp_data_spl[i]) finally: file_object.close() while True: recv_data = udp_socket.recvfrom(19200) n = len(recv_data[0])voice_data = recv_data[0]voice_data_del = np.zeros(9600, dtype=np.int16)
这段代码主要是一个Python程序,首先导入了一些Python的库,包括socket、numpy、scipy.signal、scipy.fftpack、scipy.stats和matplotlib.pyplot。这些库提供了一些常用的函数和工具,例如用于网络通信的socket库、用于科学计算的numpy和scipy库、用于绘图的matplotlib库等。
is_valid函数用于判断相关系数数组中的值是否满足一定的条件。具体来说,它会判断数组中第一个值是否大于0.8,如果大于则继续判断数组中后面的25个值是否都大于0.8,如果都大于则返回True,否则返回False。
在main函数中,代码首先创建了一个UDP套接字并绑定了本地的IP地址和端口号。然后定义了一些常量,包括采样点数N、采样频率fs、离散时间序列n和频率序列f。这些常量为后续的信号处理和绘图做准备。
接下来,代码从文件中读取了标准的chirp数据并将其转换为numpy数组。然后,代码进入一个无限循环,不断接收UDP数据并对其进行处理。具体来说,代码首先从接收到的数据中取出音频数据,并将其转换为numpy数组。然后,代码对音频数据进行一些处理并进行相关性分析,最后根据相关性分析的结果进行判断并输出结果。
linux shell 监控 以下目录,一个小时内文件的个数,小于1,发出返回值,$SETTLE_DATA/databackup/ctjs/H_CC08_LS $SETTLE_DATA/databackup/cdma/cctjs/ZX $SETTLE_DATA/databackup/cdma/cctjs/HW $SETTLE_DATA/databackup/IMS/SJZ $SETTLE_DATA/databackup/IMS/LF $SETTLE_DATA/databackup/ts/ngn_bak1 $SETTLE_DATA/databackup/in/17901_bak1 $SETTLE_DATA/databackup/in/4008_bak1 $SETTLE_DATA/databackup/in/smp_bak1 $SETTLE_DATA/databackup/intcdr/inter_jt_bak1 $SETTLE_DATA/databackup/cdma/htsms $SETTLE_DATA/databackup/caiE_bak1_bak1 $SETTLE_DATA/databackup/roam/prov_roam_bak1 $SETTLE_DATA/databackup/roam/inter_roam_bak1 $SETTLE_DATA/databackup/roam/prov_gprs_bak1 $SETTLE_DATA/databackup/cdma/voice $SETTLE_DATA/databackup/cdma/hwcdma $SETTLE_DATA/databackup/roam/prov_SA_gprs_bak1 $SETTLE_DATA/databackup/ims
您可以使用以下脚本来监控以上目录中一个小时内文件的个数是否小于1:
```
#!/bin/bash
# 监控目录列表
dir_list=("$SETTLE_DATA/databackup/ctjs/H_CC08_LS" "$SETTLE_DATA/databackup/cdma/cctjs/ZX" "$SETTLE_DATA/databackup/cdma/cctjs/HW" "$SETTLE_DATA/databackup/IMS/SJZ" "$SETTLE_DATA/databackup/IMS/LF" "$SETTLE_DATA/databackup/ts/ngn_bak1" "$SETTLE_DATA/databackup/in/17901_bak1" "$SETTLE_DATA/databackup/in/4008_bak1" "$SETTLE_DATA/databackup/in/smp_bak1" "$SETTLE_DATA/databackup/intcdr/inter_jt_bak1" "$SETTLE_DATA/databackup/cdma/htsms" "$SETTLE_DATA/databackup/caiE_bak1_bak1" "$SETTLE_DATA/databackup/roam/prov_roam_bak1" "$SETTLE_DATA/databackup/roam/inter_roam_bak1" "$SETTLE_DATA/databackup/roam/prov_gprs_bak1" "$SETTLE_DATA/databackup/cdma/voice" "$SETTLE_DATA/databackup/cdma/hwcdma" "$SETTLE_DATA/databackup/roam/prov_SA_gprs_bak1" "$SETTLE_DATA/databackup/ims")
# 获取当前时间
current_time=$(date +%s)
# 遍历目录列表
for dir in "${dir_list[@]}"
do
# 计算一个小时前的时间
last_hour=$((current_time-3600))
# 获取目录中最后修改时间在一个小时之内的文件个数
file_count=$(find "$dir" -type f -newermt @"$last_hour" | wc -l)
# 判断文件个数是否小于1
if [ "$file_count" -lt 1 ]; then
echo "目录 $dir 中一个小时内文件个数小于1"
exit 1
fi
done
echo "所有目录中一个小时内文件个数均不小于1"
exit 0
```
您可以将以上脚本保存为一个文件,例如 `check_file_count.sh`,然后将其添加到 crontab 中,每小时执行一次,如下所示:
```
0 * * * * /path/to/check_file_count.sh >/dev/null 2>&1
```
这将会在每个小时的第 0 分钟执行 `check_file_count.sh` 脚本,并将输出重定向到 `/dev/null`,以防止出现不必要的邮件通知。如果脚本检测到一个小时内文件个数小于1,则会以非零状态码退出,crontab 会将其视为任务执行失败并发送邮件通知。