小编shi*_*iva的帖子

使用pyaudio时,块,样本和帧是什么

在浏览了pyaudio的文档并阅读了网上的其他文章后,如果我的理解是正确的,我会感到困惑.

这是在pyaudio网站上找到的录音代码:

import pyaudio
import wave

CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

print("* recording")

frames = []

for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
    data = stream.read(CHUNK)
    frames.append(data)

print("* done recording")

stream.stop_stream()
stream.close()
p.terminate()
Run Code Online (Sandbox Code Playgroud)

如果我添加这些行,那么我可以播放我记录的任何内容:

play=pyaudio.PyAudio()
stream_play=play.open(format=FORMAT,
                      channels=CHANNELS,
                      rate=RATE,
                      output=True)
for data in frames: 
    stream_play.write(data)
stream_play.stop_stream()
stream_play.close()
play.terminate()
Run Code Online (Sandbox Code Playgroud)
  1. "RATE"是每秒收集的样本数.
  2. "CHUNK"是缓冲区中的帧数.
  3. 每帧将有2个样本作为"CHANNELS = 2".
  4. 每个样本的大小为2个字节,使用函数计算:pyaudio.get_sample_size(pyaudio.paInt16). …

python audio sampling pyaudio python-2.7

16
推荐指数
1
解决办法
2万
查看次数

何时/为什么我应该在 python 中使用 struct 库来打包和解包?

我不明白什么时候应该在 python 的结构库中使用打包和解包函数?我也无法理解如何使用它们?读完之后,我的理解是它们用于将数据转换为二进制。但是,当我运行一些示例时:

>>> struct.pack("i",34)
'"\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)

我无法理解它。我想了解它的目的,这些转换是如何发生的,'\x' 和其他符号代表什么/意味着什么以及解包如何工作。

python struct pack python-2.7

8
推荐指数
1
解决办法
1505
查看次数

运算符优先级和评估顺序

我无法理解这个程序的输出:

#include<iostream>
using namespace std;
int main()
{
    int x = 1 , y = 1, z = 1;
    cout << ( ++x || ++y && ++z ) << endl; //outputs 1;
    cout << x << " " << y << " " << z ;  //x = 2 , y = 1 , z = 1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

1
2 1 1
Run Code Online (Sandbox Code Playgroud)

如果||被评为第一,然后这个输出是好的,但是这个文章说,&&比一个更高的优先级||,因此必须首先评估.如果是这种情况那么根据我的输出应该是:

1
1 2 2
Run Code Online (Sandbox Code Playgroud)

++y …

c++ operators operator-precedence output

6
推荐指数
3
解决办法
671
查看次数

了解 ZonedDateTime::plusDays 的 javadoc

我无法理解为 ZonedDateTimeClass 中的 plusDays() 方法提供的文档的特定部分。文件指出:

\n
\n

返回添加了指定天数的此 ZonedDateTime 的副本。

\n

这在本地时间线上运行,将天数添加到本地日期时间。然后使用区域 ID 获取偏移量,将其转换回 ZonedDateTime。

\n

当转换回 ZonedDateTime 时,如果本地日期时间处于重叠状态,则如果可能,将保留偏移量,否则将使用较早的偏移量。如果存在间隙,则本地日期时间将向前调整\n间隙的长度。

\n

该实例是不可变的并且不受该方法调用的影响。

\n

参数:days \xe2\x80\x93 要添加的天数,可以为负数

\n

返回:基于此日期时间并添加了天数的 ZonedDateTime,\n不为 null

\n

抛出: DateTimeException \xe2\x80\x93 如果结果超出支持的日期\n范围

\n
\n

我的理解是:假设我们有 ZonedDateTime 对象代表September 4, 2022 6 PM in America/New_York TimeZone. 所以这个方法会先将其转换为LocalDateTime,即会丢失时区信息,只保留September 4, 2022 6 PM。它将向其添加一些天数,假设为 7,以便结果为September 11, 2022 6 PM,现在它将通过提供与时区相关的信息将其转换回 ZonedDateTime 对象。

\n

但是,我无法理解文档的后半部分,即

\n
\n

当转换回 ZonedDateTime 时,如果本地日期时间处于重叠状态,则如果可能,将保留偏移量,否则将使用较早的偏移量。如果存在间隙,则本地日期时间将向前调整\n间隙的长度。

\n
\n

他们的意思是什么local date-time is in an overlap …

java datetime java-time

6
推荐指数
1
解决办法
371
查看次数

何时/为什么使用 s.shutdown(socket.SHUT_WR)?

我刚刚开始学习python网络编程。我正在阅读 Python 网络编程基础,但无法理解 s.shutdown(socket.SHUT_WR) 的使用,其中 s 是套接字对象。这是使用它的代码(其中 sys.argv[2] 是用户想要发送的字节数,四舍五入为 16 的倍数):

import socket, sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

HOST = '127.0.0.1'
PORT = 1060

if sys.argv[1:] == ['server']:
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind((HOST, PORT))
    s.listen(1)
    while True:
        print 'Listening at', s.getsockname()
        sc, sockname = s.accept()
        print 'Processing up to 1024 bytes at a time from', sockname
        n = 0
        while True:
            message = sc.recv(1024)
            if not message:
                break
            sc.sendall(message.upper())  # send it back uppercase
            n += len(message)
            print '\r%d bytes processed …
Run Code Online (Sandbox Code Playgroud)

python sockets network-programming python-sockets

5
推荐指数
1
解决办法
8006
查看次数

colormap如何工作

我无法理解colormap它是如何工作的以及它是如何使用的.

我正在完成一个编程任务,我在其中提供了一些使用的代码colormap,但是我无法理解它究竟完成了什么.

这是一个浓缩代码:

colormap(gray);
h = imagesc(display_array, [-1 1]);
Run Code Online (Sandbox Code Playgroud)

这里display_array包含灰度图像的像素强度.

我读了这篇文章并略微理解这colormap是一个矩阵,其中包含任意数量的行和3列,其值介于0和之间1.

我检查了灰度图像中像素强度的值,-1并在和之间找到了值2.现在我无法理解mapping这个图像与colormap上面文章中提到的内容之间的关系.只是对如何发生这种情况的高层次想法会有所帮助.

matlab octave matlab-figure colormap

3
推荐指数
1
解决办法
564
查看次数