ZuodaoTech / everyone-can-use-english

人人都能用英语
https://1000h.org
Mozilla Public License 2.0
25.31k stars 3.8k forks source link

录音之后, 看不到自己的录音内容。 #283

Closed zhuligs closed 9 months ago

zhuligs commented 9 months ago

在很早之前的版本是没有问题的。 自从某次升级之后(记不清是哪次升级了),录音之后就看不到自己的录音文件了。就像完全没有录音一样。 自己试了把软件删掉重装也没有用。

就如下面这个截图,录音之后,下面仍然是空白。

Screenshot 2024-02-07 at 11 34 01 PM
an-lee commented 9 months ago

现在是用最新版本吗?应该是会请求录音权限的,可以查一下录音权限是否正常

zhuligs commented 9 months ago

是从 github 拉下来的最新版。录音权限应该是正常的。 我下载编译好的版本,Mac 总是提示“ enjoy” is damaged and can’t be opened. You should move it to the Trash.”

我把从 terminal 启动后的信息贴出来,也许有些有用的信息。

`✔ Checking your system ✔ Locating application ✔ Loading configuration ✔ Preparing native dependencies: 1 / 1 [0.4s] ✔ Running generateAssets hook ⠙ [plugin-vite] Launching dev servers for renderer process code ◼ [plugin-vite] Compiling main process code [vite-plugin-static-copy] Collected 11 items. ✔ [plugin-vite] Launching dev servers for renderer process code [0.1s] ⠹ [plugin-vite] Compiling main process code vite v4.5.1 building for development...

watching for file changes... vite v4.5.1 building for development...

watching for file changes...

build started...

✔ [plugin-vite] Launching dev servers for renderer process code [0.1s] ⠼ [plugin-vite] Compiling main process code ✔ [plugin-vite] Launching dev servers for renderer process code [0.1s] ✔ [plugin-vite] Launching dev servers for renderer process code [0.1s] ⠋ [plugin-vite] Compiling main process code computing gzip size (6)...[vite-plugin-static-copy] Copied 15 items. .vite/build/main.js 0.47 kB │ gzip: 0.19 kB .vite/build/api_chain-2100207d.js 3.42 kB │ gzip: 1.20 kB .vite/build/few_shot-2e7084df.js 3.71 kB │ gzip: 1.14 kB .vite/build/vector_db_qa-0da115c4.js 3.99 kB │ gzip: 1.37 kB .vite/build/sequential_chain-bc3d0ecc.js 5.46 kB │ gzip: 1.68 kB .vite/build/combine_docs_chain-e8457423.js 7.82 kB │ gzip: 1.72 kB ✔ [plugin-vite] Launching dev servers for renderer process code [0.1s] ✔ [plugin-vite] Compiling main process code [6s]

2024-02-08 08:58:30.184 Electron[73745:8991778] WARNING: Secure coding is automatically enabled for restorable state! However, not on all supported macOS versions of this application. Opt-in to secure coding explicitly by implementing NSApplicationDelegate.applicationSupportsSecureRestorableState:. 08:58:32.472 (settings) › ffmpeg config { os: 'darwin', arch: 'arm64', commandExists: true, ffmpegPath: '/opt/homebrew/bin/ffmpeg', ffprobePath: '/opt/homebrew/bin/ffprobe', ready: true } 08:58:32.517 (whisper) › stderr usage: /Users/li/zice/hack/everyone-can-use-english/enjoy/.vite/build/lib/whisper/main [options] file0.wav file1.wav ...

options: -h, --help [default] show this help message and exit -t N, --threads N [4 ] number of threads to use during computation -p N, --processors N [1 ] number of processors to use during computation -ot N, --offset-t N [0 ] time offset in milliseconds -on N, --offset-n N [0 ] segment index offset -d N, --duration N [0 ] duration of audio to process in milliseconds -mc N, --max-context N [-1 ] maximum number of text context tokens to store -ml N, --max-len N [0 ] maximum segment length in characters -sow, --split-on-word [false ] split on word rather than on token -bo N, --best-of N [5 ] number of best candidates to keep -bs N, --beam-size N [5 ] beam size for beam search -wt N, --word-thold N [0.01 ] word timestamp probability threshold -et N, --entropy-thold N [2.40 ] entropy threshold for decoder fail -lpt N, --logprob-thold N [-1.00 ] log probability threshold for decoder fail -debug, --debug-mode [false ] enable debug mode (eg. dump log_mel) -tr, --translate [false ] translate from source language to english -di, --diarize [false ] stereo audio diarization -tdrz, --tinydiarize [false ] enable tinydiarize (requires a tdrz model) -nf, --no-fallback [false ] do not use temperature fallback while decoding -otxt, --output-txt [false ] output result in a text file -ovtt, --output-vtt [false ] output result in a vtt file -osrt, --output-srt [false ] output result in a srt file -olrc, --output-lrc [false ] output result in a lrc file -owts, --output-words [false ] output script for generating karaoke video -fp, --font-path [/System/Library/Fonts/Supplemental/Courier New Bold.ttf] path to a monospace font for karaoke video -ocsv, --output-csv [false ] output result in a CSV file -oj, --output-json [false ] output result in a JSON file -ojf, --output-json-full [false ] include more information in the JSON file -of FNAME, --output-file FNAME [ ] output file path (without file extension) -ps, --print-special [false ] print special tokens -pc, --print-colors [false ] print colors -pp, --print-progress [false ] print progress -nt, --no-timestamps [false ] do not print timestamps -l LANG, --language LANG [en ] spoken language ('auto' for auto-detect) -dl, --detect-language [false ] exit after automatically detecting language --prompt PROMPT [ ] initial prompt -m FNAME, --model FNAME [models/ggml-base.en.bin] model path -f FNAME, --file FNAME [ ] input WAV file path -oved D, --ov-e-device DNAME [CPU ] the OpenVINO device used for encode inference -ls, --log-score [false ] log best decoder scores of tokens -ng, --no-gpu [false ] disable GPU

08:58:32.518 (whisper) › stderr usage: /Users/li/zice/hack/everyone-can-use-english/enjoy/.vite/build/lib/whisper/main [options] file0.wav file1.wav ...

options: -h, --help [default] show this help message and exit -t N, --threads N [4 ] number of threads to use during computation -p N, --processors N [1 ] number of processors to use during computation -ot N, --offset-t N [0 ] time offset in milliseconds -on N, --offset-n N [0 ] segment index offset -d N, --duration N [0 ] duration of audio to process in milliseconds -mc N, --max-context N [-1 ] maximum number of text context tokens to store -ml N, --max-len N [0 ] maximum segment length in characters -sow, --split-on-word [false ] split on word rather than on token -bo N, --best-of N [5 ] number of best candidates to keep -bs N, --beam-size N [5 ] beam size for beam search -wt N, --word-thold N [0.01 ] word timestamp probability threshold -et N, --entropy-thold N [2.40 ] entropy threshold for decoder fail -lpt N, --logprob-thold N [-1.00 ] log probability threshold for decoder fail -debug, --debug-mode [false ] enable debug mode (eg. dump log_mel) -tr, --translate [false ] translate from source language to english -di, --diarize [false ] stereo audio diarization -tdrz, --tinydiarize [false ] enable tinydiarize (requires a tdrz model) -nf, --no-fallback [false ] do not use temperature fallback while decoding -otxt, --output-txt [false ] output result in a text file -ovtt, --output-vtt [false ] output result in a vtt file -osrt, --output-srt [false ] output result in a srt file -olrc, --output-lrc [false ] output result in a lrc file -owts, --output-words [false ] output script for generating karaoke video -fp, --font-path [/System/Library/Fonts/Supplemental/Courier New Bold.ttf] path to a monospace font for karaoke video -ocsv, --output-csv [false ] output result in a CSV file -oj, --output-json [false ] output result in a JSON file -ojf, --output-json-full [false ] include more information in the JSON file -of FNAME, --output-file FNAME [ ] output file path (without file extension) -ps, --print-special [false ] print special tokens -pc, --print-colors [false ] print colors -pp, --print-progress [false ] print progress -nt, --no-timestamps [false ] do not print timestamps -l LANG, --language LANG [en ] spoken language ('auto' for auto-detect) -dl, --detect-language [false ] exit after automatically detecting language --prompt PROMPT [ ] initial prompt -m FNAME, --model FNAME [models/ggml-base.en.bin] model path -f FNAME, --file FNAME [ ] input WAV file path -oved D, --ov-e-device DNAME [CPU ] the OpenVINO device used for encode inference -ls, --log-score [false ] log best decoder scores of tokens -ng, --no-gpu [false ] disable GPU

08:58:32.518 (whisper) › stderr usage: /Users/li/zice/hack/everyone-can-use-english/enjoy/.vite/build/lib/whisper/main [options] file0.wav file1.wav ...

options: -h, --help [default] show this help message and exit -t N, --threads N [4 ] number of threads to use during computation -p N, --processors N [1 ] number of processors to use during computation -ot N, --offset-t N [0 ] time offset in milliseconds -on N, --offset-n N [0 ] segment index offset -d N, --duration N [0 ] duration of audio to process in milliseconds -mc N, --max-context N [-1 ] maximum number of text context tokens to store -ml N, --max-len N [0 ] maximum segment length in characters -sow, --split-on-word [false ] split on word rather than on token -bo N, --best-of N [5 ] number of best candidates to keep -bs N, --beam-size N [5 ] beam size for beam search -wt N, --word-thold N [0.01 ] word timestamp probability threshold -et N, --entropy-thold N [2.40 ] entropy threshold for decoder fail -lpt N, --logprob-thold N [-1.00 ] log probability threshold for decoder fail -debug, --debug-mode [false ] enable debug mode (eg. dump log_mel) -tr, --translate [false ] translate from source language to english -di, --diarize [false ] stereo audio diarization -tdrz, --tinydiarize [false ] enable tinydiarize (requires a tdrz model) -nf, --no-fallback [false ] do not use temperature fallback while decoding -otxt, --output-txt [false ] output result in a text file -ovtt, --output-vtt [false ] output result in a vtt file -osrt, --output-srt [false ] output result in a srt file -olrc, --output-lrc [false ] output result in a lrc file -owts, --output-words [false ] output script for generating karaoke video -fp, --font-path [/System/Library/Fonts/Supplemental/Courier New Bold.ttf] path to a monospace font for karaoke video -ocsv, --output-csv [false ] output result in a CSV file -oj, --output-json [false ] output result in a JSON file -ojf, --output-json-full [false ] include more information in the JSON file -of FNAME, --output-file FNAME [ ] output file path (without file extension) -ps, --print-special [false ] print special tokens -pc, --print-colors [false ] print colors -pp, --print-progress [false ] print progress -nt, --no-timestamps [false ] do not print timestamps -l LANG, --language LANG [en ] spoken language ('auto' for auto-detect) -dl, --detect-language [false ] exit after automatically detecting language --prompt PROMPT [ ] initial prompt -m FNAME, --model FNAME [models/ggml-base.en.bin] model path -f FNAME, --file FNAME [ ] input WAV file path -oved D, --ov-e-device DNAME [CPU ] the OpenVINO device used for encode inference -ls, --log-score [false ] log best decoder scores of tokens -ng, --no-gpu [false ] disable GPU

Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='SequelizeMeta'; Executing (default): PRAGMA INDEX_LIST(SequelizeMeta) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_SequelizeMeta_1) Executing (default): SELECT name FROM SequelizeMeta AS SequelizeMeta ORDER BY SequelizeMeta.name ASC; Executing (default): PRAGMA foreign_keys = false; Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='conversations'; Executing (default): PRAGMA INDEX_LIST(conversations) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_conversations_1) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='messages'; Executing (default): PRAGMA INDEX_LIST(messages) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_messages_1) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='speeches'; Executing (default): PRAGMA INDEX_LIST(speeches) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_speeches_1) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='audios'; Executing (default): PRAGMA INDEX_LIST(audios) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_audios_1) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_audios_2) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='cache_objects'; Executing (default): PRAGMA INDEX_LIST(cache_objects) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_cache_objects_1) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='pronunciation_assessments'; Executing (default): PRAGMA INDEX_LIST(pronunciation_assessments) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_pronunciation_assessments_1) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='recordings'; Executing (default): PRAGMA INDEX_LIST(recordings) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_recordings_1) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='transcriptions'; Executing (default): PRAGMA INDEX_LIST(transcriptions) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_transcriptions_1) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='videos'; Executing (default): PRAGMA INDEX_LIST(videos) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_videos_1) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_videos_2) Executing (default): SELECT name FROM sqlite_master WHERE type='table' AND name='SequelizeMeta'; Executing (default): PRAGMA INDEX_LIST(SequelizeMeta) Executing (default): PRAGMA INDEX_INFO(sqlite_autoindex_SequelizeMeta_1) Executing (default): SELECT 1+1 AS result Executing (default): VACUUM Executing (default): SELECT id, target_id AS targetId, target_type AS targetType, target_md5 AS targetMd5, state, engine, model, result, synced_at AS syncedAt, created_at AS createdAt, updated_at AS updatedAt FROM transcriptions AS Transcription WHERE Transcription.state = 'processing'; Executing (default): SELECT Audio.id, Audio.source, Audio.md5, Audio.name, Audio.description, Audio.metadata, Audio.cover_url AS coverUrl, Audio.recordings_count AS recordingsCount, Audio.recordings_duration AS recordingsDuration, Audio.synced_at AS syncedAt, Audio.uploaded_at AS uploadedAt, Audio.created_at AS createdAt, Audio.updated_at AS updatedAt, transcription.id AS transcription.id, transcription.target_id AS transcription.targetId, transcription.target_type AS transcription.targetType, transcription.target_md5 AS transcription.targetMd5, transcription.state AS transcription.state, transcription.engine AS transcription.engine, transcription.model AS transcription.model, transcription.result AS transcription.result, transcription.synced_at AS transcription.syncedAt, transcription.created_at AS transcription.createdAt, transcription.updated_at AS transcription.updatedAt FROM audios AS Audio LEFT OUTER JOIN transcriptions AS transcription ON Audio.id = transcription.target_id AND (transcription.target_type = 'Audio' AND transcription.target_type = 'Audio') ORDER BY updatedAt DESC LIMIT 10; Executing (default): SELECT Video.id, Video.source, Video.md5, Video.name, Video.description, Video.metadata, Video.cover_url AS coverUrl, Video.recordings_count AS recordingsCount, Video.recordings_duration AS recordingsDuration, Video.synced_at AS syncedAt, Video.uploaded_at AS uploadedAt, Video.created_at AS createdAt, Video.updated_at AS updatedAt, transcription.id AS transcription.id, transcription.target_id AS transcription.targetId, transcription.target_type AS transcription.targetType, transcription.target_md5 AS transcription.targetMd5, transcription.state AS transcription.state, transcription.engine AS transcription.engine, transcription.model AS transcription.model, transcription.result AS transcription.result, transcription.synced_at AS transcription.syncedAt, transcription.created_at AS transcription.createdAt, transcription.updated_at AS transcription.updatedAt FROM videos AS Video LEFT OUTER JOIN transcriptions AS transcription ON Video.id = transcription.target_id AND (transcription.target_type = 'Video' AND transcription.target_type = 'Video') ORDER BY updatedAt DESC LIMIT 10; Executing (default): SELECT id, key, value, ttl, created_at AS createdAt, updated_at AS updatedAt FROM cache_objects AS CacheObject WHERE CacheObject.key = 'audible-books' LIMIT 1; Executing (default): SELECT id, key, value, ttl, created_at AS createdAt, updated_at AS updatedAt FROM cache_objects AS CacheObject WHERE CacheObject.key = 'ted-talks' LIMIT 1; Executing (default): SELECT id, key, value, ttl, created_at AS createdAt, updated_at AS updatedAt FROM cache_objects AS CacheObject WHERE CacheObject.key = 'ted-ideas' LIMIT 1; Executing (default): DELETE FROM cache_objects WHERE id = '2a18301f-2dfd-47b1-924e-942284458868' Executing (default): DELETE FROM cache_objects WHERE id = '0b1eed4d-8594-409c-944d-f36052ccaade' Executing (default): DELETE FROM cache_objects WHERE id = '54932a9f-00c7-41bd-992c-0975d1f291e9' 08:58:33.296 (providers/audible-provider) › Scraping https://www.audible.com/adblbestsellers?searchCategory=&page=1&pageSize=20 08:58:33.299 (providers/ted-provider) › started scraping https://ted.com/talks 08:58:33.301 (providers/ted-provider) › started scraping https://ideas.ted.com 08:58:34.486 (providers/ted-provider) › finished scraping https://ideas.ted.com Executing (default): SELECT id, key, value, ttl, created_at AS createdAt, updated_at AS updatedAt FROM cache_objects AS CacheObject WHERE CacheObject.key = 'ted-ideas' LIMIT 1; Executing (default): INSERT INTO cache_objects (id,key,value,ttl,created_at,updated_at) VALUES ($1,$2,$3,$4,$5,$6); 08:58:34.571 (providers/ted-provider) › finished scraping https://ted.com/talks Executing (default): SELECT id, key, value, ttl, created_at AS createdAt, updated_at AS updatedAt FROM cache_objects AS CacheObject WHERE CacheObject.key = 'ted-talks' LIMIT 1; Executing (default): INSERT INTO cache_objects (id,key,value,ttl,created_at,updated_at) VALUES ($1,$2,$3,$4,$5,$6); Executing (default): SELECT id, key, value, ttl, created_at AS createdAt, updated_at AS updatedAt FROM cache_objects AS CacheObject WHERE CacheObject.key = 'audible-books' LIMIT 1; Executing (default): INSERT INTO cache_objects (id,key,value,ttl,created_at,updated_at) VALUES ($1,$2,$3,$4,$5,$6); Executing (default): SELECT id, source, md5, name, description, metadata, cover_url AS coverUrl, recordings_count AS recordingsCount, recordings_duration AS recordingsDuration, synced_at AS syncedAt, uploaded_at AS uploadedAt, created_at AS createdAt, updated_at AS updatedAt FROM audios AS Audio WHERE Audio.id = '8350884b-aa4a-527a-b85b-76109f8deffb'; Executing (default): SELECT Recording.id, Recording.target_id AS targetId, Recording.target_type AS targetType, Recording.md5, Recording.filename, Recording.reference_id AS referenceId, Recording.reference_text AS referenceText, Recording.duration, Recording.synced_at AS syncedAt, Recording.uploaded_at AS uploadedAt, Recording.created_at AS createdAt, Recording.updated_at AS updatedAt, pronunciationAssessment.id AS pronunciationAssessment.id, pronunciationAssessment.target_id AS pronunciationAssessment.targetId, pronunciationAssessment.target_type AS pronunciationAssessment.targetType, pronunciationAssessment.reference_text AS pronunciationAssessment.referenceText, pronunciationAssessment.accuracy_score AS pronunciationAssessment.accuracyScore, pronunciationAssessment.completeness_score AS pronunciationAssessment.completenessScore, pronunciationAssessment.fluency_score AS pronunciationAssessment.fluencyScore, pronunciationAssessment.prosody_score AS pronunciationAssessment.prosodyScore, pronunciationAssessment.pronunciation_score AS pronunciationAssessment.pronunciationScore, pronunciationAssessment.grammar_score AS pronunciationAssessment.grammarScore, pronunciationAssessment.vocabulary_score AS pronunciationAssessment.vocabularyScore, pronunciationAssessment.topic_score AS pronunciationAssessment.topicScore, pronunciationAssessment.result AS pronunciationAssessment.result, pronunciationAssessment.synced_at AS pronunciationAssessment.syncedAt, pronunciationAssessment.created_at AS pronunciationAssessment.createdAt, pronunciationAssessment.updated_at AS pronunciationAssessment.updatedAt FROM recordings AS Recording LEFT OUTER JOIN pronunciation_assessments AS pronunciationAssessment ON Recording.id = pronunciationAssessment.target_id WHERE Recording.target_id = '8350884b-aa4a-527a-b85b-76109f8deffb' AND Recording.target_type = 'Audio' AND Recording.reference_id = 0 ORDER BY createdAt DESC LIMIT 0, 10; Executing (default): SELECT target_id AS targetId, target_type AS targetType, reference_id AS referenceId, reference_text AS referenceText, COUNT(reference_id) AS count, SUM(duration) AS duration FROM recordings AS Recording WHERE Recording.target_id = '8350884b-aa4a-527a-b85b-76109f8deffb' AND Recording.target_type = 'Audio' GROUP BY referenceId ORDER BY referenceId ASC; Executing (default): SELECT id, source, md5, name, description, metadata, cover_url AS coverUrl, recordings_count AS recordingsCount, recordings_duration AS recordingsDuration, synced_at AS syncedAt, uploaded_at AS uploadedAt, created_at AS createdAt, updated_at AS updatedAt FROM audios AS Audio WHERE Audio.id = '8350884b-aa4a-527a-b85b-76109f8deffb'; Executing (21e79ebc-afd8-46a2-b33a-e68526722628): BEGIN DEFERRED TRANSACTION; Executing (21e79ebc-afd8-46a2-b33a-e68526722628): SELECT id, target_id AS targetId, target_type AS targetType, target_md5 AS targetMd5, state, engine, model, result, synced_at AS syncedAt, created_at AS createdAt, updated_at AS updatedAt FROM transcriptions AS Transcription WHERE Transcription.target_id = '8350884b-aa4a-527a-b85b-76109f8deffb' AND Transcription.target_type = 'Audio' LIMIT 1; Executing (21e79ebc-afd8-46a2-b33a-e68526722628): COMMIT;`

an-lee commented 9 months ago

是从 github 拉下来的最新版。录音权限应该是正常的。 我下载编译好的版本,Mac 总是提示“ enjoy” is damaged and can’t be opened. You should move it to the Trash.”

你试一下自己编译。

yarn make:enjoy

编译完成后,在 enjoy/out/ 文件夹下面找到编译好的文件打开试试看

zhuligs commented 9 months ago

多谢导演。 我自己编译的版本,可以打开,录音也没有问题。

不知道为什么 yarn start:enjoy 打开之后就不能录音。