不重新编码视频,智能调整视频文件音量

以前遇到这种需要调整视频音量的情况,我可能会使用 Adobe Premiere Pro 为音频轨道加一个 Hard Limiter 的 effect,重新导出,然后用 Handbrake 再编码一次……这样做的时间成本比较高,也很可能因为重新编码而损失视频质量。最近遇到类似问题后和 AI 讨论了一个使用 Python 代码调用 FFmpeg 的方案,就只需要重新编码视频的音频部分,视频部分不受影响。

基本思路

像 *.mp4, *.mkv 这样的视频文件,是用一个容器把视频、音频、字幕等不同的数据包装在一起,所以视频、音频、字幕可以通过 FFmpeg 来分别处理。

使用 AI 生成的这段 Python 脚本,可以调用 FFmpeg 分析音频响度,自动解析 loudnorm 输出的 JSON,用分析结果进行第二遍修正,输出一个视频不重新编码、音量统一的视频文件。

音量调整有 3 个参数,按照 AI 的建议,整体听感响度按照网络视频标准设置为 -16 LUFS,峰值安全上限设置为 -1.5 dBTP 防止削波失真,动态范围约束为 11 LU 控制最大和最小音量之间的差值。如果希望详细了解可以用上一句话去请 AI 展开讲解,也可以根据自己的实际需要修改以上参数。

准备工作

需要安装 FFmpegPython

如果对安装步骤有疑问,可以直接问 AI。例如「Windows 11 系统怎样安装 FFmpeg?」

代码主体

将以下代码保存为 .py 文件,例如可以命名为 loudnorm_2pass.py。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import argparse
import json
import re
import shutil
import subprocess
import sys
from pathlib import Path
from typing import Any, Dict, List, Optional, Tuple

def run_capture(cmd: List[str]) -> subprocess.CompletedProcess:
    """
    运行命令并捕获 stdout/stderr(用于第一遍抓 JSON)。
    注意:我们会显式加 -nostdin(在 cmd 里),避免 ffmpeg 等待交互输入。
    """
    print("\n>>", " ".join(cmd))
    return subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

def run_passthrough(cmd: List[str]) -> int:
    """
    运行命令并将输出直接打印到终端(用于第二遍,让用户看到进度/报错)。
    """
    print("\n>>", " ".join(cmd))
    p = subprocess.run(cmd)
    return p.returncode

def must_exist_executable(name: str) -> None:
    if shutil.which(name) is None:
        raise SystemExit(f"未找到 {name}。请先安装并确保 {name} 在 PATH 中。")

def resolve_path(p: str) -> str:
    return str(Path(p).expanduser().resolve())

def ffprobe_audio_streams(input_path: str) -> Tuple[int, Dict[str, Any]]:
    """
    返回 (音频流数量, ffprobe 原始 JSON)。
    """
    must_exist_executable("ffprobe")
    cmd = [
        "ffprobe",
        "-hide_banner",
        "-v", "error",
        "-print_format", "json",
        "-show_streams",
        "-select_streams", "a",
        input_path,
    ]
    r = run_capture(cmd)
    if r.returncode != 0:
        raise SystemExit(f"ffprobe 失败:\n{r.stderr}")
    try:
        data = json.loads(r.stdout)
    except json.JSONDecodeError:
        raise SystemExit("ffprobe 输出解析失败(非 JSON)。")
    streams = data.get("streams", []) or []
    return len(streams), data

def find_last_json_object(text: str) -> Dict[str, Any]:
    """
    从 ffmpeg stderr 中提取 loudnorm 的 JSON 块。
    采用“取最后一个 { 到最后一个 }”的策略,并验证必须包含 loudnorm 关键字段。
    """
    start = text.rfind("{")
    end = text.rfind("}")
    if start == -1 or end == -1 or end <= start:
        raise RuntimeError("未在 FFmpeg 输出中找到 loudnorm JSON。请确认第一遍使用了 print_format=json,且输入包含音频流。")

    blob = text[start:end + 1].strip()
    try:
        obj = json.loads(blob)
    except json.JSONDecodeError as e:
        raise RuntimeError(f"解析 loudnorm JSON 失败:{e}\nJSON片段:\n{blob}")

    # loudnorm JSON 的关键字段校验
    for k in ("input_i", "input_tp", "input_lra", "input_thresh"):
        if k not in obj:
            raise RuntimeError(f"找到的 JSON 不像 loudnorm 输出,缺少字段 {k}\nJSON片段:\n{blob}")

    return obj
    raise RuntimeError("未在 FFmpeg 输出中找到 loudnorm JSON。请确认第一遍使用了 print_format=json,且输入包含音频流。")

def main() -> None:
    parser = argparse.ArgumentParser(
        description="Two-pass EBU R128 loudnorm: copy video, normalize audio; robust non-interactive workflow."
    )
    parser.add_argument("input", help="Input video file (e.g., input.mp4)")
    parser.add_argument("output", help="Output video file (e.g., output.mp4)")

    parser.add_argument("--I", default="-16", help="Target integrated loudness (LUFS), default -16")
    parser.add_argument("--TP", default="-1.5", help="Target true peak (dBTP), default -1.5")
    parser.add_argument("--LRA", default="11", help="Target loudness range, default 11")

    parser.add_argument("--audio-index", type=int, default=0, help="Which audio stream index to process, default 0 (i.e., 0:a:0)")
    parser.add_argument("--audio-codec", default="aac", help="Audio codec for output, default aac")
    parser.add_argument("--audio-bitrate", default="192k", help="Audio bitrate, default 192k")

    parser.add_argument("--keep-subtitles", action="store_true", help="Copy subtitle streams if present (0:s?)")
    parser.add_argument("--no-overwrite", action="store_true", help="Do not overwrite output if it exists (default: overwrite with -y)")
    parser.add_argument("--max-muxing-queue-size", type=int, default=1024, help="Set FFmpeg -max_muxing_queue_size, default 1024")

    args = parser.parse_args()

    must_exist_executable("ffmpeg")
    must_exist_executable("ffprobe")

    inp = resolve_path(args.input)
    out = resolve_path(args.output)

    # 0) 预检查:音频流是否存在
    audio_count, _ = ffprobe_audio_streams(inp)
    if audio_count == 0:
        raise SystemExit("输入文件未检测到任何音频流(audio stream)。无法进行 loudnorm 处理。")
    if args.audio_index < 0 or args.audio_index >= audio_count:
        raise SystemExit(f"--audio-index={args.audio_index} 超出范围:此文件音频流数量为 {audio_count}(有效范围 0..{audio_count-1})。")
    if audio_count > 1:
        print(f"提示:检测到 {audio_count} 条音频流。本脚本默认只处理 0:a:{args.audio_index}(可用 --audio-index 指定)。")

    # 输出文件覆盖策略
    if Path(out).exists() and args.no_overwrite:
        raise SystemExit(f"输出文件已存在且启用了 --no-overwrite:{out}")

    # 1) Pass 1: analysis
    analysis_filter = f"loudnorm=I={args.I}:TP={args.TP}:LRA={args.LRA}:print_format=json"
    cmd1 = [
        "ffmpeg",
        "-hide_banner",
        "-nostdin",         # 关键:禁止交互输入,避免“看似卡死”
        "-i", inp,
        "-map", f"0:a:{args.audio_index}",
        "-filter:a", analysis_filter,
        "-f", "null", "-"
    ]
    r1 = run_capture(cmd1)
    if r1.returncode != 0:
        print(r1.stderr, file=sys.stderr)
        raise SystemExit("第一遍分析失败。")

    info = find_last_json_object(r1.stderr)

    # 必要字段
    measured_I = info.get("input_i")
    measured_TP = info.get("input_tp")
    measured_LRA = info.get("input_lra")
    measured_thresh = info.get("input_thresh")

    print("\n=== Pass1 measurement ===")
    print(json.dumps(info, ensure_ascii=False, indent=2))

    # 2) Pass 2: normalization
    norm_filter = (
        f"loudnorm=I={args.I}:TP={args.TP}:LRA={args.LRA}:"
        f"measured_I={measured_I}:measured_TP={measured_TP}:"
        f"measured_LRA={measured_LRA}:measured_thresh={measured_thresh}"
    )

    cmd2 = [
        "ffmpeg",
        "-hide_banner",
        "-nostdin",
        "-y" if not args.no_overwrite else "-n",  # -y 覆盖;-n 不覆盖
        "-i", inp,
        "-map", "0:v",
        "-map", f"0:a:{args.audio_index}",
        "-c:v", "copy",
        "-filter:a", norm_filter,
        "-c:a", args.audio_codec,
        "-b:a", args.audio_bitrate,
        "-max_muxing_queue_size", str(args.max_muxing_queue_size),
        "-movflags", "+faststart"
    ]

    if args.keep_subtitles:
        cmd2 += ["-map", "0:s?"]  # 若存在字幕流则复制

    cmd2 += [out]

    # 第二遍建议直通输出,用户能看到进度与报错
    rc2 = run_passthrough(cmd2)
    if rc2 != 0:
        raise SystemExit("第二遍处理失败。")

    print("\n完成。输出文件:", out)

if __name__ == "__main__":
    main()

运行方式

在命令行中执行以下代码

python loudnorm_2pass.py input.mp4 output.mp4

注意将 Python 脚本、输入输出视频文件修改为正确的路径,例如

python "D:\loudnorm_2pass.py" "D:\Cuts\TownScaper.mp4" "D:\Cuts\TownScaper_2.mp4"

注意 output.mp4 这部分是新生成的视频文件的路径,如果该文件已经存在将被覆盖。

如果视频文件有多个音轨,可以加入 –audio-index 参数运行。

知识只属于人类吗?

Why is it that when a human draws a fern it is art, but when matter grows into a fern, it is not? When humans keep track of a solar day with a calendar, we call this science, but when plants do it, we call it mechanical response. Why? Plants may not write out mathematical formulas on paper with pencils, but in some sense don’t they perform the most daring non-linear equations with their fractal limbs?

为什么人画出蕨类植物被称为艺术,而物质生长成蕨类植物却不是?当人类用日历记录太阳日时,我们称之为科学,而当植物做同样的事情时,我们却称之为机械反应。为什么?植物不会用铅笔在纸上写出数学公式,但从某种意义上说,它们难道不通过分形般的枝叶完成了最大胆的非线性方程吗?

Nail, T. (2022) Theory of the Object

Clear as Mud

By 1945 top economics departments in the United States were filled with young scholars who had both learned and implemented (through direct policymaking) the new economic ideas of the day. The time was ripe for a new textbook that could teach these ideas to the largest generation of students (expanded massively by the GI Bill) ever to attend college. And no one thought for a moment that Keynes’s great book could serve as such an introduction: the exposition of ideas in that text was obtuse and impenetrable — clear as mud. (Chambers, 2022, p. x)

到 1945 年,美国顶尖的经济学系充满了年轻的学者。他们学习并且(通过直接制定政策)实施了新的经济学思想。当时又迎来了最大规模的大学新生。引入新教材讲授这些经济学思想的时机已经成熟。然而,没有人想过要把凯恩斯的巨著作为入门教材。那本书写得晦涩难懂,清晰如泥。

Chambers, S. A. (2022). Capitalist Economics. Oxford University Press

(as) clear as mud

[humorous] very difficult to understand (Cambridge, Macmillan dictionary)

His instructions were as clear as mud.

His explanation was as clear as mud.

真实的统计数据也会骗人

2022 年 4 月 3 日,国内媒体转述了俄罗斯官员的说法,称「美国强迫欧洲制裁俄罗斯的同时,在最近一周自己购买俄罗斯石油的量却增加了 43%,达到了每天 10 万桶。但是美国却不允许欧洲这样做」。西方主流媒体未见报道,但能搜到一些没听说过名字的英文网站刊载了这条新闻。

出于好奇,我就现查了一些数据。发现这是一个很好的例子,怎样用真实的数据误导大众。

美国能源信息署 (Energy Information Administration, EIA) 官网(国内可以直接访问)上可以查到数据来源。Weekly Preliminary Crude Imports by Top 10 Countries of Origin (ranking based on 2020 Petroleum Supply Monthly data)

https://www.eia.gov/dnav/pet/pet_move_wimpc_s1_w.htm

2022 年 3 月第 4 周比第 3 周增加了 43% (100/70-1) 不假,但看到这条新闻的人里有多少知道美国从俄罗斯进口的原油只占是前十大来源总和的 1.8% (100/5533) 呢?而增加 43% 之前的占比是 1.2% (70/5867)。还可以用这个网站上的历史数据画个图表看看趋势。

添加图片注释,不超过 140 字(可选)

还可以用这个历史数据画个面积图看看俄罗斯原油的占比从 2021 年下半年至今变动情况(顶部灰色下方的棕色区域)。

添加图片注释,不超过 140 字(可选)

同样来自这个网站的数据,2021 年荷兰、德国、波兰和其他 OECD 欧洲国家进口的俄罗斯石油是每天 2.33 百万桶,同期美国进口的数据是 0.20,中国是 1.41。Europe is a key destination for Russia’s energy exports

https://www.eia.gov/todayinenergy/detail.php?id=51618

搜索过程中还发现了这些媒体文章,能够相互印证:

How much oil does the US get from Russia? | Al Jazeera 2022/3/3
美国从俄罗斯得到多少石油?| 半岛电视台网 2022/3/3

Here’s where Russian oil flows: The countries that import Russian crude and other petroleum products — and what it would take to turn off the spigot | The Washington Post, 2022/3/8

An EU ban on Russian oil would be self-defeating | Quartz 2022/3/22

了解俄乌冲突的中文资料推荐

播客节目

悬崖边上的乌克兰:过去、现在与未来
王磬、路尘「不合时宜」
2022 年 2 月 26 日

349. 乌克兰和俄罗斯,有怎样的历史纠缠?
348. 俄罗斯和北约,有过怎样的“爱恨情仇”?
347. 乌克兰危机是怎么回事,会给我们带来什么影响?
梁文道「八分」
2022 年 2 月 18 日, 23 日, 25 日

项飙专访:俄乌战争与日常意义
项飙、吴琦「螺丝在拧紧」
2022 年 4 月 7 日

文章

俄罗斯和乌克兰,何以至此?
「看理想」微信公众号
2022 年 2 月 25 日
(整理自「八分」347, 348 两期的内容)

乌克兰:“欧洲之门”的困境
孔田平《世界知识》2022 年第 5 期
(极简乌克兰史)

民族意识与帝国思维:乌克兰独立与俄乌纷争
韩克敌《俄罗斯东欧中亚研究》2020 年第 6 期

欧洲一体化与乌克兰的道路选择
陈新《欧洲研究》2014 年第 6 期
(讨论 2013—2014 年的乌克兰危机)

《韩非子》里的趣事

零零星星翻译过几个,忘记可以发在这里了。

原文粘贴自「中國哲學書電子化計劃」,白话文是在参考了《读古人书之〈韩非子〉》(邵永海,2017)的译文之后自己改写的。

1

秦王问公子汜要不要跟三国联军割地讲和。公子汜说,反正讲和你也要后悔,不讲和你也要后悔。讲和了,你要说本来不割地人家也会退兵,白割了。不讲和,联军继续攻城略地,你又要说早知道当时讲和了……秦王一想,宁可后悔地白割了,也不能等国家危急了后悔当时没讲和,于是就讲和了。

三國兵至韓,秦王謂樓緩曰:「三國之兵深矣,寡人欲割河東而講,何如?」對曰:「夫割河東,大費也;免國於患,大功也。此父兄之任也,王何不召公子氾而問焉?」王召公子氾而告之,對曰:「講亦悔,不講亦悔。王今割河東而講,三國歸,王必曰:三國固且去矣,吾特以三城送之。不講,三國也入韓,則國必大舉矣,王必大悔,王曰:不獻三城也。臣故曰:王講亦悔,不講亦悔。」王曰:「為我悔也,寧亡三城而悔,無危乃悔。寡人斷講矣。」(《韓非子·內儲說上》)

2

秦相甘茂的手下偷听到秦王对公孙衍说要请他做丞相。甘茂就跑到秦王面前说,恭喜大王找到新丞相了啊。秦王说我已经有你了,哪有什么新丞相。甘茂说,你不是要请公孙衍做丞相吗?秦王问甘茂你怎么知道。甘茂说公孙衍告诉我的啊。秦王觉得公孙衍是个大嘴巴,一怒之下就把他放逐了……

甘茂相秦惠王,惠王愛公孫衍,與之閒有所言,曰:「寡人將相子。」甘茂之吏道穴聞之,以告甘茂,甘茂入見王,曰:「王得賢相,臣敢再拜賀。」王曰:「寡人託國於子,安更得賢相?」對曰:「將相犀首。」王曰:「子安聞之?」對曰:「犀首告臣。」王怒犀首之泄,乃逐之。(《韓非子·外儲說右上》)

3

楚怀王的夫人知道怀王有了新欢,就表现出自己也特别喜欢这位新人的样子。怀王对夫人很赞赏,觉得她是孝子忠臣的榜样。后来,夫人对新欢说,大王虽然很喜欢你,但不太喜欢你的鼻子,你最好经常把鼻子遮住,大王才会更喜欢你。新人按夫人的话照做了。怀王就问夫人,她怎么老是遮着鼻子?夫人说不知道。怀王一再逼问。夫人说,之前听她说讨厌大王的气味。怀王大怒,让人割掉了新人的鼻子……

一曰。魏王遺荊王美人,荊王甚悅之,夫人鄭袖知王悅愛之也,亦悅愛之,甚於王,衣服玩好擇其所欲為之,王曰:「夫人知我愛新人也,其悅愛之甚於寡人,此孝子所以養親,忠臣之所以事君也。」夫人知王之不以己為妒也,因為新人曰:「王甚悅愛子,然惡子之鼻,子見王,常掩鼻,則王長幸子矣。」於是新人從之,每見王,常掩鼻,王謂夫人曰:「新人見寡人常掩鼻何也?」對曰:「不己知也。」王強問之,對曰:「頃嘗言惡聞王臭。」王怒曰:「劓之。」夫人先誡御者曰:「王適有言,必可從命。」御者因揄刀而劓美人。(《韓非子·內儲說下》)

4

子圉将孔子引荐给宋国太宰。孔子离开后,太宰对子圉说:「我见过孔子之后,看你就像看跳蚤虱子,我马上让孔子去见国君。」子圉对太宰说:「国君见了孔子,也会把你当跳蚤虱子的……」于是太宰没有向国君推荐孔子。

子圉見孔子於商太宰,孔子出,子圉入,請問客,太宰曰:「吾已見孔子,則視子猶蚤蝨之細者也。吾今見之於君。」子圉恐孔子貴於君也,因謂太宰曰:「君已見孔子,亦將視子猶蚤蝨也。」太宰因弗復見也。(《韓非子·說林上》)

哲学阅读指南 by Jim Pryor

Guidelines on Reading Philosophy

初译:搜狗翻译
改订:唐逍

It will be difficult for you to make sense of some of the articles we’ll be reading. This is partly because they discuss abstract ideas that you’re not accustomed to thinking about. They may also use technical vocabulary which is new to you. Sometimes it won’t be obvious what the overall argument of the paper is supposed to be. The prose may be complicated, and you may need to pick the article apart sentence by sentence. Here are some tips to make the process easier and more effective.

我们要阅读的一些哲学文章会很难理解。你可能还不习惯思考抽象的概念,或者这些文章用了让你陌生的术语。有时候,文章的整体论证也不明显,你可能需要一句一句地把文章拆开。接下来我会讲一些技巧,让你的阅读变得更加简单有效。

Skim the Article to Find its Conclusion and Get a Sense of its Structure
快速浏览文章,找到结论,把握结构

A good way to begin when you’re trying to read a difficult article is to first skim the article to identify what the author’s main conclusion is. Pay special attention to the opening and closing paragraphs, since authors will often tell you there what they intend to be arguing for. When you do figure out what the author’s main conclusion is, try to restate it in your own words. This will help you to be sure that you really understand what the author is arguing for.

阅读困难文章的一个技巧是,首先快速浏览,找出作者的主要结论。重点浏览开头和结尾的那几段,作者往往会在开头和结尾表露自己的论证意图。弄清作者的主要结论之后,试着用你自己的话重新表述这个结论。这会帮助你确认自己是不是真正理解了作者的论点。

When you’re skimming the article, try also to get a general sense of what’s going on in each part of the discussion. What is the structure of the article? Sometimes authors will tell you, early in the paper, what their argument will look like. This makes your job easier.

快速浏览文章的时候,试着大致把握讨论的各个部分。这篇文章的结构是什么?有时候作者会在论文的开篇告诉你他们会怎样论证,这会减轻你把握文章结构的负担。

The articles we read won’t always have a straightforward structure. They won’t always be of the form:

我们阅读的文章,并不会都有简单直白的结构,不会总是像这样:

This is the conclusion I want you to accept. Here is my argument for that conclusion…

这是我希望你接受的结论。以下是我的证明……

Philosophers often provide auxiliary arguments, arguments for important premises they appeal to in support of their main conclusion. For instance, the author’s discussion may have the form:

哲学作者常常提供辅助论证。要得出文章的主要结论,需要一些重要的前提。辅助论证就是为这些前提提供依据。例如,作者的讨论可能出现这样的形式:

The conclusion I want you to accept is A. My argument for this conclusion is as follows: B and C are true, and if B and C are true, then A must also be true. It is generally accepted that B is true. However, it is controversial whether C is true. I think you ought to accept C for the following reasons…

我希望你接受的结论是 A,以下是我的论证:已知命题 B 和 C 正确,如果 B 和 C 都对,那么 A 一定对。大家普遍认同 B 正确。但是 C 对不对还有争议。我认为你应该接受 C,理由如下……

Here the author’s main argument is for the conclusion A, and in the process of arguing for A he advances an auxiliary argument in support of C. Try to identify these auxiliary arguments, and the claims they’re intended to support; and try to avoid mistaking one of these auxiliary arguments for the author’s main argument.

这里作者的主要论证是证明结论 A,在证明结论 A 的过程中,他提出了一个辅助论证来支持命题 C。(然后再用 C 论证 A。)试着找出这些辅助论证以及辅助论证想要支持的论点,不要混淆辅助论证和主要论证。

Articles can be complex in other ways, too. Not everything the author says will be a positive conclusion or a premise in support of his conclusion. Sometimes he’ll be supporting his view with a thought-experiment. Sometimes he’ll be arguing for a distinction which his positive view relies on. Sometimes he’ll be arguing that another philosopher’s views or arguments ought to be rejected. Sometimes he’ll be defending a view against somebody else’s objections.

文章还有可能难在其他方面。并不是作者说的每一句话都是正面结论或者支持结论的前提。有时作者会讲思想实验,有时会提出一种区分,有时会论证应该拒绝某个其他作者的观点或论证,有时会为了捍卫某个观点反对其他作者的反对意见。

Keep an eye out for words like these when you’re reading:

  • because, since, given this argument
  • thus, therefore, hence, it follows that, consequently
  • nevertheless, however, but
  • in the first case, on the other hand

阅读时请留意表达这些意思的关联词:

因为;所以;但是;一方面,另一方面……

These are signposts which help you keep track of the structure of the discussion. For example, one philosophy article might run as follows:

这些关联词是帮助你随时把握讨论结构的路标。例如,一篇哲学文章可能这样写:

Philosopher X advanced the following argument against dualism…The dualist has two responses to X’s argument. First…However, this response runs into problems, because…A better response for the dualist says…X might be tempted to counter as follows… However…

哲学家 X 提出了以下论证来反对二元论……二元论者对 X 的论证有两种回应。首先……然而,这一回应遇到了问题,因为……对二元论者来说更好的回应是……X 可能会这样反驳……然而……

and so on. The words “first” and “however” and “a better response” make it easy to see where the discussion is going. You’ll also want to put signposts like these in your own philosophical writing.

诸如此类。「首先」、「然而」、「更好的回应」这些词让我们很容易看清讨论的走向。你也会希望在你自己的哲学写作中放置这样的路标。

Here’s another example:

下面是另一个例子:

The skeptic says that we can’t tell whether we’re seeing things as they really are, or whether we’re brains in vats being force-fed false experiences, like the inhabitants of The Matrix. Y raised the following objection to the skeptic… Hence, Y concludes, we have no reason to think our situation is as bad as the skeptic makes it out to be. This is an attractive response to the skeptic, but I don’t think it can really work, for the following reason…Y might respond to this problem in one of two ways. The first way is… However, this response fails because…The second way Y might respond is… However, this response also fails because…So in the end I think Y’s objection to the skeptic can not be sustained. Of course, I’m not myself a skeptic. I agree with Y that the skeptic’s conclusion is false. But I think we’ll have to look harder to see where the flaw in the skeptic’s reasoning really is.

怀疑论者说,我们无从知晓自己看到的是事物的本来面貌,还是我们是被灌输错误体验的缸中之脑,就像《黑客帝国》里的人那样。作者 Y 向怀疑论者提出了以下反对意见……因此,Y 得出结论,我们没有理由认为我们的处境像怀疑论者所说的那样糟糕。这一回应对反对怀疑论来说很有吸引力,但我并不认为它真的驳倒了怀疑论,理由如下……Y 可能会用这两种方式来回应。第一种是……然而,这一回应站不住脚,因为……Y 的第二种回应方法是……然而,这一回应也不成立,因为……综上,我认为 Y 对怀疑论的反驳不能成立。当然,我自己并不是怀疑论者。我和 Y 一样,也认为怀疑论的结论是错的。但我们要更努力地寻找怀疑论的推理究竟错在哪里。

In this article, the author spends most of his time defending the skeptic against Y’s objections, and considering possible responses that Y might give. The author’s main conclusion is that Y’s objection to the skeptic does not work. (Notice: the main conclusion isn’t that skepticism is true.)

在这篇文章中,作者花了大部分时间为怀疑论者辩护,驳斥了 Y 的反对意见,还考虑了 Y 可能给出的回应。作者的主要结论是,Y 对怀疑论者的反驳不成立。(注意:主要结论并不是「怀疑论是对的」。)

Go Back and Read the Article Carefully
再次仔细阅读

When you’ve figured out what the main conclusion of an article is, and what the overall structure of the article is, go back and read the article carefully. Pay attention to how the various parts fit together.

在你弄清楚文章的主要结论和整体结构之后,再回头仔细阅读。特别注意各个部分是怎样连接在一起的。

  • Most importantly, figure out what the author’s central argument(s) are. What reasons does he offer in support of his conclusions? Where in the article does he put these reasons forward?
  • 最重要的是,弄清哪些是作者的中心论证,作者提出的支持结论的理由是什么,他在文章的什么位置提出了这些理由。

Also keep an eye out for the following:

同时注意以下几点:

  • Notice where the author says explicitly what he means by a certain term.
  • 注意作者明确解释某个术语的地方。
  • Notice what distinctions the author introduces or argues for.
  • 注意作者引入或者主张了什么区分。
  • Take special notice of any unargued assumptions you think the author is relying on.
  • 特别注意作者论证时依赖的隐含前提。
  • Consider various interpretations of what he says. Are there any important ambiguities that his argument fails to take account of?
  • 考虑作者观点的多种解释。作者论证中有没有忽略什么应该进一步澄清的内容?

All of these things will help you to understand the article better. And they’ll be crucial when you’re trying to evaluate the author’s argument, and deciding whether or not you should accept his conclusion.

这些都会帮助你更好地理解文章,对你评价作者的论证,决定要不要接受他的结论也至关重要。

In your notes, you might make a quick outline of the article’s major argumentative “pieces.” Draw arrows to diagram how you think those pieces fit together. If you can’t do this, then you need to go back and look at the article again to get a better understanding of what the author is up to.

你做笔记的时候,可以快速找出文中主要论点,并且用箭头把各种前提和论点连接起来。如果你做不到,那你就需要回去再看一遍文章,更好地理解作者的论证意图。

You should expect to read a philosophy article more than once. I’ve been doing philosophy for more than ten years and I still have to read articles many times before I fully understand them. Intellectually digesting a philosophy article takes time, effort, and concentration. You definitely won’t understand everything in the article the first time you read it, and there may be some parts of the article you don’t understand even after reading them several times. You should ask questions about these parts of the article (in class or after class or in section, as you judge appropriate). You could say:

阅读哲学文章,你应该有不会只读一次的预期。我做哲学十几年了,很多文章仍然要看很多遍才能完全理解。理解消化一篇哲学文章需要时间、努力和专注。第一次看的时候肯定不会把文章里的所有内容都看懂,甚至有些部分看了好几遍还是不理解。这时,你应该在课堂上、在课后、或者在小组内提问,你可以说:

What is going on on p. 13? Descartes says X, but I don’t see how this fits in with his earlier claim Z. Is X supposed to follow from Z? Or is he trying here to give an argument for Z? If so, why does he think that X would be a reason in favor of Z?

第 13 页在讨论什么?笛卡尔说 X,但是我不明白这和他之前的观点 Z 是怎么联系起来的。他是说 X 可以从 Z 推导出来吗?还是他在用 X 论证 Z?如果是用 X 论证 Z,为什么 X 可以作为支持 Z 的理由?

Evaluate the Author’s Arguments
评价作者的论证

Obviously, you’re only in a position to evaluate an author’s argument when you’ve done the work of figuring out what it is he’s really saying, and how his arguments work.

显然,只有当你搞清楚作者真正在说什么,以及他的论证是怎样成立之后,你才能评价他的论证。

When you come to that point, you can start asking questions like these: Do you agree with the author? If not, what do you think is wrong with his reasoning? Does he appeal to some premise which you think is false? (Why do you think it is false?) Is there some assumption which the author does not make explicit, but which you think is false? Does his argument equivocate or beg the question?

当你走到这一步,你可以开始问这些问题:你同意作者的观点吗?如果不同意,你觉得作者的推理错在哪儿?你认为作者的某些前提是错的吗?(为什么这些前提是错的?)有没有作者没有明确提出,但你认为是错误的假设?作者的论证有偷换概念 (equivocate) 或者在前提中就已经假定了结论 (beg the question) 等问题吗?

You will often feel that the debates we examine are tangled messes and you don’t know whose argument to believe. There’s no escaping this. I feel this way all the time. All I can say is, if you work hard, you will be able to make some sense of the mess. You’ll start to get a sense of how the different views relate to each other and what their pros and cons are. Eventually, you may realize that things are even messier than you thought, which will be frustrating, and you’ll have to go back to the drawing board. This can happen over and over again. You may never reach any definitive conclusion. But each time you try to make sense of the debate, you’ll find you understand the issues a little bit better. That’s the way we make progress in philosophy. It never gets easier than that.

你会经常感到我们考察的争论一团乱麻,不知道该相信谁的论证。这无可避免。我一直都有这样的感觉。我只能说,如果你努力,你就能理清其中的一部分。你会开始了解不同的观点如何相互关联,它们各自的优势和不足。也有可能你最终发现事情比你想象的还要混乱,这令人沮丧,你将不得不重新开始。这可能会一次又一次地发生。你可能永远不会得出任何明确的结论。但每次你试图理解这场争论,你会发现自己对问题的理解有一点点提高。这就是我们在哲学上取得进步的方式,没有捷径可走。

Sometimes one philosophical issue leads into three other issues, which themselves lead into yet other issues… and you can’t possibly explore all of the relevant connections right then. So you’ll have to learn to make do without definitive answers. You may not be able to come to a settled view about whether you should accept some philosopher’s argument, because that turns on further issues P, Q, and R, which you haven’t figured out yet. That’s perfectly normal. Your philosophy professors often feel this way themselves, about many of the arguments they read.

有时一个哲学问题会引出另外三个问题,而这三个问题本身又会引出其他问题……你不可能立刻研究所有这些关联的问题。所以你必须学会妥协,接受一个问题没有明确的答案。你可能无法确定是否应该接受某个哲学家的论证,因为你还没有弄清楚的进一步的问题 P、Q 和 R。这完全正常。你们的哲学教授在阅读时也经常有这种感觉。

Other times, you may be sure that some argument is flawed, but you won’t have the time and resources to figure out, or explain and argue for, everything you think is wrong with the argument. In such cases, you may want to provisionally accept one of the argument’s premises, and move on to focus on other premises, which you think are more important or which are easier to criticize. (This is why you often hear philosophers saying, “Even if we assume such-and-such for argument’s sake, I still think X’s argument fails, because…”)

其他时候,你可能很确定某个论证是错的,但你没有时间和资源去理清、解释和争论整个论证。这时,你可能会想姑且接受某个前提,然后从其他更重要或更容易反驳的前提入手。(这就是为什么你经常听到哲学家说,「就算我们为了论证假设什么什么是对的,我仍然认为 X 的论证是失败的,因为……」)

Created and maintained by jim.pryor@nyu.edu
This work licensed under a Creative Commons License
URL: http://www.jimpryor.net/teaching/guidelines/reading.html
Updated: 10-Aug-06 10:42 PM

学术写作指南

上周开始看 Writing Your Journal Article in Twelve Weeks 这本书,有种十年前就该学这些内容的感觉。尤其是这本书里讲的,一定要每天坚持至少十五分钟的写作,不要等,不要等,搞创作要积少成多。

Writing is to academia what sex was to nineteenth-century Vienna: everybody does it and nobody talks about it. A leading scholar of productivity found that most academics were more willing to talk about their most personal problems, including sexual dysfunction, than about problems with writing (Boice 1990, 1). The prevalent belief among academics seems to be that writing, like sex, should come naturally, and should be performed in polite privacy.

Wendy Laura Belcher. 2019. Writing Your Journal Article in Twelve Weeks. p. 15

No matter how busy your life is, make a plan for writing. Successful academic writers don’t wait for inspiration. They don’t wait until the last minute. They don’t wait for big blocks of time. They make a plan for writing five days a week, and they strive to stick to it. Much of this workbook will be devoted to helping you develop writing into a habit. Short and steady sessions will win the race: “With but a few exceptions, writers who remained in a schedule requiring an hour or less a weekday of writing mastered a sequence of strategies for remaining truly productive over long periods of time” (Boice 1990, 3). As an anonymous person wisely commented online, “The only thing that improves writing is writing.”

Wendy Laura Belcher. 2019. Writing Your Journal Article in Twelve Weeks. pp. 18–19